more rendering options to New Chunks (#142)

This commit is contained in:
cqb13
2022-07-24 04:08:24 -04:00
committed by GitHub
parent 99474abecb
commit 36bc339e74

View File

@@ -1,7 +1,6 @@
package anticope.rejects.modules; package anticope.rejects.modules;
import anticope.rejects.MeteorRejectsAddon; import anticope.rejects.MeteorRejectsAddon;
import meteordevelopment.orbit.EventHandler;
import meteordevelopment.meteorclient.events.packets.PacketEvent; import meteordevelopment.meteorclient.events.packets.PacketEvent;
import meteordevelopment.meteorclient.events.render.Render3DEvent; import meteordevelopment.meteorclient.events.render.Render3DEvent;
import meteordevelopment.meteorclient.renderer.ShapeMode; import meteordevelopment.meteorclient.renderer.ShapeMode;
@@ -9,10 +8,16 @@ import meteordevelopment.meteorclient.settings.*;
import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Module;
import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.color.Color;
import meteordevelopment.meteorclient.utils.render.color.SettingColor; import meteordevelopment.meteorclient.utils.render.color.SettingColor;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.fluid.FluidState; import net.minecraft.fluid.FluidState;
import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtCompound;
import net.minecraft.network.packet.s2c.play.*; import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket;
import net.minecraft.util.math.*; import net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket;
import net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.util.math.Direction;
import net.minecraft.world.chunk.WorldChunk; import net.minecraft.world.chunk.WorldChunk;
import java.util.*; import java.util.*;
@@ -23,6 +28,9 @@ import java.util.*;
public class NewChunks extends Module { public class NewChunks extends Module {
private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgGeneral = settings.getDefaultGroup();
private final SettingGroup sgRender = settings.createGroup("Render");
// general
private final Setting<Boolean> remove = sgGeneral.add(new BoolSetting.Builder() private final Setting<Boolean> remove = sgGeneral.add(new BoolSetting.Builder()
.name("remove") .name("remove")
@@ -31,22 +39,57 @@ public class NewChunks extends Module {
.build() .build()
); );
private final Setting<SettingColor> newChunksColor = sgGeneral.add(new ColorSetting.Builder() // render
.name("new-chunks-color") public final Setting<Integer> renderHeight = sgRender.add(new IntSetting.Builder()
.name("render-height")
.description("The height at which new chunks will be rendered")
.defaultValue(0)
.min(-64)
.sliderRange(-64,319)
.build()
);
private final Setting<ShapeMode> shapeMode = sgRender.add(new EnumSetting.Builder<ShapeMode>()
.name("shape-mode")
.description("How the shapes are rendered.")
.defaultValue(ShapeMode.Both)
.build()
);
private final Setting<SettingColor> newChunksSideColor = sgRender.add(new ColorSetting.Builder()
.name("new-chunks-side-color")
.description("Color of the chunks that are (most likely) completely new.") .description("Color of the chunks that are (most likely) completely new.")
.defaultValue(new SettingColor(204, 153, 217)) .defaultValue(new SettingColor(255, 0, 0, 75))
.visible(() -> shapeMode.get() == ShapeMode.Sides || shapeMode.get() == ShapeMode.Both)
.build() .build()
); );
private final Setting<SettingColor> oldChunksColor = sgGeneral.add(new ColorSetting.Builder() private final Setting<SettingColor> oldChunksSideColor = sgRender.add(new ColorSetting.Builder()
.name("old-chunks-color") .name("old-chunks-side-color")
.description("Color of the chunks that have (most likely) been loaded before.") .description("Color of the chunks that have (most likely) been loaded before.")
.defaultValue(new SettingColor(230, 51, 51)) .defaultValue(new SettingColor(0, 255, 0, 75))
.visible(() -> shapeMode.get() == ShapeMode.Sides || shapeMode.get() == ShapeMode.Both)
.build() .build()
); );
private Set<ChunkPos> newChunks = Collections.synchronizedSet(new HashSet<>()); private final Setting<SettingColor> newChunksLineColor = sgRender.add(new ColorSetting.Builder()
private Set<ChunkPos> oldChunks = Collections.synchronizedSet(new HashSet<>()); .name("new-chunks-line-color")
.description("Color of the chunks that are (most likely) completely new.")
.defaultValue(new SettingColor(255, 0, 0, 255))
.visible(() -> shapeMode.get() == ShapeMode.Lines || shapeMode.get() == ShapeMode.Both)
.build()
);
private final Setting<SettingColor> oldChunksLineColor = sgRender.add(new ColorSetting.Builder()
.name("old-chunks-line-color")
.description("Color of the chunks that have (most likely) been loaded before.")
.defaultValue(new SettingColor(0, 255, 0, 255))
.visible(() -> shapeMode.get() == ShapeMode.Lines || shapeMode.get() == ShapeMode.Both)
.build()
);
private final Set<ChunkPos> newChunks = Collections.synchronizedSet(new HashSet<>());
private final Set<ChunkPos> oldChunks = Collections.synchronizedSet(new HashSet<>());
private static final Direction[] searchDirs = new Direction[] { Direction.EAST, Direction.NORTH, Direction.WEST, Direction.SOUTH, Direction.UP }; private static final Direction[] searchDirs = new Direction[] { Direction.EAST, Direction.NORTH, Direction.WEST, Direction.SOUTH, Direction.UP };
public NewChunks() { public NewChunks() {
@@ -64,32 +107,30 @@ public class NewChunks extends Module {
@EventHandler @EventHandler
private void onRender(Render3DEvent event) { private void onRender(Render3DEvent event) {
if (newChunksColor.get().a > 5) { if (newChunksLineColor.get().a > 5 || newChunksSideColor.get().a > 5) {
synchronized (newChunks) { synchronized (newChunks) {
for (ChunkPos c : newChunks) { for (ChunkPos c : newChunks) {
if (mc.getCameraEntity().getBlockPos().isWithinDistance(c.getStartPos(), 1024)) { if (mc.getCameraEntity().getBlockPos().isWithinDistance(c.getStartPos(), 1024)) {
drawBoxOutline(new Box(c.getStartPos(), c.getStartPos().add(16, 0, 16)), newChunksColor.get(), event); render(new Box(c.getStartPos(), c.getStartPos().add(16, renderHeight.get(), 16)), newChunksSideColor.get(), newChunksLineColor.get(), shapeMode.get(), event);
} }
} }
} }
} }
if (oldChunksColor.get().a > 5){ if (oldChunksLineColor.get().a > 5 || oldChunksSideColor.get().a > 5){
synchronized (oldChunks) { synchronized (oldChunks) {
for (ChunkPos c : oldChunks) { for (ChunkPos c : oldChunks) {
if (mc.getCameraEntity().getBlockPos().isWithinDistance(c.getStartPos(), 1024)) { if (mc.getCameraEntity().getBlockPos().isWithinDistance(c.getStartPos(), 1024)) {
drawBoxOutline(new Box(c.getStartPos(), c.getStartPos().add(16, 0, 16)), oldChunksColor.get(), event); render(new Box(c.getStartPos(), c.getStartPos().add(16, renderHeight.get(), 16)), oldChunksSideColor.get(), oldChunksLineColor.get(), shapeMode.get(), event);
} }
} }
} }
} }
} }
private void drawBoxOutline(Box box, Color color, Render3DEvent event) { private void render(Box box, Color sides, Color lines, ShapeMode shapeMode, Render3DEvent event) {
event.renderer.box( event.renderer.box(
box.minX, box.minY, box.minZ, box.maxX, box.maxY, box.maxZ, box.minX, box.minY, box.minZ, box.maxX, box.maxY, box.maxZ, sides, lines, shapeMode, 0);
new Color(0,0,0,0), color, ShapeMode.Lines, 0
);
} }
@EventHandler @EventHandler