Skip to content

Commit

Permalink
Implement jumpClimbing + rmbClear
Browse files Browse the repository at this point in the history
  • Loading branch information
unilock committed Nov 8, 2023
1 parent bd0b8cc commit 7ed2d86
Show file tree
Hide file tree
Showing 12 changed files with 136 additions and 102 deletions.
8 changes: 0 additions & 8 deletions src/main/java/cc/unilock/legacyfixes/ClientProxy.java

This file was deleted.

27 changes: 0 additions & 27 deletions src/main/java/cc/unilock/legacyfixes/CommonProxy.java

This file was deleted.

20 changes: 0 additions & 20 deletions src/main/java/cc/unilock/legacyfixes/Config.java

This file was deleted.

19 changes: 19 additions & 0 deletions src/main/java/cc/unilock/legacyfixes/LegacyFixes.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package cc.unilock.legacyfixes;

import cc.unilock.legacyfixes.proxy.CommonProxy;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;

@Mod(modid = Tags.MODID, version = Tags.VERSION, name = Tags.MODNAME, acceptedMinecraftVersions = "[1.7.10]")
public class LegacyFixes {
//public static final Logger LOGGER = LogManager.getLogger(Tags.MODID);

@SidedProxy(clientSide = "cc.unilock.legacyfixes.proxy.ClientProxy", serverSide = "cc.unilock.legacyfixes.proxy.CommonProxy")
public static CommonProxy proxy;

@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
proxy.preInit(event);
}
}
21 changes: 21 additions & 0 deletions src/main/java/cc/unilock/legacyfixes/LegacyFixesConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package cc.unilock.legacyfixes;

import net.minecraftforge.common.config.Configuration;

import java.io.File;

public class LegacyFixesConfig {
public static boolean jumpClimbing = true;
public static boolean rmbClear = true;

public static void synchronizeConfiguration(File configFile) {
Configuration configuration = new Configuration(configFile);

jumpClimbing = configuration.getBoolean("jumpClimbing", Configuration.CATEGORY_GENERAL, jumpClimbing, "Allows climbing ladders by jumping");
rmbClear = configuration.getBoolean("rmbClear", Configuration.CATEGORY_GENERAL, rmbClear, "Allows clearing text fields by right-clicking");

if (configuration.hasChanged()) {
configuration.save();
}
}
}
45 changes: 0 additions & 45 deletions src/main/java/cc/unilock/legacyfixes/MyMod.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package cc.unilock.legacyfixes.mixin;

import net.minecraft.entity.EntityLivingBase;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

@Mixin(EntityLivingBase.class)
public interface EntityLivingBaseAccessor {
@Accessor
boolean getIsJumping();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package cc.unilock.legacyfixes.mixin;

import cc.unilock.legacyfixes.LegacyFixesConfig;
import net.minecraft.entity.EntityLivingBase;
import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

@Mixin(EntityLivingBase.class)
public class EntityLivingBaseMixin {
@Redirect(method = "Lnet/minecraft/entity/EntityLivingBase;moveEntityWithHeading(FF)V", at = @At(value = "FIELD", target = "Lnet/minecraft/entity/EntityLivingBase;isCollidedHorizontally:Z", opcode = Opcodes.GETFIELD, ordinal = 2))
private boolean isCollidedHorizontally(EntityLivingBase instance) {
return instance.isCollidedHorizontally || ((EntityLivingBaseAccessor) instance).getIsJumping() && LegacyFixesConfig.jumpClimbing;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package cc.unilock.legacyfixes.mixin.client;

import cc.unilock.legacyfixes.LegacyFixesConfig;
import net.minecraft.client.gui.GuiTextField;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(GuiTextField.class)
public abstract class GuiTextFieldMixin {
@Shadow
public int xPosition;
@Shadow
public int yPosition;
@Shadow
public int width;
@Shadow
public int height;
@Shadow
private boolean canLoseFocus;
@Shadow
private boolean isFocused;
@Shadow
private boolean isEnabled;
@Shadow
private boolean visible;

@Shadow
public abstract void setText(String text);

@Inject(method = "Lnet/minecraft/client/gui/GuiTextField;mouseClicked(III)V", at = @At(value = "HEAD"), cancellable = true)
private void mouseClicked(int mouseX, int mouseY, int button, CallbackInfo ci) {
if (!LegacyFixesConfig.rmbClear) return;
if (button == 1 && this.visible && this.isEnabled && (this.isFocused || this.canLoseFocus) && (mouseX >= this.xPosition && mouseX < this.xPosition + this.width && mouseY >= this.yPosition && mouseY < this.yPosition + this.height)) {
this.setText("");
ci.cancel();
}
}
}
10 changes: 10 additions & 0 deletions src/main/java/cc/unilock/legacyfixes/proxy/ClientProxy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package cc.unilock.legacyfixes.proxy;

import cpw.mods.fml.common.event.FMLPreInitializationEvent;

public class ClientProxy extends CommonProxy {
@Override
public void preInit(FMLPreInitializationEvent event) {
super.preInit(event);
}
}
11 changes: 11 additions & 0 deletions src/main/java/cc/unilock/legacyfixes/proxy/CommonProxy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package cc.unilock.legacyfixes.proxy;

import cc.unilock.legacyfixes.LegacyFixesConfig;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;

public class CommonProxy {
public void preInit(FMLPreInitializationEvent event) {
LegacyFixesConfig.synchronizeConfiguration(event.getSuggestedConfigurationFile());
//LegacyFixes.LOGGER.info("Initialized!");
}
}
9 changes: 7 additions & 2 deletions src/main/resources/mixins.legacyfixes.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@
"refmap": "mixins.legacyfixes.refmap.json",
"target": "@env(DEFAULT)",
"compatibilityLevel": "JAVA_8",
"mixins": [],
"client": [],
"mixins": [
"EntityLivingBaseAccessor",
"EntityLivingBaseMixin"
],
"client": [
"client.GuiTextFieldMixin"
],
"server": []
}

0 comments on commit 7ed2d86

Please sign in to comment.