Posted November 8, 201410 yr This is a rather simple question. How would I send an update to all clients tracking (or clients 'associated' with) a TileEntity? I know that with entities I can use public static void sendToAllTracking(SimpleNetworkWrapper wrapper, Entity entity, IMessage message) { if(entity.worldObj instanceof WorldServer) { ((WorldServer)entity.worldObj).getEntityTracker().func_151247_a(entity, wrapper.getPacketFrom(message)); } } However, browsing through Vanilla code for TileEntities all I've found that would work is this: public static void sendToAllTracking(SimpleNetworkWrapper wrapper, TileEntity tileEntity, IMessage message) { if(entity.worldObj instanceof WorldServer) { ((WorldServer)entity.worldObj).getPlayerManager().getOrCreateChunkWatcher(tileEntity.xCoord, tileEntity.zCoord, false).sendToAllPlayersWatchingChunk(wrapper.getPacketFrom(message)); } } However, those methods are private (and PlayerInstance is package private anyway), an reflection shouldn't be used for something as trivial as this. Of course, I could just use SimpleNetworkWrapper#sendToAllAround(IMessage,TargetPoint) with a radius of 15 or 16 (and that's what I've been doing so far), but I would like to know if there is a 'proper' way to do this? BEFORE ASKING FOR HELP READ THE EAQ! I'll help if I can. Apologies if I do something obviously stupid. If you don't know basic Java yet, go and follow these tutorials.
November 9, 201410 yr Author What should this request contain? Would it just be changing the visibility of those methods, or would it have to be something more complex? I have some spare time right now, I can go give it a try. BEFORE ASKING FOR HELP READ THE EAQ! I'll help if I can. Apologies if I do something obviously stupid. If you don't know basic Java yet, go and follow these tutorials.
November 9, 201410 yr Author Collections.unmodifiableList or ImmutableList.copyOf? BEFORE ASKING FOR HELP READ THE EAQ! I'll help if I can. Apologies if I do something obviously stupid. If you don't know basic Java yet, go and follow these tutorials.
November 9, 201410 yr Author Alright. BEFORE ASKING FOR HELP READ THE EAQ! I'll help if I can. Apologies if I do something obviously stupid. If you don't know basic Java yet, go and follow these tutorials.
November 9, 201410 yr Author How does this look? public List<net.minecraft.entity.player.EntityPlayer> playersWatchingChunk(int x, int y) { PlayerInstance pi = getOrCreateChunkWatcher(x, y, false); return pi != null ? java.util.Collections.unmodifiableList(pi.playersWatchingChunk) : java.util.Collections.emptyList(); } public void sendPacketToWatching(int x, int y, Packet packet) { PlayerInstance pi = getOrCreateChunkWatcher(x, y, false); if(pi != null) { pi.sendToAllPlayersWatchingChunk(packet); } } BEFORE ASKING FOR HELP READ THE EAQ! I'll help if I can. Apologies if I do something obviously stupid. If you don't know basic Java yet, go and follow these tutorials.
November 9, 201410 yr Author Alright, done. BEFORE ASKING FOR HELP READ THE EAQ! I'll help if I can. Apologies if I do something obviously stupid. If you don't know basic Java yet, go and follow these tutorials.
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.