Posted February 10, 201312 yr I has succesfully write my mod in ssp with forge. But i need tick handler to check if player equip my armor(in ssp it work fine, but smp). So i need example for "CommonTickHandler", who checks player armor... P.S. Sorry for bad english :'( P.S.S. I can post sources, if they need...
February 10, 201312 yr Author ITickingArmor doesn't include in forge 1.4.6. Any other solutions to check player amor? P.S. My ticker public class TickHandler implements ITickHandler { @Override public void tickStart(EnumSet<TickType> type, Object... tickData) { if(type.equals(EnumSet.of(TickType.SERVER))) { onServerTick(MinecraftServer.getServer()); } } public void onServerTick(MinecraftServer server) { System.out.println("Tick"); } @Override public void tickEnd(EnumSet<TickType> type, Object... tickData) { } @Override public EnumSet<TickType> ticks() { return EnumSet.of(TickType.WORLD, TickType.SERVER, TickType.PLAYER); } @Override public String getLabel() { return null; } }
February 10, 201312 yr Author Sorry about this, but can you fix my code? Forge tick system, much harder than modloader... public class TickHandler implements ITickHandler { @Override public void tickStart(EnumSet<TickType> type, Object... tickData) { if(type.equals(EnumSet.of(TickType.PLAYER))) { onServerTick(MinecraftServer.getServer()); } } public void onServerTick(MinecraftServer server) { if(*** Player armor check ***) { // do something } System.out.println("Tick"); } @Override public void tickEnd(EnumSet<TickType> type, Object... tickData) { } @Override public EnumSet<TickType> ticks() { return EnumSet.of(TickType.SERVER, TickType.PLAYER); } @Override public String getLabel() { return null; } }
February 11, 201312 yr I agree, this code is a lot harder than ModLoader, but it's good, cuz it helps us learn. Anyways, until they implement that armor method ben is talking about, I will fix your code for you. public class TickHandler implements ITickHandler { public EnumSet<TickType> ticks() { return EnumSet.of(TickType.SERVER); } public void tickStart(EnumSet<TickType> type, Object... tickData) { } public void tickEnd(EnumSet<TickType> type, Object... tickData) { onPlayerTickInGame(TickType.SERVER); } public void onRenderTick() { } public void onTickInGUI() { } public String getLabel() { return "YourMod server ticks"; } public void onPlayerTickInGame(TickType SERVER) { ArrayList par3 = (ArrayList)MinecraftServer.getServer().getConfigurationManager().playerEntityList; Iterator player = par3.iterator(); while(player.hasNext()) { EntityPlayer p = (EntityPlayer)player.next(); ItemStack boots = p.inventory.armorInventory[0]; ItemStack legs = p.inventory.armorInventory[1]; ItemStack chest = p.inventory.armorInventory[2]; ItemStack helm = p.inventory.armorInventory[3]; if(boots == null || legs == null || chest == null || helm == null) { return; } else if(boots.itemID == YourMod.YourBoots.itemID && legs.itemID == YourMod.YourLegs.itemID && chest.itemID == YourMod.YourChest.itemID && helm.itemID == YourMod.YourHelmet.itemID) { //do stuff, I suggest test this out, try p.fallDamage = 0F; and tell me if this works good luck! } } } } Make sure to change all the places it says YourMod to your mod! Good luck my friend! edit: I edited it so that it checks server ticks only, not client ticks, for performance's sake
February 11, 201312 yr You're right, lots easier than using the iterator. That's what I was looking for in my previous post.
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.