aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2019-08-15 00:24:45 +0100
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2019-08-15 00:24:45 +0100
commit02cfb0ee9c1ed82c4b1cbbc5f53e133388ce2a54 (patch)
tree707500d25047ee7295cdc19417daa1a92a41b1f3
parent110f15eeaf7ffa91339e21556b0c259ef40bee98 (diff)
downloadGT5-Unofficial-02cfb0ee9c1ed82c4b1cbbc5f53e133388ce2a54.tar.gz
GT5-Unofficial-02cfb0ee9c1ed82c4b1cbbc5f53e133388ce2a54.tar.bz2
GT5-Unofficial-02cfb0ee9c1ed82c4b1cbbc5f53e133388ce2a54.zip
$ Overhauled Slow Building Ring. Fixes #506.
-rw-r--r--src/Java/gtPlusPlus/core/common/BasePlayer.java32
-rw-r--r--src/Java/gtPlusPlus/core/common/compat/COMPAT_PlayerAPI.java2
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/CustomMovementHandler.java12
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/SneakManager.java65
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemSlowBuildingRing.java60
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/ClassTransformer_Railcraft_InvTools.java16
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;
}
}
}