diff options
author | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2019-08-15 00:24:45 +0100 |
---|---|---|
committer | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2019-08-15 00:24:45 +0100 |
commit | 02cfb0ee9c1ed82c4b1cbbc5f53e133388ce2a54 (patch) | |
tree | 707500d25047ee7295cdc19417daa1a92a41b1f3 | |
parent | 110f15eeaf7ffa91339e21556b0c259ef40bee98 (diff) | |
download | GT5-Unofficial-02cfb0ee9c1ed82c4b1cbbc5f53e133388ce2a54.tar.gz GT5-Unofficial-02cfb0ee9c1ed82c4b1cbbc5f53e133388ce2a54.tar.bz2 GT5-Unofficial-02cfb0ee9c1ed82c4b1cbbc5f53e133388ce2a54.zip |
$ Overhauled Slow Building Ring. Fixes #506.
6 files changed, 112 insertions, 75 deletions
diff --git a/src/Java/gtPlusPlus/core/common/BasePlayer.java b/src/Java/gtPlusPlus/core/common/BasePlayer.java index 1b3f67b8d6..d60925102a 100644 --- a/src/Java/gtPlusPlus/core/common/BasePlayer.java +++ b/src/Java/gtPlusPlus/core/common/BasePlayer.java @@ -133,23 +133,25 @@ public class BasePlayer extends ClientPlayerBase /* * Begin ToggleSneak Changes - ToggleSprint */ + SneakManager aSneak = SneakManager.get(this.player); final boolean isSprintDisabled = false; - final boolean canDoubleTap = SneakManager.optionDoubleTap; + final boolean canDoubleTap = aSneak.optionDoubleTap; + // Detect when ToggleSprint was disabled in the in-game options menu - if(SneakManager.wasSprintDisabled) + if(aSneak.wasSprintDisabled) { this.player.setSprinting(false); - this.customMovementInput.UpdateSprint(false, false); - SneakManager.wasSprintDisabled = false; + this.customMovementInput.UpdateSprint(false, false, aSneak); + aSneak.wasSprintDisabled = false; } // Default Sprint routine converted to PlayerAPI, use if ToggleSprint is disabled - TODO - Disable sprinting as a whole if(isSprintDisabled) { //Utils.LOG_INFO("Sprint pressed"); - if(SneakManager.optionDoubleTap && this.player.onGround && !isMovingForward && (this.player.movementInput.moveForward >= minSpeed) && !this.player.isSprinting() && enoughHunger && !this.player.isUsingItem() && !this.player.isPotionActive(Potion.blindness)) + if(aSneak.optionDoubleTap && this.player.onGround && !isMovingForward && (this.player.movementInput.moveForward >= minSpeed) && !this.player.isSprinting() && enoughHunger && !this.player.isUsingItem() && !this.player.isPotionActive(Potion.blindness)) { if((this.playerAPI.getSprintToggleTimerField() <= 0) && !this.settings.keyBindSprint.getIsKeyPressed()) { @@ -157,26 +159,26 @@ public class BasePlayer extends ClientPlayerBase } else { - if (SneakManager.Sprinting()){ + if (aSneak.Sprinting()){ this.player.setSprinting(true); - this.customMovementInput.UpdateSprint(true, false); + this.customMovementInput.UpdateSprint(true, false, aSneak); } else { this.player.setSprinting(false); - this.customMovementInput.UpdateSprint(false, false); + this.customMovementInput.UpdateSprint(false, false, aSneak); } } } if(!this.player.isSprinting() && (this.player.movementInput.moveForward >= minSpeed) && enoughHunger && !this.player.isUsingItem() && !this.player.isPotionActive(Potion.blindness) && this.settings.keyBindSprint.getIsKeyPressed()) { - if (SneakManager.Sprinting()){ + if (aSneak.Sprinting()){ this.player.setSprinting(true); - this.customMovementInput.UpdateSprint(true, false); + this.customMovementInput.UpdateSprint(true, false, aSneak); } else { this.player.setSprinting(false); - this.customMovementInput.UpdateSprint(false, false); + this.customMovementInput.UpdateSprint(false, false, aSneak); } } } @@ -194,7 +196,7 @@ public class BasePlayer extends ClientPlayerBase { if((canDoubleTap && !this.player.isSprinting()) || !canDoubleTap) { - if (SneakManager.Sprinting()){ + if (aSneak.Sprinting()){ this.player.setSprinting(state); } else { this.player.setSprinting(false); @@ -210,9 +212,9 @@ public class BasePlayer extends ClientPlayerBase } else { - if (SneakManager.Sprinting()){ + if (aSneak.Sprinting()){ this.player.setSprinting(true); - this.customMovementInput.UpdateSprint(true, true); + this.customMovementInput.UpdateSprint(true, true, aSneak); this.playerAPI.setSprintToggleTimerField(0); } } @@ -228,7 +230,7 @@ public class BasePlayer extends ClientPlayerBase // Undo toggle if we resumed vanilla operation due to Hold&Release, DoubleTap, Fly, Ride if ((this.customMovementInput.sprintHeldAndReleased == true) || isSprintDisabled || this.customMovementInput.sprintDoubleTapped || this.player.capabilities.isFlying || this.player.isRiding()) { - this.customMovementInput.UpdateSprint(false, false); + this.customMovementInput.UpdateSprint(false, false, aSneak); } } diff --git a/src/Java/gtPlusPlus/core/common/compat/COMPAT_PlayerAPI.java b/src/Java/gtPlusPlus/core/common/compat/COMPAT_PlayerAPI.java index 06467503d8..12b3a94083 100644 --- a/src/Java/gtPlusPlus/core/common/compat/COMPAT_PlayerAPI.java +++ b/src/Java/gtPlusPlus/core/common/compat/COMPAT_PlayerAPI.java @@ -23,7 +23,7 @@ public class COMPAT_PlayerAPI { public static class clientProxy{ public static void initPre(){ - Utils.registerEvent(SneakManager.instance); + //Utils.registerEvent(SneakManager.instance); } public static void Init(){ diff --git a/src/Java/gtPlusPlus/core/handler/events/CustomMovementHandler.java b/src/Java/gtPlusPlus/core/handler/events/CustomMovementHandler.java index f1587fa82a..b70e58d009 100644 --- a/src/Java/gtPlusPlus/core/handler/events/CustomMovementHandler.java +++ b/src/Java/gtPlusPlus/core/handler/events/CustomMovementHandler.java @@ -61,7 +61,7 @@ public class CustomMovementHandler { // // Check to see if Enabled - Added 6/17/14 to provide option to disable Sneak Toggle - final boolean isSneaking = SneakManager.Sneaking(); + final boolean isSneaking = SneakManager.get(thisPlayer).Sneaking(); //Utils.LOG_INFO("Can sneak: "+isSneaking); //Utils.LOG_INFO("Can sprint: "+SneakManager.Sprinting()); if (isSneaking) @@ -107,7 +107,7 @@ public class CustomMovementHandler { options.sneak = settings.keyBindSneak.getIsKeyPressed(); } - if(options.sneak || SneakManager.Sneaking()) + if(options.sneak || SneakManager.get(thisPlayer).Sneaking()) { options.moveStrafe = (float)(options.moveStrafe * 0.3D); options.moveForward = (float)(options.moveForward * 0.3D); @@ -121,8 +121,8 @@ public class CustomMovementHandler { final boolean enoughHunger = (thisPlayer.getFoodStats().getFoodLevel() > 6.0F) || thisPlayer.capabilities.isFlying; final boolean canSprint = !options.sneak && !thisPlayer.isRiding() && !thisPlayer.capabilities.isFlying && enoughHunger; - this.isDisabled = !SneakManager.Sprinting(); - this.canDoubleTap = SneakManager.optionDoubleTap; + this.isDisabled = !SneakManager.get(thisPlayer).Sprinting(); + this.canDoubleTap = SneakManager.get(thisPlayer).optionDoubleTap; // Key Pressed if((canSprint || this.isDisabled) && settings.keyBindSprint.getIsKeyPressed() && !this.handledSprintPress) @@ -149,8 +149,8 @@ public class CustomMovementHandler { } - public void UpdateSprint(final boolean newValue, final boolean doubleTapped){ - if (!SneakManager.Sprinting()){ + public void UpdateSprint(final boolean newValue, final boolean doubleTapped, SneakManager aSneak){ + if (!aSneak.Sprinting()){ this.sprint = false; this.sprintDoubleTapped = doubleTapped; } diff --git a/src/Java/gtPlusPlus/core/handler/events/SneakManager.java b/src/Java/gtPlusPlus/core/handler/events/SneakManager.java index e9c8c72934..2b067be477 100644 --- a/src/Java/gtPlusPlus/core/handler/events/SneakManager.java +++ b/src/Java/gtPlusPlus/core/handler/events/SneakManager.java @@ -1,47 +1,76 @@ package gtPlusPlus.core.handler.events; -import net.minecraft.client.Minecraft; +import java.util.concurrent.ConcurrentHashMap; import gtPlusPlus.api.objects.Logger; +import net.minecraft.entity.player.EntityPlayer; public class SneakManager { //We make this a singleton for clientside data storage. - public static SneakManager instance = new SneakManager(); - protected static final Minecraft mc = Minecraft.getMinecraft(); - public static boolean canSprint = true; - public static boolean isSneaking = true; - public static boolean optionDoubleTap = true; - public static boolean wasSprintDisabled = false; + + public static ConcurrentHashMap<String, SneakManager> mPlayerCache = new ConcurrentHashMap<String, SneakManager>(); + + private static void addPlayer(EntityPlayer aPlayer) { + String aKey = getKey(aPlayer); + if (!mPlayerCache.containsKey(aKey)) { + mPlayerCache.put(aKey, new SneakManager(aPlayer)); + } + } + + public static SneakManager get(EntityPlayer aPlayer) { + + String aKey = getKey(aPlayer); + if (!mPlayerCache.containsKey(aKey)) { + addPlayer(aPlayer); + } + return mPlayerCache.get(aKey); + } + + private static String getKey(EntityPlayer aPlayer) { + return ""+aPlayer.getGameProfile().getId().toString(); + } + + + public SneakManager instance; + public EntityPlayer owner; + public boolean canSprint = true; + public boolean isSneaking = true; + public boolean optionDoubleTap = true; + public boolean wasSprintDisabled = false; private static State Sprinting = State.ON; private static State Crouching = State.OFF; + + public SneakManager(EntityPlayer aPlayer) { + owner = aPlayer; + } - public static boolean Sneaking(){ + public boolean Sneaking(){ return Crouching.getState(); } - public static boolean Sprinting(){ + public boolean Sprinting(){ return Sprinting.getState(); } - public static State getSneakingState(){ + public State getSneakingState(){ return Crouching; } - public static State getSprintingDisabledState(){ + public State getSprintingDisabledState(){ return Sprinting; } - public static void toggleSneaking(){ + public void toggleSneaking(){ toggleState(Crouching); } - public static void toggleSprinting(){ + public void toggleSprinting(){ toggleState(Sprinting); } - private static State toggleState(final State state){ + private State toggleState(final State state){ Logger.INFO("State Toggle"); if (state == State.ON) { return State.OFF; @@ -49,19 +78,19 @@ public class SneakManager { return State.ON; } - public static State setCrouchingStateON(){ + public State setCrouchingStateON(){ return Crouching = State.ON; } - public static State setCrouchingStateOFF(){ + public State setCrouchingStateOFF(){ return Crouching = State.OFF; } - public static State setSprintingStateON(){ + public State setSprintingStateON(){ return Sprinting = State.ON; } - public static State setSprintingStateOFF(){ + public State setSprintingStateOFF(){ return Sprinting = State.OFF; } diff --git a/src/Java/gtPlusPlus/core/item/general/ItemSlowBuildingRing.java b/src/Java/gtPlusPlus/core/item/general/ItemSlowBuildingRing.java index 7134df4a44..09c23d3551 100644 --- a/src/Java/gtPlusPlus/core/item/general/ItemSlowBuildingRing.java +++ b/src/Java/gtPlusPlus/core/item/general/ItemSlowBuildingRing.java @@ -42,23 +42,11 @@ public class ItemSlowBuildingRing extends Item implements IBauble{ if (worldObj.isRemote) { return; } - if (player instanceof EntityPlayer){ - for (final ItemStack is : ((EntityPlayer) player).inventory.mainInventory) { - if (is == itemStack) { - continue; - } - if (is != null) { - - - } - } - } super.onUpdate(itemStack, worldObj, player, p_77663_4_, p_77663_5_); } @Override public String getItemStackDisplayName(final ItemStack p_77653_1_) { - return (EnumChatFormatting.YELLOW+"Slow Building Ring"+EnumChatFormatting.GRAY); } @@ -68,6 +56,7 @@ public class ItemSlowBuildingRing extends Item implements IBauble{ return false; } + @SuppressWarnings("unchecked") @Override public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) { list.add(""); @@ -100,8 +89,18 @@ public class ItemSlowBuildingRing extends Item implements IBauble{ @Override //TODO public void onUnequipped(final ItemStack arg0, final EntityLivingBase arg1) { - SneakManager.setSprintingStateON(); - SneakManager.setCrouchingStateOFF(); + try { + EntityPlayer aPlayer; + if (arg1 instanceof EntityPlayer) { + aPlayer = (EntityPlayer) arg1; + SneakManager s = SneakManager.get(aPlayer); + s.setSprintingStateON(); + s.setCrouchingStateOFF(); + } + } + catch (Throwable t) { + t.printStackTrace(); + } } @Override //TODO @@ -110,20 +109,31 @@ public class ItemSlowBuildingRing extends Item implements IBauble{ } private static void doEffect(final EntityLivingBase arg1){ - if (arg1.worldObj.isRemote){ - if (!arg1.isSneaking()){ - arg1.setSneaking(true); - Minecraft.getMinecraft().thePlayer.setSneaking(true); - SneakManager.setSprintingStateOFF(); - SneakManager.setCrouchingStateON(); + try { + // Get World + World aWorld = arg1.worldObj; + if (arg1.worldObj.isRemote){ + return; } - else if (arg1.isSneaking()){ - arg1.setSprinting(false); - Minecraft.getMinecraft().thePlayer.setSprinting(true); - SneakManager.setSprintingStateOFF(); - SneakManager.setCrouchingStateON(); + if (aWorld != null) { + EntityPlayer aPlayer; + if (arg1 instanceof EntityPlayer) { + aPlayer = (EntityPlayer) arg1; + SneakManager s = SneakManager.get(aPlayer); + if (!aPlayer.isSneaking()){ + aPlayer.setSneaking(true); + } + if (aPlayer.isSprinting()) { + aPlayer.setSprinting(false); + } + s.setSprintingStateOFF(); + s.setCrouchingStateON(); + } } } + catch (Throwable t) { + t.printStackTrace(); + } } } diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java index b70fca0847..36435af0f3 100644 --- a/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java +++ b/src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java @@ -30,24 +30,20 @@ public class ClassTransformer_Railcraft_InvTools { private final ClassWriter writer; - public static ItemStack depleteItem(ItemStack stack) { + public static ItemStack depleteItem(ItemStack stack) { if (stack == null) { return GT_Values.NI; - } - else { + } else { if (stack.stackSize <= 1) { ItemStack container = stack.getItem().getContainerItem(stack); if (container != null) { return container; + } else { + return GT_Values.NI; } - else { - return GT_Values.NI; - } - - } - else { + } else { ItemUtils.depleteStack(stack); - return stack; + return stack; } } } |