Hello there friends First time posting so forgive my probable posting of this topic in the wrong area.
I have an issue concerning changing an entities xyz coordinates to values which are associated with an unloaded chunk. For a player, the player in question will teleport but the chunk they are placed in will not load until the game is restarted. For an entity teleporting into an unloaded chunk everything works fine if they are teleporting on the same tick as a player, but if the player unloads the chunk containing their original coordinates and then tries to load the chunk they should now exist in, the entities instead seem to elope into some irretrievable void from which they never return.
Being entirely unfamiliar with chunk loading I thought I'd ask you lovely people where I should start with an issue like this.
Here are the methods concerned for reference;
affectEntity() - Always called from server side
/**@param distance max distance capped at 1*/
@Override
public void affectEntity(Entity potionEntity, Entity throwingEntity, EntityLivingBase affectedEntity, int amplifier, double distance) {
if(this.getId() == EEMain.mating.getId()) {
if(affectedEntity instanceof EntityAnimal) {
((EntityAnimal)affectedEntity).setInLove((throwingEntity instanceof EntityPlayer? (EntityPlayer)throwingEntity:null));
}
if(affectedEntity instanceof EntityWolf) {
((EntityWolf)affectedEntity).setInLove((throwingEntity instanceof EntityPlayer? (EntityPlayer)throwingEntity:null));
}
if(affectedEntity instanceof EntityOcelot) {
((EntityOcelot)affectedEntity).setInLove((throwingEntity instanceof EntityPlayer? (EntityPlayer)throwingEntity:null));
}
}
if(this.getId() == EEMain.recall.getId()) {
if(throwingEntity instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer)throwingEntity;
if(player.getBedLocation() != null) {
affectedEntity.worldObj.markBlockForUpdate(new BlockPos(player.getBedLocation().getX(), player.getBedLocation().getY() ,player.getBedLocation().getZ()));
affectedEntity.setPosition(player.getBedLocation().getX(), player.getBedLocation().getY() ,player.getBedLocation().getZ());
if(affectedEntity instanceof EntityPlayer) {
EEMain.network.sendTo(new MessageMovePlayer(player.getBedLocation().getX(), player.getBedLocation().getY() ,player.getBedLocation().getZ()), ((EntityPlayerMP) player));
}
}
}
}
}
@Override
public IMessage onMessage(final MessageMovePlayer message, final MessageContext ctx) {
IThreadListener mainThread = Minecraft.getMinecraft();
mainThread.addScheduledTask(new Runnable() {
@Override
public void run() {
Minecraft.getMinecraft().thePlayer.setPosition(message.xPos, message.yPos, message.zPos);
}
});
return null;
}
Any help would be greatly appreciated <3
Edit: It's also entirely possible this has nothing to do with chunk loading in which case help is definitely appreciated