aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/handler
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core/handler')
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/CustomMovementHandler.java12
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/SneakManager.java65
2 files changed, 53 insertions, 24 deletions
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;
}