fix: working boat event

This commit is contained in:
ftbsc 2023-02-19 20:29:04 +01:00
parent ac4a18a428
commit eb9e15e004
3 changed files with 11 additions and 10 deletions

View file

@ -6,7 +6,7 @@ import net.minecraftforge.eventbus.api.Event;
public class BoatEvent { public class BoatEvent {
@Cancelable @Cancelable
public class Control extends Event { public static class Control extends Event {
public Control() {} public Control() { super(); }
} }
} }

View file

@ -4,6 +4,7 @@ import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.DoubleArgumentType; import com.mojang.brigadier.arguments.DoubleArgumentType;
import ftbsc.bscv.ICommons; import ftbsc.bscv.ICommons;
import ftbsc.bscv.events.BoatEvent;
import ftbsc.bscv.modules.Module; import ftbsc.bscv.modules.Module;
import ftbsc.bscv.tools.Keyboard; import ftbsc.bscv.tools.Keyboard;
import net.minecraft.command.CommandSource; import net.minecraft.command.CommandSource;
@ -35,6 +36,13 @@ public class BoatFly extends Module implements ICommons {
); );
} }
@SubscribeEvent
public void onBoatControl(BoatEvent.Control event) {
if (MC.player != null && MC.player.getVehicle() != null) {
event.setCanceled(true);
}
}
@SubscribeEvent @SubscribeEvent
public void onTick(TickEvent.ClientTickEvent event) { public void onTick(TickEvent.ClientTickEvent event) {
// if (event.phase == Phase.END) return; // if (event.phase == Phase.END) return;

View file

@ -4,7 +4,6 @@ import net.minecraft.network.IPacket;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import org.objectweb.asm.Opcodes; import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.AbstractInsnNode;
import org.objectweb.asm.tree.ClassNode; import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.InsnNode; import org.objectweb.asm.tree.InsnNode;
import org.objectweb.asm.tree.JumpInsnNode; import org.objectweb.asm.tree.JumpInsnNode;
@ -14,10 +13,8 @@ import org.objectweb.asm.tree.MethodNode;
import org.objectweb.asm.tree.VarInsnNode; import org.objectweb.asm.tree.VarInsnNode;
import ftbsc.bscv.events.BoatEvent; import ftbsc.bscv.events.BoatEvent;
import ftbsc.bscv.events.PacketEvent;
import ftbsc.lll.IInjector; import ftbsc.lll.IInjector;
import ftbsc.lll.tools.InsnSequence; import ftbsc.lll.tools.InsnSequence;
import ftbsc.lll.tools.PatternMatcher;
public class BoatPatch { public class BoatPatch {
@ -25,10 +22,6 @@ public class BoatPatch {
public static boolean boatControl(IPacket<?> pkt) { public static boolean boatControl(IPacket<?> pkt) {
return MinecraftForge.EVENT_BUS.post(new BoatEvent.Control()); return MinecraftForge.EVENT_BUS.post(new BoatEvent.Control());
} }
public static boolean pktOut(IPacket<?> pkt) {
return MinecraftForge.EVENT_BUS.post(new PacketEvent(pkt, true));
}
} }
public static class BoatControlOverride implements IInjector, Opcodes { public static class BoatControlOverride implements IInjector, Opcodes {
@ -47,7 +40,7 @@ public class BoatPatch {
INVOKESTATIC, INVOKESTATIC,
"ftbsc/bscv/patches/BoatPatch$BoatHook", "ftbsc/bscv/patches/BoatPatch$BoatHook",
"boatControl", "boatControl",
"(Lnet/minecraft/network/IPacket;)Z" "()Z"
)); ));
is.add(new JumpInsnNode(IFEQ, skip)); is.add(new JumpInsnNode(IFEQ, skip));
is.add(new InsnNode(RETURN)); is.add(new InsnNode(RETURN));