Posted September 26, 201410 yr I have made a mob which you can give an item and then the model will change a bit. Everytime I log on to my world, that change is not shown on screen. I create a simple println() to show if the item is stored in it and it does. How can I make the World or Server render the change when starting the world. Coding, Testing, Smiling, Publishing!
October 5, 201410 yr Author You will have to synchronize the data via Packets. Try to do it, but how do I check if an item is added to an itemstack or removed. Let me be more specific. When you right click, a gui will open. There is an slot that will need an item. When this item is placed in there, there will be something added to the model. This works fine, but when on a server, the added thing to the model does not show an other client. Ho do I check this? Coding, Testing, Smiling, Publishing!
October 6, 201410 yr Author You need to check every tick if the value changed (in onUpdate of your Entity for example). If it did indeed change (you will need a 2nd field to track if the value has changed) you send a packet to all players tracking your entity (see EntityTracker#func_151247_a) which tells the client about the new value. So, i'm sending stuf through packages with the Message stuff. (followed your thread on that) But how do I tell the other clients that something has changed? Coding, Testing, Smiling, Publishing!
October 6, 201410 yr Author Show your code, if you followed what I posted it should update all players. That is a bit of a problem. I have no clue on how to do that thing. Should I just check it and then send a package to the server telling the item is changed so the model can be changed on all clients. Would that work, gonna test it right away Coding, Testing, Smiling, Publishing!
October 6, 201410 yr Author Nonono... the Server would send packets to all clients. I mean when I checked if the itemstack and then use network.sendToServer() to change the itemstack again but then use by server so the server will change the itemstack. Maybe I could also modify the Slot class, the OnSlotChanged methode. So it will send a package to the server. Coding, Testing, Smiling, Publishing!
October 7, 201410 yr Author How can I use the EntityTracker? I'm now checking the change and it works. (checked by println()) What do I need to do when I call the sendToAll(Message)? Coding, Testing, Smiling, Publishing!
October 7, 201410 yr Author So it does not change a thing. for the way I does it. if(message.code == 10){ WorldServer worldserver = (WorldServer)ctx.getServerHandler().playerEntity.worldObj; EntityTracker track = worldserver.getEntityTracker(); Entity entity = ctx.getServerHandler().playerEntity.worldObj.getEntityByID(message.entityID); EntityHireable hire = (EntityHireable)entity; hire.Backpack = -1; track.func_151247_a(entity, Core.network.getPacketFrom(message)); } I this is text from the console: [19:43:28] [Client thread/ERROR] [FML]: Detected ongoing potential memory leak. 100 packets have leaked. Top offenders [19:43:28] [Client thread/ERROR] [FML]: comp101.channel : 100 Coding, Testing, Smiling, Publishing!
October 8, 201410 yr Author So I did this in the Entity class in the OnUpdate methode. But It still does not work and it still says it had a potentionel memory leak Coding, Testing, Smiling, Publishing!
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.