diff options
author | olim <bobq4582@gmail.com> | 2024-04-30 15:26:58 +0100 |
---|---|---|
committer | olim <bobq4582@gmail.com> | 2024-07-01 14:26:13 +0100 |
commit | b2dff8d0f292b819138a2bb118f318063568e3fe (patch) | |
tree | 9ff1855a1a2fd7cdafa0f5f176e7e79a59cc584c /src/main/java/de/hysky/skyblocker/skyblock/crimson | |
parent | e39a80fa3e4f0e81137e1c9825decb52ae4344ff (diff) | |
download | Skyblocker-b2dff8d0f292b819138a2bb118f318063568e3fe.tar.gz Skyblocker-b2dff8d0f292b819138a2bb118f318063568e3fe.tar.bz2 Skyblocker-b2dff8d0f292b819138a2bb118f318063568e3fe.zip |
add masteryTest helper
create helper for the mastery challenge
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/crimson')
3 files changed, 73 insertions, 7 deletions
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 8e8482ea..b3796841 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 @@ -8,6 +8,7 @@ import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; +import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; import net.minecraft.text.Text; import net.minecraft.world.updater.WorldUpdater; @@ -23,6 +24,7 @@ public class DojoManager { protected enum DojoChallenges { NONE("none"), + MASTERY("Mastery"), DISCIPLINE("Discipline"), SWIFTNESS("Swiftness"), TENACITY("Tenacity"); @@ -55,11 +57,11 @@ public class DojoManager { inAreana = false; currentChallenge = DojoChallenges.NONE; SwiftnessTestHelper.reset(); + MasteryTestHelper.reset(); } private static void onMessage(Text text, Boolean overlay) { - if (Utils.getLocation() != Location.CRIMSON_ISLE || overlay) { return; } @@ -85,6 +87,13 @@ public class DojoManager { } } + public static void onBlockUpdate(BlockUpdateS2CPacket packet) { + switch (currentChallenge) { + case SWIFTNESS -> SwiftnessTestHelper.onBlockUpdate(packet); + case MASTERY -> MasteryTestHelper.onBlockUpdate(packet); + } + } + private static void update() { if (Utils.getLocation() != Location.CRIMSON_ISLE || !inAreana) { return; @@ -98,6 +107,7 @@ public class DojoManager { switch (currentChallenge) { case SWIFTNESS -> SwiftnessTestHelper.render(context); case TENACITY -> TenacityTestHelper.render(context); + case MASTERY -> MasteryTestHelper.render(context); } } 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 new file mode 100644 index 00000000..85fd5e1c --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/MasteryTestHelper.java @@ -0,0 +1,58 @@ +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.Blocks; +import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; +import net.minecraft.text.Text; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; + +import java.text.DecimalFormat; +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"); + + private static List<BlockPos> blockOrder = new ArrayList<>(); + private static Map<BlockPos, Long> endTimes =new HashMap<>(); + + protected static void reset() { + blockOrder = new ArrayList<>(); + endTimes =new HashMap<>(); + } + + + public static void onBlockUpdate(BlockUpdateS2CPacket packet) { + BlockPos pos = packet.getPos(); + if (packet.getState().isOf(Blocks.LIME_WOOL)) { + blockOrder.add(pos); + endTimes.put(pos,System.currentTimeMillis()+6850); + } + if (packet.getState().isAir()) { + blockOrder.remove(pos); + } + } + + protected static void render(WorldRenderContext context) { + //render connecting lines + if (!blockOrder.isEmpty()) { + RenderHelper.renderLineFromCursor(context, blockOrder.getFirst().toCenterPos(),LIGHT_GRAY,1f, 2); + } + if (blockOrder.size() >= 2) { + RenderHelper.renderLinesFromPoints(context, new Vec3d[]{blockOrder.get(0).toCenterPos(), blockOrder.get(1).toCenterPos()}, new float[]{0f, 1f, 0f}, 1, 2, false); + } + + //render times + long currentTime = System.currentTimeMillis(); + for (BlockPos pos : blockOrder) { + long blockEndTime = endTimes.get(pos); + float secondsTime = Math.max((blockEndTime - currentTime) / 1000f, 0); + RenderHelper.renderText(context, Text.literal(FORMATTER.format(secondsTime)), pos.add(0, 1, 0).toCenterPos(), 3, true); + + } + + } +} 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 d2a9ae57..5d5f3bab 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 @@ -22,16 +22,14 @@ public class SwiftnessTestHelper { //-189 99 -580 //-223 99 -614 - public static void blockUpdate(BlockUpdateS2CPacket packet) { - if (DojoManager.currentChallenge == DojoManager.DojoChallenges.SWIFTNESS) { - if (packet.getState().isOf(Blocks.LIME_WOOL)) { - lastBlock = packet.getPos(); - } + public static void onBlockUpdate(BlockUpdateS2CPacket packet) { + if (packet.getState().isOf(Blocks.LIME_WOOL)) { + lastBlock = packet.getPos(); } } protected static void render(WorldRenderContext context) { - if (DojoManager.currentChallenge != DojoManager.DojoChallenges.SWIFTNESS || lastBlock == null) { + if (lastBlock == null) { return; } RenderHelper.renderOutline(context,new Box(lastBlock),new float[]{0f,1f,0f},3,true); |