aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/diana
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-11-13 18:28:15 -0500
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2023-11-17 10:27:40 -0500
commit4f04a35ae3300656a4ef92e0a62304d58aa582a2 (patch)
treede071ef76e47c49a2813e18d80f484b170fe1a63 /src/main/java/de/hysky/skyblocker/skyblock/diana
parente440bb72d80da655d99a35a618230036883b6e0b (diff)
downloadSkyblocker-4f04a35ae3300656a4ef92e0a62304d58aa582a2.tar.gz
Skyblocker-4f04a35ae3300656a4ef92e0a62304d58aa582a2.tar.bz2
Skyblocker-4f04a35ae3300656a4ef92e0a62304d58aa582a2.zip
Add Profile Aware Waypoint
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/diana')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/diana/MythologicalRitual.java213
1 files changed, 0 insertions, 213 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/diana/MythologicalRitual.java b/src/main/java/de/hysky/skyblocker/skyblock/diana/MythologicalRitual.java
deleted file mode 100644
index f36a8a24..00000000
--- a/src/main/java/de/hysky/skyblocker/skyblock/diana/MythologicalRitual.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package de.hysky.skyblocker.skyblock.diana;
-
-import com.mojang.brigadier.Command;
-import de.hysky.skyblocker.SkyblockerMod;
-import de.hysky.skyblocker.config.SkyblockerConfigManager;
-import de.hysky.skyblocker.utils.ItemUtils;
-import de.hysky.skyblocker.utils.Utils;
-import de.hysky.skyblocker.utils.render.RenderHelper;
-import de.hysky.skyblocker.utils.waypoint.Waypoint;
-import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
-import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents;
-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.AttackBlockCallback;
-import net.fabricmc.fabric.api.event.player.UseBlockCallback;
-import net.fabricmc.fabric.api.event.player.UseItemCallback;
-import net.fabricmc.fabric.api.util.TriState;
-import net.minecraft.block.Blocks;
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.command.argument.BlockPosArgumentType;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.item.ItemStack;
-import net.minecraft.network.packet.s2c.play.ParticleS2CPacket;
-import net.minecraft.particle.ParticleTypes;
-import net.minecraft.text.Text;
-import net.minecraft.util.ActionResult;
-import net.minecraft.util.DyeColor;
-import net.minecraft.util.Hand;
-import net.minecraft.util.TypedActionResult;
-import net.minecraft.util.hit.BlockHitResult;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.util.math.Direction;
-import net.minecraft.util.math.Vec3d;
-import net.minecraft.world.World;
-import org.apache.commons.math3.stat.regression.SimpleRegression;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.regex.Pattern;
-
-import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument;
-import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal;
-
-public class MythologicalRitual {
- private static final Pattern GRIFFIN_BURROW_DUG = Pattern.compile("(?<message>You dug out a Griffin Burrow!|You finished the Griffin burrow chain!) \\((?<index>\\d)/4\\)");
- private static final float[] ORANGE_COLOR_COMPONENTS = DyeColor.ORANGE.getColorComponents();
- private static long lastEchoTime;
- private static final Map<BlockPos, GriffinBurrow> griffinBurrows = new HashMap<>();
- @Nullable
- private static BlockPos lastDugBurrowPos;
- private static GriffinBurrow previousBurrow = new GriffinBurrow(BlockPos.ORIGIN);
-
- public static void init() {
- WorldRenderEvents.AFTER_TRANSLUCENT.register(MythologicalRitual::render);
- AttackBlockCallback.EVENT.register(MythologicalRitual::onAttackBlock);
- UseBlockCallback.EVENT.register(MythologicalRitual::onUseBlock);
- UseItemCallback.EVENT.register(MythologicalRitual::onUseItem);
- ClientReceiveMessageEvents.GAME.register(MythologicalRitual::onChatMessage);
- ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(literal(SkyblockerMod.NAMESPACE).then(literal("diana")
- .then(literal("clearGriffinBurrows").executes(context -> {
- griffinBurrows.clear();
- return Command.SINGLE_SUCCESS;
- }))
- .then(literal("clearGriffinBurrow")
- .then(argument("pos", BlockPosArgumentType.blockPos()).executes(context -> {
- griffinBurrows.remove(context.getArgument("pos", BlockPos.class));
- return Command.SINGLE_SUCCESS;
- }))
- )
- )));
-
- // Put a root burrow so echo detection works without a previous burrow
- previousBurrow.confirmed = TriState.DEFAULT;
- griffinBurrows.put(BlockPos.ORIGIN, previousBurrow);
- }
-
- public static void onParticle(ParticleS2CPacket packet) {
- if (isActive()) {
- if (ParticleTypes.CRIT.equals(packet.getParameters().getType()) || ParticleTypes.ENCHANT.equals(packet.getParameters().getType())) {
- BlockPos pos = BlockPos.ofFloored(packet.getX(), packet.getY(), packet.getZ()).down();
- if (MinecraftClient.getInstance().world == null || !MinecraftClient.getInstance().world.getBlockState(pos).isOf(Blocks.GRASS_BLOCK)) {
- return;
- }
- GriffinBurrow burrow = griffinBurrows.computeIfAbsent(pos, GriffinBurrow::new);
- if (ParticleTypes.CRIT.equals(packet.getParameters().getType())) burrow.critParticle++;
- if (ParticleTypes.ENCHANT.equals(packet.getParameters().getType())) burrow.enchantParticle++;
- if (burrow.critParticle >= 5 && burrow.enchantParticle >= 5 && burrow.confirmed == TriState.FALSE) {
- griffinBurrows.get(pos).init();
- }
- } else if (ParticleTypes.DUST.equals(packet.getParameters().getType())) {
- BlockPos pos = BlockPos.ofFloored(packet.getX(), packet.getY(), packet.getZ()).down(2);
- GriffinBurrow burrow = griffinBurrows.get(pos);
- if (burrow == null) {
- return;
- }
- burrow.regression.addData(packet.getX(), packet.getZ());
- double slope = burrow.regression.getSlope();
- if (Double.isNaN(slope)) {
- return;
- }
- Vec3d nextBurrowDirection = new Vec3d(100, 0, slope * 100).normalize().multiply(100);
- if (burrow.nextBurrowPlane == null) {
- burrow.nextBurrowPlane = new Vec3d[4];
- }
- burrow.nextBurrowPlane[0] = Vec3d.of(pos).add(nextBurrowDirection).subtract(0, 50, 0);
- burrow.nextBurrowPlane[1] = Vec3d.of(pos).subtract(nextBurrowDirection).subtract(0, 50, 0);
- burrow.nextBurrowPlane[2] = burrow.nextBurrowPlane[1].add(0, 100, 0);
- burrow.nextBurrowPlane[3] = burrow.nextBurrowPlane[0].add(0, 100, 0);
- } else if (ParticleTypes.DRIPPING_LAVA.equals(packet.getParameters().getType()) && packet.getCount() == 2) {
- if (System.currentTimeMillis() > lastEchoTime + 10_000) {
- return;
- }
- if (previousBurrow.echoBurrowDirection == null) {
- previousBurrow.echoBurrowDirection = new Vec3d[2];
- }
- previousBurrow.echoBurrowDirection[0] = previousBurrow.echoBurrowDirection[1];
- previousBurrow.echoBurrowDirection[1] = new Vec3d(packet.getX(), packet.getY(), packet.getZ());
- if (previousBurrow.echoBurrowDirection[0] == null || previousBurrow.echoBurrowDirection[1] == null) {
- return;
- }
- Vec3d echoBurrowDirection = previousBurrow.echoBurrowDirection[1].subtract(previousBurrow.echoBurrowDirection[0]).normalize().multiply(100);
- if (previousBurrow.echoBurrowPlane == null) {
- previousBurrow.echoBurrowPlane = new Vec3d[4];
- }
- previousBurrow.echoBurrowPlane[0] = previousBurrow.echoBurrowDirection[0].add(echoBurrowDirection).subtract(0, 50, 0);
- previousBurrow.echoBurrowPlane[1] = previousBurrow.echoBurrowDirection[0].subtract(echoBurrowDirection).subtract(0, 50, 0);
- previousBurrow.echoBurrowPlane[2] = previousBurrow.echoBurrowPlane[1].add(0, 100, 0);
- previousBurrow.echoBurrowPlane[3] = previousBurrow.echoBurrowPlane[0].add(0, 100, 0);
- }
- }
- }
-
- public static void render(WorldRenderContext context) {
- if (isActive()) {
- for (GriffinBurrow burrow : griffinBurrows.values()) {
- if (burrow.shouldRender()) {
- burrow.render(context);
- }
- if (burrow.confirmed != TriState.FALSE) {
- if (burrow.nextBurrowPlane != null) {
- RenderHelper.renderQuad(context, burrow.nextBurrowPlane, ORANGE_COLOR_COMPONENTS, 0.25F, true);
- }
- if (burrow.echoBurrowPlane != null) {
- RenderHelper.renderQuad(context, burrow.echoBurrowPlane, ORANGE_COLOR_COMPONENTS, 0.25F, true);
- }
- }
- }
- }
- }
-
- public static ActionResult onAttackBlock(PlayerEntity player, World world, Hand hand, BlockPos pos, Direction direction) {
- return onInteractBlock(pos);
- }
-
- public static ActionResult onUseBlock(PlayerEntity player, World world, Hand hand, BlockHitResult hitResult) {
- return onInteractBlock(hitResult.getBlockPos());
- }
-
- @NotNull
- private static ActionResult onInteractBlock(BlockPos pos) {
- if (isActive() && griffinBurrows.containsKey(pos)) {
- lastDugBurrowPos = pos;
- }
- return ActionResult.PASS;
- }
-
- public static TypedActionResult<ItemStack> onUseItem(PlayerEntity player, World world, Hand hand) {
- ItemStack stack = player.getStackInHand(hand);
- if (isActive() && ItemUtils.getItemId(stack).equals("ANCESTRAL_SPADE")) {
- lastEchoTime = System.currentTimeMillis();
- }
- return TypedActionResult.pass(stack);
- }
-
- public static void onChatMessage(Text message, boolean overlay) {
- if (isActive() && GRIFFIN_BURROW_DUG.matcher(message.getString()).matches()) {
- previousBurrow.confirmed = TriState.FALSE;
- previousBurrow = griffinBurrows.get(lastDugBurrowPos);
- previousBurrow.confirmed = TriState.DEFAULT;
- }
- }
-
- private static boolean isActive() {
- return SkyblockerConfigManager.get().general.mythologicalRitual.enableMythologicalRitualHelper && Utils.getLocationRaw().equals("hub");
- }
-
- private static class GriffinBurrow extends Waypoint {
- private int critParticle;
- private int enchantParticle;
- private TriState confirmed = TriState.FALSE;
- private final SimpleRegression regression = new SimpleRegression();
- private Vec3d[] nextBurrowPlane;
- @Nullable
- private Vec3d[] echoBurrowDirection;
- private Vec3d[] echoBurrowPlane;
-
- private GriffinBurrow(BlockPos pos) {
- super(pos, Type.WAYPOINT, ORANGE_COLOR_COMPONENTS, 0.25F);
- }
-
- private void init() {
- confirmed = TriState.TRUE;
- regression.clear();
- }
-
- @Override
- public boolean shouldRender() {
- return super.shouldRender() && confirmed == TriState.TRUE;
- }
- }
-}