From ecbcf1a7f060f7d0d26f6adf28c0a770a18779a6 Mon Sep 17 00:00:00 2001 From: Alex Nijjar Date: Tue, 16 Jan 2024 00:25:42 -0600 Subject: [PATCH] Fix kicked for flying in rocket --- .../ServerGamePacketListenerImplMixin.java | 38 +++++++++++++++++++ .../main/resources/adastra-common.mixins.json | 1 + 2 files changed, 39 insertions(+) create mode 100644 common/src/main/java/earth/terrarium/adastra/mixins/common/ServerGamePacketListenerImplMixin.java diff --git a/common/src/main/java/earth/terrarium/adastra/mixins/common/ServerGamePacketListenerImplMixin.java b/common/src/main/java/earth/terrarium/adastra/mixins/common/ServerGamePacketListenerImplMixin.java new file mode 100644 index 000000000..2dcffaa16 --- /dev/null +++ b/common/src/main/java/earth/terrarium/adastra/mixins/common/ServerGamePacketListenerImplMixin.java @@ -0,0 +1,38 @@ +package earth.terrarium.adastra.mixins.common; + +import earth.terrarium.adastra.common.entities.vehicles.Vehicle; +import earth.terrarium.adastra.common.items.armor.JetSuitItem; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.network.ServerGamePacketListenerImpl; +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(ServerGamePacketListenerImpl.class) +public abstract class ServerGamePacketListenerImplMixin { + + @Shadow + private int aboveGroundTickCount; + @Shadow + private int aboveGroundVehicleTickCount; + + @Shadow + public ServerPlayer player; + + @Inject(method = "tick", at = @At("HEAD")) + public void adastra$tick(CallbackInfo ci) { + if (player.tickCount % 50 == 0) { + // Prevent the player from being kicked for flying a jet suit. + if (!player.onGround() && JetSuitItem.hasFullSet(player)) { + aboveGroundTickCount = 0; + } + + // Prevent the player from being kicked for flying in a rocket. + if (player.getVehicle() instanceof Vehicle) { + aboveGroundVehicleTickCount = 0; + } + } + } +} \ No newline at end of file diff --git a/common/src/main/resources/adastra-common.mixins.json b/common/src/main/resources/adastra-common.mixins.json index 6177c385c..0fd380402 100644 --- a/common/src/main/resources/adastra-common.mixins.json +++ b/common/src/main/resources/adastra-common.mixins.json @@ -9,6 +9,7 @@ "common.LivingEntityMixin", "common.MobMixin", "common.PlayerMixin", + "common.ServerGamePacketListenerImplMixin", "common.ServerLevelMixin", "common.SkullBlockEntityInvoker", "common.SlotAccessor",