aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/ftbsc/bscv/patches/LiquidPushPatch.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/ftbsc/bscv/patches/LiquidPushPatch.java')
-rw-r--r--src/main/java/ftbsc/bscv/patches/LiquidPushPatch.java31
1 files changed, 16 insertions, 15 deletions
diff --git a/src/main/java/ftbsc/bscv/patches/LiquidPushPatch.java b/src/main/java/ftbsc/bscv/patches/LiquidPushPatch.java
index a800878..e883533 100644
--- a/src/main/java/ftbsc/bscv/patches/LiquidPushPatch.java
+++ b/src/main/java/ftbsc/bscv/patches/LiquidPushPatch.java
@@ -5,7 +5,7 @@ import ftbsc.lll.processor.annotations.Find;
import ftbsc.lll.processor.annotations.Injector;
import ftbsc.lll.processor.annotations.Patch;
import ftbsc.lll.processor.annotations.Target;
-import ftbsc.lll.proxies.MethodProxy;
+import ftbsc.lll.proxies.impl.MethodProxy;
import ftbsc.lll.tools.InsnSequence;
import ftbsc.lll.tools.nodes.MethodProxyInsnNode;
import net.minecraft.entity.player.PlayerEntity;
@@ -21,27 +21,28 @@ public class LiquidPushPatch implements ICommons {
@Cancelable
public static class PlayerLiquidPushEvent extends Event {}
- public static boolean shouldCancelLiquidCollisions(PlayerEntity player) {
- if (player.equals(MC.player)) {
- return MinecraftForge.EVENT_BUS.post(new PlayerLiquidPushEvent());
- }
- return false;
- }
-
- @Patch(value = PlayerEntity.class, reason = "add hook to cancel liquid collisions")
+ @Patch(PlayerEntity.class)
public abstract static class LiquidCollisionsOverride implements Opcodes {
- @Find(parent = LiquidPushPatch.class)
- abstract MethodProxy shouldCancelLiquidCollisions();
+ @Find(LiquidCollisionsOverride.class)
+ MethodProxy shouldCancelLiquidCollisions;
+
+ @Target(of = "shouldCancelLiquidCollisions")
+ public static boolean shouldCancelLiquidCollisions(PlayerEntity player) {
+ if (player.equals(MC.player)) {
+ return MinecraftForge.EVENT_BUS.post(new PlayerLiquidPushEvent());
+ }
+ return false;
+ }
- @Target
+ @Target(of = "injectLiquidCollisionHook")
abstract boolean isPushedByFluid();
- @Injector
- public void inject(ClassNode clazz, MethodNode main) {
+ @Injector(reason = "add hook to cancel liquid collisions")
+ public void injectLiquidCollisionHook(ClassNode clazz, MethodNode main) {
LabelNode skip = new LabelNode();
InsnSequence is = new InsnSequence();
is.add(new VarInsnNode(ALOAD, 0));
- is.add(new MethodProxyInsnNode(INVOKESTATIC, shouldCancelLiquidCollisions()));
+ is.add(new MethodProxyInsnNode(INVOKESTATIC, shouldCancelLiquidCollisions));
is.add(new JumpInsnNode(IFEQ, skip));
is.add(new InsnNode(ICONST_0));
is.add(new InsnNode(IRETURN));