Add fishing particle highlighter

Currently does not work when sneaking or when the bobber moves too much, since the position desyncs with the server
This commit is contained in:
nea
2023-05-07 12:22:36 +02:00
parent 229f724ef4
commit 942dd629ef
13 changed files with 238 additions and 6 deletions

View File

@@ -0,0 +1,23 @@
package moe.nea.notenoughupdates.mixins;
import moe.nea.notenoughupdates.events.ParticleSpawnEvent;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.network.packet.s2c.play.ParticleS2CPacket;
import net.minecraft.util.math.Vec3d;
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.CallbackInfo;
@Mixin(ClientPlayNetworkHandler.class)
public class MixinClientPacketHandler {
@Inject(method = "onParticle", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/NetworkThreadUtils;forceMainThread(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/listener/PacketListener;Lnet/minecraft/util/thread/ThreadExecutor;)V", shift = At.Shift.AFTER))
public void onParticleSpawn(ParticleS2CPacket packet, CallbackInfo ci) {
ParticleSpawnEvent.Companion.publish(new ParticleSpawnEvent(
packet.getParameters(),
new Vec3d(packet.getX(), packet.getY(), packet.getZ()),
new Vec3d(packet.getOffsetX(), packet.getOffsetY(), packet.getOffsetZ()),
packet.isLongDistance()
));
}
}

View File

@@ -0,0 +1,16 @@
package moe.nea.notenoughupdates.mixins.devenv;
import net.minecraft.scoreboard.Scoreboard;
import org.slf4j.Logger;
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.Redirect;
@Mixin(Scoreboard.class)
public class MixinScoreboard {
@Redirect(method = "addTeam", at=@At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;)V"))
public void onExistingteam(Logger instance, String s, Object o) {
// Ignore creations of existing teams
}
}