diff --git a/src/main/java/emt/EMT.java b/src/main/java/emt/EMT.java index 56107392..479532c8 100644 --- a/src/main/java/emt/EMT.java +++ b/src/main/java/emt/EMT.java @@ -7,6 +7,7 @@ import org.apache.logging.log4j.Logger; import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; @@ -65,12 +66,18 @@ public class EMT { @Mod.Instance("EMT") public static EMT instance; + public static boolean isBootsActive = false; + public static final String BOOTS = "thaumicboots"; + public boolean isSimulating() { return !FMLCommonHandler.instance().getEffectiveSide().isClient(); } @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { + if (Loader.isModLoaded(BOOTS)) { + isBootsActive = true; + } EMTConfigHandler.init(event.getSuggestedConfigurationFile()); FMLCommonHandler.instance().bus().register(new EMTEventHandler()); if (FMLCommonHandler.instance().getSide().isClient()) { diff --git a/src/main/java/emt/item/armor/boots/ItemElectricBootsTraveller.java b/src/main/java/emt/item/armor/boots/ItemElectricBootsTraveller.java index 5cb14f9f..c1a18ae0 100644 --- a/src/main/java/emt/item/armor/boots/ItemElectricBootsTraveller.java +++ b/src/main/java/emt/item/armor/boots/ItemElectricBootsTraveller.java @@ -18,6 +18,7 @@ import net.minecraftforge.event.entity.living.LivingEvent; import net.minecraftforge.event.entity.living.LivingFallEvent; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.Optional.Interface; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.relauncher.Side; @@ -132,7 +133,7 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { player.stepHeight = 1.0F; } float speedMod = (float) getSpeedModifier(itemStack); - if (player.onGround) { + if (player.onGround || player.isOnLadder() || player.capabilities.isFlying) { float bonus = speedBonus; if (player.isInWater()) { bonus /= 4.0F; @@ -142,7 +143,11 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { bonus /= 2.0F; } bonus *= speedMod; - player.moveFlying(player.moveStrafing, player.moveForward, bonus); + if (EMT.isBootsActive) { + applyOmniState(player, bonus, itemStack); + } else { + player.moveFlying(0.0F, player.moveForward, bonus); + } } else if (Hover.getHover(player.getEntityId())) { // Base ItemBootsTraveller jumpBonus equals to jumpBonus of Electric Boots, // so any other boots factor can be calculated via proportion method @@ -159,6 +164,15 @@ public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { } } + @Optional.Method(modid = "thaumicboots") + public void applyOmniState(EntityPlayer player, float bonus, ItemStack itemStack) { + if (player.moveStrafing != 0.0 && itemStack.stackTagCompound.getBoolean("omni")) { + player.moveFlying(player.moveStrafing, 0.0F, bonus); + } else if (player.moveForward != 0.0) { + player.moveFlying(0.0F, player.moveForward, bonus); + } + } + @SubscribeEvent public void onPlayerJump(LivingEvent.LivingJumpEvent event) { if (event.entityLiving instanceof EntityPlayer) {