diff options
author | olim <bobq4582@gmail.com> | 2024-05-02 21:57:06 +0100 |
---|---|---|
committer | olim <bobq4582@gmail.com> | 2024-07-01 14:26:13 +0100 |
commit | 599117db34159eb04cc0ae2eb91b7dc67d9bbd88 (patch) | |
tree | bdcbc9073dbef130a68fdd38562f14cc863c61d3 /src | |
parent | b69fb532750981808b3632aa84851de0ed539b1a (diff) | |
download | Skyblocker-599117db34159eb04cc0ae2eb91b7dc67d9bbd88.tar.gz Skyblocker-599117db34159eb04cc0ae2eb91b7dc67d9bbd88.tar.bz2 Skyblocker-599117db34159eb04cc0ae2eb91b7dc67d9bbd88.zip |
make it so all block updates are recived
this fixes swiftness and mastery solver
Diffstat (limited to 'src')
7 files changed, 49 insertions, 19 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java b/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java index 454d3fb2..cd0fb0ea 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java @@ -50,9 +50,6 @@ public abstract class ClientPlayNetworkHandlerMixin { BeaconHighlighter.beaconPositions.add(packet.getPos()); } } - if (Utils.getLocation() == Location.CRIMSON_ISLE) { - DojoManager.onBlockUpdate(packet); - } } @Inject(method = "method_37472", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;removeEntity(ILnet/minecraft/entity/Entity$RemovalReason;)V")) diff --git a/src/main/java/de/hysky/skyblocker/mixins/ClientWorldMixin.java b/src/main/java/de/hysky/skyblocker/mixins/ClientWorldMixin.java new file mode 100644 index 00000000..ff0b1ae6 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/mixins/ClientWorldMixin.java @@ -0,0 +1,24 @@ +package de.hysky.skyblocker.mixins; + + +import de.hysky.skyblocker.skyblock.crimson.dojo.DojoManager; +import de.hysky.skyblocker.utils.Location; +import de.hysky.skyblocker.utils.Utils; +import net.minecraft.block.BlockState; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.util.math.BlockPos; +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(ClientWorld.class) +public class ClientWorldMixin { + + @Inject(method = "handleBlockUpdate", at = @At("RETURN")) + private void skyblocker$handleBlockUpdate(BlockPos pos, BlockState state, int flags, CallbackInfo ci) { + if (Utils.getLocation() == Location.CRIMSON_ISLE) { + DojoManager.onBlockUpdate(pos.toImmutable(), state); + } + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java index b24d3d49..2d6b98f8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java @@ -9,6 +9,8 @@ import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; import net.fabricmc.fabric.api.event.player.AttackEntityCallback; import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.client.session.telemetry.WorldLoadedEvent; import net.minecraft.client.world.ClientWorld; @@ -21,6 +23,7 @@ import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.hit.EntityHitResult; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import java.util.Arrays; @@ -139,15 +142,16 @@ public class DojoManager { /** * when a block is updated check the current challenge and send the packet to correct helper - * @param packet block update packet + * @param pos the location of the updated block + * @param state the state of the new block */ - public static void onBlockUpdate(BlockUpdateS2CPacket packet) { + public static void onBlockUpdate(BlockPos pos, BlockState state) { if (Utils.getLocation() != Location.CRIMSON_ISLE || !inArena) { return; } switch (currentChallenge) { - case SWIFTNESS -> SwiftnessTestHelper.onBlockUpdate(packet); - case MASTERY -> MasteryTestHelper.onBlockUpdate(packet); + case SWIFTNESS -> SwiftnessTestHelper.onBlockUpdate(pos, state); + case MASTERY -> MasteryTestHelper.onBlockUpdate(pos, state); } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/ForceTestHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/ForceTestHelper.java index 1f29f634..d737146a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/ForceTestHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/ForceTestHelper.java @@ -4,6 +4,7 @@ import de.hysky.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.entity.Entity; import net.minecraft.entity.mob.ZombieEntity; +import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.math.Vec3d; @@ -58,13 +59,13 @@ public class ForceTestHelper { for (Map.Entry<ZombieEntity, Long> zombie : zombies.entrySet()) { float secondsTime = Math.max((zombie.getValue() - currentTime) / 1000f, 0); - Text text; + MutableText text = Text.literal(FORMATTER.format(secondsTime)); if (secondsTime > 1) { - text = Text.literal(FORMATTER.format(secondsTime)).formatted(Formatting.GREEN); + text = text.formatted(Formatting.GREEN); } else if (secondsTime > 0) { - text = Text.literal(FORMATTER.format(secondsTime)).formatted(Formatting.YELLOW); + text = text.formatted(Formatting.YELLOW); } else { - text = Text.literal("Soon").formatted(Formatting.RED); //todo translate + text = text.formatted(Formatting.RED); } Vec3d lablePos = zombie.getKey().getEyePos(); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/MasteryTestHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/MasteryTestHelper.java index 76aa5209..8071a4af 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/MasteryTestHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/MasteryTestHelper.java @@ -2,7 +2,9 @@ package de.hysky.skyblocker.skyblock.crimson.dojo; import de.hysky.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; +import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; +import net.minecraft.client.MinecraftClient; import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; import net.minecraft.text.Text; import net.minecraft.util.math.BlockPos; @@ -13,6 +15,7 @@ import java.util.*; public class MasteryTestHelper { + private static final float[] LIGHT_GRAY = {192 / 255f, 192 / 255f, 192 / 255f}; private static final DecimalFormat FORMATTER = new DecimalFormat("0.00"); @@ -24,13 +27,12 @@ public class MasteryTestHelper { endTimes.clear(); } - public static void onBlockUpdate(BlockUpdateS2CPacket packet) { - BlockPos pos = packet.getPos(); - if (packet.getState().isOf(Blocks.LIME_WOOL)) { + public static void onBlockUpdate(BlockPos pos, BlockState state) { + if (state.isOf(Blocks.LIME_WOOL)) { blockOrder.add(pos); endTimes.put(pos, System.currentTimeMillis() + 6850); } - if (packet.getState().isAir()) { + if (state.isAir()) { blockOrder.remove(pos); endTimes.remove(pos); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/SwiftnessTestHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/SwiftnessTestHelper.java index 7243b45b..b7800d10 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/SwiftnessTestHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/SwiftnessTestHelper.java @@ -18,9 +18,9 @@ public class SwiftnessTestHelper { lastBlock = null; } - public static void onBlockUpdate(BlockUpdateS2CPacket packet) { - if (packet.getState().isOf(Blocks.LIME_WOOL)) { - lastBlock = packet.getPos(); + public static void onBlockUpdate(BlockPos pos, BlockState state) { + if (state.isOf(Blocks.LIME_WOOL)) { + lastBlock = pos.toImmutable(); } } @@ -28,6 +28,7 @@ public class SwiftnessTestHelper { if (lastBlock == null) { return; } - RenderHelper.renderOutline(context, new Box(lastBlock), new float[]{0f, 1f, 0f}, 3, true); + System.out.println("render" + lastBlock); + RenderHelper.renderFilled(context,lastBlock, new float[]{0f, 1f, 0f}, 0.5f, true); } } diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json index 9b96ba61..25c813cf 100644 --- a/src/main/resources/skyblocker.mixins.json +++ b/src/main/resources/skyblocker.mixins.json @@ -8,6 +8,7 @@ "BatEntityMixin", "ClientPlayerEntityMixin", "ClientPlayNetworkHandlerMixin", + "ClientWorldMixin", "CommandTreeS2CPacketMixin", "ComponentHolderMixin", "DataTrackerMixin", |