diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientConnectionAccessor.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientConnectionAccessor.java deleted file mode 100644 index bc030c5..0000000 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientConnectionAccessor.java +++ /dev/null @@ -1,12 +0,0 @@ -package land.chipmunk.chipmunkmod.mixin; - -import net.minecraft.network.ClientConnection; -import net.minecraft.network.listener.PacketListener; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(ClientConnection.class) -public interface ClientConnectionAccessor { - @Accessor("packetListener") - PacketListener packetListener (); -} diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientConnectionInvoker.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientConnectionInvoker.java deleted file mode 100644 index a9800cb..0000000 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientConnectionInvoker.java +++ /dev/null @@ -1,15 +0,0 @@ -package land.chipmunk.chipmunkmod.mixin; - -import net.minecraft.network.ClientConnection; -import net.minecraft.network.listener.PacketListener; -import net.minecraft.network.packet.Packet; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(ClientConnection.class) -public interface ClientConnectionInvoker { - @Invoker("handlePacket") - static void handlePacket (Packet packet, PacketListener listener) { - throw new AssertionError(); - } -} diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientConnectionMixin.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientConnectionMixin.java index 43bd234..2043b4b 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientConnectionMixin.java +++ b/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientConnectionMixin.java @@ -1,7 +1,6 @@ package land.chipmunk.chipmunkmod.mixin; import io.netty.channel.ChannelHandlerContext; -import io.netty.handler.codec.DecoderException; import land.chipmunk.chipmunkmod.listeners.Listener; import land.chipmunk.chipmunkmod.listeners.ListenerManager; import net.minecraft.client.MinecraftClient; @@ -12,7 +11,6 @@ import net.minecraft.network.packet.c2s.play.RequestCommandCompletionsC2SPacket; import net.minecraft.network.packet.s2c.play.ParticleS2CPacket; import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket; import net.minecraft.sound.SoundEvent; -import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -25,6 +23,8 @@ import java.util.regex.Pattern; @Mixin(net.minecraft.network.ClientConnection.class) public class ClientConnectionMixin { + @Unique + private static final double MAX_PARTICLES_PER_PACKET = 1000; @Unique private static final Pattern CUSTOM_PITCH_PATTERN = Pattern.compile(".*\\.pitch\\.(.*)"); @@ -45,9 +45,7 @@ public class ClientConnectionMixin { // please don't skid this.,. // mabe mabe mabe if (packet instanceof ParticleS2CPacket t_packet) { - final double max = 1000; - - if (t_packet.getCount() > max) { + if (t_packet.getCount() > MAX_PARTICLES_PER_PACKET) { ci.cancel(); } } else if (packet instanceof PlaySoundS2CPacket t_packet) { diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientPlayNetworkHandlerAccessor.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientPlayNetworkHandlerAccessor.java deleted file mode 100644 index 6ef7342..0000000 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientPlayNetworkHandlerAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -package land.chipmunk.chipmunkmod.mixin; - -import net.minecraft.client.network.PlayerListEntry; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.Map; -import java.util.Set; -import java.util.UUID; - -@Mixin(net.minecraft.client.network.ClientPlayNetworkHandler.class) -public interface ClientPlayNetworkHandlerAccessor { - @Accessor("playerListEntries") - Map playerListEntries(); - - @Accessor("listedPlayerListEntries") - Set listedPlayerListEntries(); -} diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientPlayerEntityMixin.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientPlayerEntityMixin.java index 9f406e0..d80e454 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/land/chipmunk/chipmunkmod/mixin/ClientPlayerEntityMixin.java @@ -1,38 +1,42 @@ package land.chipmunk.chipmunkmod.mixin; +import land.chipmunk.chipmunkmod.modules.CommandCore; +import net.minecraft.client.network.ClientPlayNetworkHandler; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.ChunkPos; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.entity.MovementType; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec2f; -import land.chipmunk.chipmunkmod.modules.CommandCore; @Mixin(ClientPlayerEntity.class) -public class ClientPlayerEntityMixin { - @Unique private static MinecraftClient CLIENT = MinecraftClient.getInstance(); +public abstract class ClientPlayerEntityMixin extends Entity { + @Shadow @Final public ClientPlayNetworkHandler networkHandler; - @Inject(at = @At("HEAD"), method = "move") - public void move (MovementType type, Vec3d relPos, CallbackInfo ci) { - if ((ClientPlayerEntity) (Object) this != CLIENT.player) return; - - final Vec3d position = ((ClientPlayerEntity) (Object) this).getPos().add(relPos); - - final ClientWorld world = CLIENT.getNetworkHandler().getWorld(); - - final BlockPos origin = CommandCore.INSTANCE.origin; - if (origin == null) { CommandCore.INSTANCE.move(position); return; } - final int distance = (int) Math.sqrt(new Vec2f(origin.getX() / 16, origin.getZ() / 16).distanceSquared(new Vec2f((int) position.getX() / 16, (int) position.getZ() / 16))); - if (distance > world.getSimulationDistance()) { - CommandCore.INSTANCE.clientPlayerEntityFilled = true; - CommandCore.INSTANCE.move(position); + public ClientPlayerEntityMixin(final EntityType type, final World world) { + super(type, world); + } + + @Inject(at = @At("TAIL"), method = "move") + public void move(CallbackInfo ci) { + final BlockPos origin = CommandCore.INSTANCE.origin; + if (origin == null) { + CommandCore.INSTANCE.move(this.getPos()); + return; + } + + final int distanceSquared = this.getChunkPos().getSquaredDistance(new ChunkPos(origin)); + final int distance = (int) Math.sqrt(distanceSquared); + + if (distance > networkHandler.getWorld().getSimulationDistance()) { + CommandCore.INSTANCE.clientPlayerEntityFilled = true; + CommandCore.INSTANCE.move(this.getPos()); + } } - } } diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/ElderGuardianAppearanceParticleMixin.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/ElderGuardianAppearanceParticleMixin.java index ac46a1f..5dfef9a 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/ElderGuardianAppearanceParticleMixin.java +++ b/src/main/java/land/chipmunk/chipmunkmod/mixin/ElderGuardianAppearanceParticleMixin.java @@ -2,8 +2,6 @@ package land.chipmunk.chipmunkmod.mixin; import net.minecraft.client.particle.ElderGuardianAppearanceParticle; import net.minecraft.client.particle.Particle; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particle.SimpleParticleType; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -11,10 +9,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ElderGuardianAppearanceParticle.Factory.class) public class ElderGuardianAppearanceParticleMixin { - @Inject(method = "createParticle(Lnet/minecraft/particle/SimpleParticleType;Lnet/minecraft/client/world/ClientWorld;DDDDDD)Lnet/minecraft/client/particle/Particle;", at = @At("HEAD")) - private void createParticle (SimpleParticleType simpleParticleType, ClientWorld clientWorld, double d, double e, double f, double g, double h, double i, CallbackInfoReturnable cir) { - if (cir.isCancelled() || !cir.isCancellable()) return; - - cir.cancel(); + @Inject( + method = "createParticle(Lnet/minecraft/particle/SimpleParticleType;Lnet/minecraft/client/world/ClientWorld;DDDDDD)Lnet/minecraft/client/particle/Particle;", + at = @At("HEAD"), + cancellable = true) + private void createParticle(final CallbackInfoReturnable cir) { + cir.setReturnValue(null); } } diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/IdentifierMixin.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/IdentifierMixin.java deleted file mode 100644 index e7b24eb..0000000 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/IdentifierMixin.java +++ /dev/null @@ -1,31 +0,0 @@ -package land.chipmunk.chipmunkmod.mixin; - -import net.minecraft.util.Identifier; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(Identifier.class) -public class IdentifierMixin { - @Inject(method = "isNamespaceCharacterValid", at = @At("HEAD"), cancellable = true) - private static void isNamespaceCharacterValid (char character, CallbackInfoReturnable cir) { - cir.setReturnValue(true); - - cir.cancel(); - } - - @Inject(method = "isNamespaceValid", at = @At("HEAD"), cancellable = true) - private static void isNamespaceValid (String namespace, CallbackInfoReturnable cir) { - cir.setReturnValue(true); - - cir.cancel(); - } - - @Inject(method = "validateNamespace", at = @At("HEAD"), cancellable = true) - private static void validateNamespace(String namespace, String path, CallbackInfoReturnable cir) { - cir.setReturnValue(namespace); - - cir.cancel(); - } -} diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/PlayerListEntryAccessor.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/PlayerListEntryAccessor.java deleted file mode 100644 index 39faf9a..0000000 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/PlayerListEntryAccessor.java +++ /dev/null @@ -1,16 +0,0 @@ -package land.chipmunk.chipmunkmod.mixin; - -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.world.GameMode; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(PlayerListEntry.class) -public interface PlayerListEntryAccessor { - @Accessor("gameMode") - void setGameMode (GameMode gameMode); - - @Accessor("latency") - void setLatency (int latency); -} diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/SoundSystemMixin.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/SoundSystemMixin.java index 6d1d208..79672f8 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/SoundSystemMixin.java +++ b/src/main/java/land/chipmunk/chipmunkmod/mixin/SoundSystemMixin.java @@ -12,6 +12,5 @@ public class SoundSystemMixin { @Inject(method = "getAdjustedPitch", at = @At("HEAD"), cancellable = true) private void getAdjustedPitch (SoundInstance sound, CallbackInfoReturnable cir) { cir.setReturnValue(sound.getPitch()); - cir.cancel(); } } diff --git a/src/main/java/land/chipmunk/chipmunkmod/mixin/StringHelperMixin.java b/src/main/java/land/chipmunk/chipmunkmod/mixin/StringHelperMixin.java index c3fb817..df42151 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/mixin/StringHelperMixin.java +++ b/src/main/java/land/chipmunk/chipmunkmod/mixin/StringHelperMixin.java @@ -11,18 +11,15 @@ public class StringHelperMixin { @Inject(method = "truncateChat", at = @At("HEAD"), cancellable = true) private static void truncateChat (String text, CallbackInfoReturnable cir) { cir.setReturnValue(text); - cir.cancel(); } @Inject(method = "stripTextFormat", at = @At("HEAD"), cancellable = true) private static void stripTextFormat(String text, CallbackInfoReturnable cir) { cir.setReturnValue(text); - cir.cancel(); } @Inject(method = "isValidChar", at = @At("HEAD"), cancellable = true) private static void isValidChar (char chr, CallbackInfoReturnable cir) { cir.setReturnValue(chr >= ' ' && chr != '\u007f'); - cir.cancel(); } } diff --git a/src/main/resources/chipmunkmod.mixins.json b/src/main/resources/chipmunkmod.mixins.json index 89df942..a61592b 100644 --- a/src/main/resources/chipmunkmod.mixins.json +++ b/src/main/resources/chipmunkmod.mixins.json @@ -8,16 +8,11 @@ "ChatScreenMixin", "ClientConnectionMixin", "ClientPlayerEntityMixin", - "ClientPlayNetworkHandlerAccessor", "ClientPlayNetworkHandlerMixin", "MinecraftClientAccessor", "StringHelperMixin", "ElderGuardianAppearanceParticleMixin", - "IdentifierMixin", "TextMixin", - "ClientConnectionInvoker", - "ClientConnectionAccessor", - "PlayerListEntryAccessor", "TextSerializerMixin", "CommandDispatcherMixin", "SoundSystemMixin",