diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/PlayerRespawnEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/PlayerRespawnEvent.java new file mode 100644 index 0000000000..d3add74377 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/PlayerRespawnEvent.java @@ -0,0 +1,14 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.events.entity.player; + +public class PlayerRespawnEvent { + private static final PlayerRespawnEvent INSTANCE = new PlayerRespawnEvent(); + + public static PlayerRespawnEvent get() { + return INSTANCE; + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayNetworkHandlerMixin.java index 57bc791247..66f8807bca 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayNetworkHandlerMixin.java @@ -11,6 +11,7 @@ import meteordevelopment.meteorclient.commands.Commands; import meteordevelopment.meteorclient.events.entity.EntityDestroyEvent; import meteordevelopment.meteorclient.events.entity.player.PickItemsEvent; +import meteordevelopment.meteorclient.events.entity.player.PlayerRespawnEvent; import meteordevelopment.meteorclient.events.game.GameJoinedEvent; import meteordevelopment.meteorclient.events.game.GameLeftEvent; import meteordevelopment.meteorclient.events.game.SendMessageEvent; @@ -153,4 +154,9 @@ private void onSendChatMessage(String message, CallbackInfo ci) { ci.cancel(); } } + + @Inject(method = "onPlayerRespawn", at = @At("TAIL")) + public void onPlayerRespawn(PlayerRespawnS2CPacket packet, CallbackInfo ci) { + MeteorClient.EVENT_BUS.post(PlayerRespawnEvent.get()); + } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/NoFall.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/NoFall.java index 6bc05b35bb..f72f678548 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/NoFall.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/NoFall.java @@ -24,7 +24,6 @@ import meteordevelopment.meteorclient.utils.player.PlayerUtils; import meteordevelopment.meteorclient.utils.player.Rotations; import meteordevelopment.meteorclient.utils.world.BlockUtils; -import meteordevelopment.meteorclient.utils.world.Dimension; import meteordevelopment.orbit.EventHandler; import net.minecraft.block.Block; import net.minecraft.block.Blocks; @@ -156,7 +155,7 @@ private void onTick(TickEvent.Pre event) { // Bucket mode else if (mode.get() == Mode.Place) { - PlacedItem placedItem1 = autoDimension.get() && PlayerUtils.getDimension() == Dimension.Nether ? PlacedItem.PowderSnow : placedItem.get(); + PlacedItem placedItem1 = autoDimension.get() && mc.world.getDimension().ultrawarm() ? PlacedItem.PowderSnow : placedItem.get(); if (mc.player.fallDistance > 3 && !EntityUtils.isAboveWater(mc.player)) { Item item = placedItem1.item; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Breadcrumbs.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Breadcrumbs.java index 49ea6dbdf8..0df443e4c3 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Breadcrumbs.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Breadcrumbs.java @@ -5,6 +5,7 @@ package meteordevelopment.meteorclient.systems.modules.render; +import meteordevelopment.meteorclient.events.entity.player.PlayerRespawnEvent; import meteordevelopment.meteorclient.events.render.Render3DEvent; import meteordevelopment.meteorclient.events.world.TickEvent; import meteordevelopment.meteorclient.settings.*; @@ -13,7 +14,6 @@ import meteordevelopment.meteorclient.utils.misc.Pool; import meteordevelopment.meteorclient.utils.render.color.SettingColor; import meteordevelopment.orbit.EventHandler; -import net.minecraft.world.dimension.DimensionType; import java.util.ArrayDeque; import java.util.Queue; @@ -51,8 +51,6 @@ public class Breadcrumbs extends Module { private Section section; - private DimensionType lastDimension; - public Breadcrumbs() { super(Categories.Render, "breadcrumbs", "Displays a trail behind where you have walked."); } @@ -61,8 +59,6 @@ public Breadcrumbs() { public void onActivate() { section = sectionPool.get(); section.set1(); - - lastDimension = mc.world.getDimension(); } @Override @@ -72,12 +68,13 @@ public void onDeactivate() { } @EventHandler - private void onTick(TickEvent.Post event) { - if (lastDimension != mc.world.getDimension()) { - for (Section sec : sections) sectionPool.free(sec); - sections.clear(); - } + private void onPlayerRespawn(PlayerRespawnEvent event) { + for (Section sec : sections) sectionPool.free(sec); + sections.clear(); + } + @EventHandler + private void onTick(TickEvent.Post event) { if (isFarEnough(section.x1, section.y1, section.z1)) { section.set2(); @@ -90,8 +87,6 @@ private void onTick(TickEvent.Post event) { section = sectionPool.get(); section.set1(); } - - lastDimension = mc.world.getDimension(); } @EventHandler diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java index 4d00e47f44..16dac95518 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/LogoutSpots.java @@ -6,6 +6,7 @@ package meteordevelopment.meteorclient.systems.modules.render; import meteordevelopment.meteorclient.events.entity.EntityAddedEvent; +import meteordevelopment.meteorclient.events.entity.player.PlayerRespawnEvent; import meteordevelopment.meteorclient.events.render.Render2DEvent; import meteordevelopment.meteorclient.events.render.Render3DEvent; import meteordevelopment.meteorclient.events.world.TickEvent; @@ -19,7 +20,6 @@ import meteordevelopment.meteorclient.utils.render.NametagUtils; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import meteordevelopment.meteorclient.utils.world.Dimension; import meteordevelopment.orbit.EventHandler; import net.minecraft.client.network.PlayerListEntry; import net.minecraft.entity.Entity; @@ -98,7 +98,6 @@ public class LogoutSpots extends Module { private final List lastPlayers = new ArrayList<>(); private int timer; - private Dimension lastDimension; public LogoutSpots() { super(Categories.Render, "logout-spots", "Displays a box where another player has logged out at."); @@ -111,7 +110,6 @@ public void onActivate() { updateLastPlayers(); timer = 10; - lastDimension = PlayerUtils.getDimension(); } @Override @@ -127,6 +125,11 @@ private void updateLastPlayers() { } } + @EventHandler + private void onPlayerRespawn(PlayerRespawnEvent event) { + players.clear(); + } + @EventHandler private void onEntityAdded(EntityAddedEvent event) { if (event.entity instanceof PlayerEntity) { @@ -169,10 +172,6 @@ private void onTick(TickEvent.Post event) { } else { timer--; } - - Dimension dimension = PlayerUtils.getDimension(); - if (dimension != lastDimension) players.clear(); - lastDimension = dimension; } private void add(Entry entry) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java index 4a25685f26..014d69c52e 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/VoidESP.java @@ -12,9 +12,7 @@ import meteordevelopment.meteorclient.systems.modules.Categories; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.utils.misc.Pool; -import meteordevelopment.meteorclient.utils.player.PlayerUtils; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import meteordevelopment.meteorclient.utils.world.Dimension; import meteordevelopment.meteorclient.utils.world.Dir; import meteordevelopment.orbit.EventHandler; import net.minecraft.block.Block; @@ -23,6 +21,7 @@ import net.minecraft.util.math.Direction; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.ChunkStatus; +import net.minecraft.world.dimension.DimensionTypes; import java.util.ArrayList; import java.util.List; @@ -102,7 +101,7 @@ public VoidESP() { @EventHandler private void onTick(TickEvent.Post event) { voidHoles.clear(); - if (PlayerUtils.getDimension() == Dimension.End) return; + if (mc.world.getDimensionKey() == DimensionTypes.THE_END) return; int px = mc.player.getBlockPos().getX(); int pz = mc.player.getBlockPos().getZ(); @@ -111,10 +110,11 @@ private void onTick(TickEvent.Post event) { for (int x = px - radius; x <= px + radius; x++) { for (int z = pz - radius; z <= pz + radius; z++) { blockPos.set(x, mc.world.getBottomY(), z); - if (isHole(blockPos, false)) voidHoles.add(voidHolePool.get().set(blockPos.set(x, mc.world.getBottomY(), z), false)); + if (isHole(blockPos, false)) + voidHoles.add(voidHolePool.get().set(blockPos.set(x, mc.world.getBottomY(), z), false)); // Check for nether roof - if (netherRoof.get() && PlayerUtils.getDimension() == Dimension.Nether) { + if (netherRoof.get() && mc.world.getDimensionKey() == DimensionTypes.THE_NETHER) { blockPos.set(x, 127, z); if (isHole(blockPos, true)) voidHoles.add(voidHolePool.get().set(blockPos.set(x, 127, z), true)); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/blockesp/BlockESP.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/blockesp/BlockESP.java index 2f9a9063bc..42190edc77 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/blockesp/BlockESP.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/blockesp/BlockESP.java @@ -7,10 +7,10 @@ import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; +import meteordevelopment.meteorclient.events.entity.player.PlayerRespawnEvent; import meteordevelopment.meteorclient.events.render.Render3DEvent; import meteordevelopment.meteorclient.events.world.BlockUpdateEvent; import meteordevelopment.meteorclient.events.world.ChunkDataEvent; -import meteordevelopment.meteorclient.events.world.TickEvent; import meteordevelopment.meteorclient.renderer.ShapeMode; import meteordevelopment.meteorclient.settings.*; import meteordevelopment.meteorclient.systems.modules.Categories; @@ -18,19 +18,15 @@ import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.UnorderedArrayList; import meteordevelopment.meteorclient.utils.network.MeteorExecutor; -import meteordevelopment.meteorclient.utils.player.PlayerUtils; import meteordevelopment.meteorclient.utils.render.color.RainbowColors; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import meteordevelopment.meteorclient.utils.world.Dimension; import meteordevelopment.orbit.EventHandler; import net.minecraft.block.Block; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; import net.minecraft.world.chunk.Chunk; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.util.*; public class BlockESP extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); @@ -80,8 +76,6 @@ public class BlockESP extends Module { private final Long2ObjectMap chunks = new Long2ObjectOpenHashMap<>(); private final List groups = new UnorderedArrayList<>(); - private Dimension lastDimension; - public BlockESP() { super(Categories.Render, "block-esp", "Renders specified blocks through walls."); @@ -98,8 +92,6 @@ public void onActivate() { for (Chunk chunk : Utils.chunks()) { searchChunk(chunk, null); } - - lastDimension = PlayerUtils.getDimension(); } @Override @@ -151,6 +143,11 @@ public void removeGroup(ESPGroup group) { } } + @EventHandler + private void onPlayerRespawn(PlayerRespawnEvent event) { + onActivate(); + } + @EventHandler private void onChunkData(ChunkDataEvent event) { searchChunk(event.chunk, event); @@ -224,15 +221,6 @@ private void onBlockUpdate(BlockUpdateEvent event) { } } - @EventHandler - private void onPostTick(TickEvent.Post event) { - Dimension dimension = PlayerUtils.getDimension(); - - if (lastDimension != dimension) onActivate(); - - lastDimension = dimension; - } - @EventHandler private void onRender(Render3DEvent event) { synchronized (chunks) { diff --git a/src/main/java/meteordevelopment/meteorclient/utils/player/PlayerUtils.java b/src/main/java/meteordevelopment/meteorclient/utils/player/PlayerUtils.java index 13b7604ef1..bae9fd7613 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/player/PlayerUtils.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/player/PlayerUtils.java @@ -205,7 +205,7 @@ else if (entity instanceof PlayerEntity && damageTaken < DamageUtils.getSwordDam } // Check for beds if in nether - if (PlayerUtils.getDimension() != Dimension.Overworld) { + if (!mc.world.getDimension().bedWorks()) { for (BlockEntity blockEntity : Utils.blockEntities()) { BlockPos bp = blockEntity.getPos(); Vec3d pos = new Vec3d(bp.getX(), bp.getY(), bp.getZ());