SeKtOR Posted February 10, 2013 Posted February 10, 2013 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... Quote
SeKtOR Posted February 10, 2013 Author Posted February 10, 2013 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; } } Quote
SeKtOR Posted February 10, 2013 Author Posted February 10, 2013 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; } } Quote
dee12452 Posted February 11, 2013 Posted February 11, 2013 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 Quote
dee12452 Posted February 11, 2013 Posted February 11, 2013 You're right, lots easier than using the iterator. That's what I was looking for in my previous post. Quote
Recommended Posts
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.