aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorolim <bobq4582@gmail.com>2024-04-30 15:26:58 +0100
committerolim <bobq4582@gmail.com>2024-07-01 14:26:13 +0100
commitb2dff8d0f292b819138a2bb118f318063568e3fe (patch)
tree9ff1855a1a2fd7cdafa0f5f176e7e79a59cc584c /src/main/java/de
parente39a80fa3e4f0e81137e1c9825decb52ae4344ff (diff)
downloadSkyblocker-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')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/DojoManager.java12
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/MasteryTestHelper.java58
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/SwiftnessTestHelper.java10
4 files changed, 75 insertions, 8 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java b/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java
index feb5a1cb..b7d505f3 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java
@@ -5,6 +5,7 @@ import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
import com.llamalad7.mixinextras.sugar.Local;
import de.hysky.skyblocker.skyblock.CompactDamage;
import de.hysky.skyblocker.skyblock.FishingHelper;
+import de.hysky.skyblocker.skyblock.crimson.dojo.DojoManager;
import de.hysky.skyblocker.skyblock.crimson.dojo.SwiftnessTestHelper;
import de.hysky.skyblocker.skyblock.dungeon.DungeonScore;
import de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonManager;
@@ -51,7 +52,7 @@ public abstract class ClientPlayNetworkHandlerMixin {
}
}
if (Utils.getLocation() == Location.CRIMSON_ISLE) {
- SwiftnessTestHelper.blockUpdate(packet);
+ DojoManager.onBlockUpdate(packet);
}
}
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);