Jump to content

Recommended Posts

Posted

Hello, I'm trying to make my entity render in different ways based on a simple boolean value stored in its entity class. This boolean is initialized when the entity is created like so:

worldObj.spawnEntityInWorld(new MyEntity(worldObj, posX, posY, posZ, intPar5, booleanPar6));

and then the entities constructor is as so..

    public MyEntity(World par1World, double par2, double par4, double par6, int par8, boolean flag)
    {
        super(par1World);
        this.setSize(0.5F, 0.5F);
        this.yOffset = this.height / 2.0F;
        this.setPosition(par2, par4, par6);
        this.rotationYaw = (float)(Math.random() * 360.0D);
        this.var1 = par8;
        this.flag = flag;
        System.out.println(flag);
    }

 

However, when I try to access my flag variable from my renderer, it always returns the default value (false) even if true is used to construct the entity class.

public boolean getFlag() {
    	return flag;
    }

if (par1MyEntity.getFlag()) {
		//do stuff
}
	else {
		//do other stuff
}

 

The else section will always be run as getFlag() returns false regardless of the actual value, but as you can see above, it returns the value set by the constructor. This values is never edited from its default constructed value.

 

Could this be because the client can't access the data, does it need to be send via packets? or should entities automatically send their data?

Posted

Yes, since you spawn entities on server side, the client side entity is only default.

But since most data is only handled server side, it doesn't matter.

You'll need packets for client side to use some values.

Posted

Right, I've set up my packet for this. However, I cannot get the instance of the entity on the client side to change its variables. Here is my packet class:

public class MyEntityPacket extends MyModPacket {

int entityID,flag;

public MyEntityPacket(int entityID, int flag) {
	this.entityID = entityID;
	this.flag = flag;
}

public MyEntityPacket() {}

@Override
public void write(ByteArrayDataOutput out) {
	out.writeInt(entityID);
	out.writeInt(flag);
}

@Override
public void read(ByteArrayDataInput in) {
	entityID = in.readInt();
	flag = in.readInt();
}

@Override
public void execute(EntityPlayer player, Side side) {
	if (side.isClient()) {
		if (Minecraft.getMinecraft().theWorld.getEntityByID(entityID) instanceof MyEntity) {
		MyEntity e = (MyEntity) player.worldObj.getEntityByID(entityID);
		e.setFlag(flag == 1 ? true : false);
		} else {
			System.out.println("Something ****** up! - supposed my entity with id: " + entityID + " isn't");
		}
	}
}

}

 

I've converted my boolean to an integer for the process of sending the packet. That all works fine and dandy. My problem is that the method getEntityByID(entityID) always returns null instead of the entity. I'm using this to create the packet in the constructor of the entity (it is the final thing in the constructor so the entity should be fine).

PacketDispatcher.sendPacketToAllAround(par2, par4, par6, 250, this.dimension, new MyEntityPacket(this.entityId, flag ? 1 : 0).makePacket()); // 250 is view radius

Can anyone enlighten me? Do I need to use the UUID (persistent id) instead? If so, how would I get the entity from it?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I tried do download the essential mod to my mod pack but i didnt work. I paly on 1.21 and it should work. I use neoforge for my modding. The weird things is my friend somehow added the mod to his modpack and many others that I somehow can´t. Is there anything i can do? 
    • Thanks, I've now installed a slightly newer version and the server is at least starting up now.
    • i have the same issue. Found 1 Create mod class dependency(ies) in createdeco-1.3.3-1.19.2.jar, which are missing from the current create-1.19.2-0.5.1.i.jar Found 11 Create mod class dependency(ies) in createaddition-fabric+1.19.2-20230723a.jar, which are missing from the current create-1.19.2-0.5.1.i.jar Detailed walkthrough of mods which rely on missing Create mod classes: Mod: createaddition-fabric+1.19.2-20230723a.jar Missing classes of create: com/simibubi/create/compat/jei/category/sequencedAssembly/JeiSequencedAssemblySubCategory com/simibubi/create/compat/recipeViewerCommon/SequencedAssemblySubCategoryType com/simibubi/create/compat/rei/CreateREI com/simibubi/create/compat/rei/EmptyBackground com/simibubi/create/compat/rei/ItemIcon com/simibubi/create/compat/rei/category/CreateRecipeCategory com/simibubi/create/compat/rei/category/WidgetUtil com/simibubi/create/compat/rei/category/animations/AnimatedBlazeBurner com/simibubi/create/compat/rei/category/animations/AnimatedKinetics com/simibubi/create/compat/rei/category/sequencedAssembly/ReiSequencedAssemblySubCategory com/simibubi/create/compat/rei/display/CreateDisplay Mod: createdeco-1.3.3-1.19.2.jar Missing classes of create: com/simibubi/create/content/kinetics/fan/SplashingRecipe
    • The crash points to moonlight lib - try other builds or make a test without this mod and the mods requiring it
    • Do you have shaders enabled? There is an issue with the mod simpleclouds - remove this mod or disable shaders, if enabled  
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.