diff options
author | akarahdev <endisticbutitsforgit@gmail.com> | 2024-01-18 12:02:57 -0500 |
---|---|---|
committer | akarahdev <endisticbutitsforgit@gmail.com> | 2024-01-22 20:19:14 -0500 |
commit | ffb7d6a489934ee8429146c451a54f5d7627bf64 (patch) | |
tree | 123d1b10bacddc06f6a0c8381fdd9ad90c30fdf0 /src/main/java/de/hysky | |
parent | 1c11eadc90ab43a0fdddfac9a65fd6b8f043837c (diff) | |
download | Skyblocker-ffb7d6a489934ee8429146c451a54f5d7627bf64.tar.gz Skyblocker-ffb7d6a489934ee8429146c451a54f5d7627bf64.tar.bz2 Skyblocker-ffb7d6a489934ee8429146c451a54f5d7627bf64.zip |
please work
Diffstat (limited to 'src/main/java/de/hysky')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java | 12 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java | 49 |
2 files changed, 21 insertions, 40 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java index a8537088..15339c78 100644 --- a/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java @@ -6,6 +6,7 @@ import com.llamalad7.mixinextras.sugar.Local; import de.hysky.skyblocker.skyblock.FishingHelper; import de.hysky.skyblocker.skyblock.dungeon.DungeonScore; import de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonManager; +import de.hysky.skyblocker.skyblock.end.BeaconHighlighter; import de.hysky.skyblocker.skyblock.waypoint.MythologicalRitual; import de.hysky.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; @@ -15,6 +16,7 @@ import net.minecraft.entity.EntityStatuses; import net.minecraft.entity.ItemEntity; import net.minecraft.entity.LivingEntity; import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket; +import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; import net.minecraft.network.packet.s2c.play.ParticleS2CPacket; import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket; import net.minecraft.util.Identifier; @@ -71,7 +73,15 @@ public abstract class ClientPlayNetworkHandlerMixin { @ModifyExpressionValue(method = "onEntityStatus", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/s2c/play/EntityStatusS2CPacket;getEntity(Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity;")) private Entity skyblocker$onEntityDeath(Entity entity, @Local(argsOnly = true) EntityStatusS2CPacket packet) { - if (packet.getStatus() == EntityStatuses.PLAY_DEATH_SOUND_OR_ADD_PROJECTILE_HIT_PARTICLES) DungeonScore.handleEntityDeath(entity); + if (packet.getStatus() == EntityStatuses.PLAY_DEATH_SOUND_OR_ADD_PROJECTILE_HIT_PARTICLES) + DungeonScore.handleEntityDeath(entity); return entity; } + @Inject(method = "onBlockUpdate", at = @At("RETURN")) + private void skyblocker$onBlockUpdate(BlockUpdateS2CPacket packet, CallbackInfo ci) { + BeaconHighlighter.positions.remove(packet.getPos()); + if(packet.getState().toString().contains("minecraft:beacon")) { + BeaconHighlighter.positions.add(packet.getPos()); + } + } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java b/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java index 0da5cc97..98929e7c 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java @@ -1,52 +1,24 @@ package de.hysky.skyblocker.skyblock.end; import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.render.RenderHelper; -import de.hysky.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; -import net.minecraft.client.MinecraftClient; import net.minecraft.util.math.BlockPos; import java.util.ArrayList; import java.util.List; public class BeaconHighlighter { - static List<BlockPos> pos = new ArrayList<>(); + public static List<BlockPos> positions = new ArrayList<>(); /** * Initializes the beacon highlighting system. * `BeaconHighlighter::render` is called after translucent rendering. - * `BeaconHighlighter::update` should be called every 5 ticks. */ public static void init() { WorldRenderEvents.AFTER_TRANSLUCENT.register(BeaconHighlighter::render); - Scheduler.INSTANCE.scheduleCyclic(BeaconHighlighter::update, 5); - } - - /** - * Updates the position of the beacon. - * It checks in a 15 block radius on the X/Z axis, and a ~5 block radius on the Y axis. - * If a beacon is found, `pos` is updated to the beacon's position. - */ - - public static void update() { - var player = MinecraftClient.getInstance().player; - var world = MinecraftClient.getInstance().world; - pos.clear(); - if(player != null && world != null && - SkyblockerConfigManager.get().slayer.endermanSlayer.highlightBeacons) { - for(int x = (player.getBlockPos().getX()-15); x<player.getBlockPos().getX()+15; x++) { - for(int z = (player.getBlockPos().getZ()-15); z<player.getBlockPos().getZ()+15; z++) { - for(int y = (player.getBlockPos().getY()-3); y<player.getBlockPos().getY()+7; y++) { - var state = world.getBlockState(new BlockPos(x, y, z)); - if(state.toString().contains("minecraft:beacon")) { - pos.add(new BlockPos(x, y, z)); - } - } - } - } - } } /** @@ -55,14 +27,13 @@ public class BeaconHighlighter { * @param context An instance of WorldRenderContext for the RenderHelper to use */ public static void render(WorldRenderContext context) { - pos.forEach((it) -> { - RenderHelper.renderFilled( - context, - it, - new float[]{1.0f, 0.0f, 0.0f}, - 0.5f, - false - ); - }); + if(Utils.isInTheEnd() && SkyblockerConfigManager.get().slayer.endermanSlayer.highlightBeacons) + positions.forEach((it) -> RenderHelper.renderFilled( + context, + it, + new float[]{1.0f, 0.0f, 0.0f}, + 0.5f, + false + )); } } |