diff --git a/src/main/java/anticope/rejects/modules/OreSim.java b/src/main/java/anticope/rejects/modules/OreSim.java index c207668..026c343 100755 --- a/src/main/java/anticope/rejects/modules/OreSim.java +++ b/src/main/java/anticope/rejects/modules/OreSim.java @@ -26,6 +26,7 @@ import net.minecraft.util.registry.Registry; import net.minecraft.world.Heightmap; import net.minecraft.world.chunk.ChunkStatus; import net.minecraft.world.gen.random.ChunkRandom; +import com.seedfinding.mccore.version.MCVersion; import java.util.ArrayList; import java.util.BitSet; @@ -37,19 +38,10 @@ import java.util.Random; public class OreSim extends Module { private final HashMap>> chunkRenderers = new HashMap<>(); - private Long worldSeed = null; + private Seed worldSeed = null; private List oreConfig; private ChunkPos prevOffset = new ChunkPos(0, 0); - public enum Version { - V1_14, - V1_15, - V1_16, - V1_17_0, - V1_17_1, - V1_18 - } - public enum AirCheck { ON_LOAD, RECHECK, @@ -75,23 +67,15 @@ public class OreSim extends Module { .build() ); - private final Setting version = sgGeneral.add(new EnumSetting.Builder() - .name("version") - .description("checks if there is air at a calculated ore pos") - .defaultValue(Version.V1_18) - .onChanged(v -> versionChanged()) - .build() - ); public OreSim() { super(MeteorRejectsAddon.CATEGORY, "ore-sim", "Xray on crack."); - oreConfig = Ore.getConfig(version.get()); Ore.oreSettings.forEach(sgOres::add); } @EventHandler private void onRender(Render3DEvent event) { - if (mc.player == null) { + if (mc.player == null || oreConfig == null) { return; } if (Seeds.get().getSeed() != null) { @@ -131,7 +115,7 @@ public class OreSim extends Module { @EventHandler private void onTick(TickEvent.Pre event) { if (airCheck.get() == AirCheck.RECHECK) { - if (mc.player == null || mc.world == null) { + if (mc.player == null || mc.world == null || oreConfig == null) { return; } long chunkX = mc.player.getChunkPos().x; @@ -184,11 +168,6 @@ public class OreSim extends Module { reload(); } - private void versionChanged() { - this.oreConfig = Ore.getConfig(version.get()); - reload(); - } - private void loadVisibleChunks() { int renderdistance = mc.options.viewDistance; @@ -208,7 +187,8 @@ public class OreSim extends Module { private void reload() { Seed seed = Seeds.get().getSeed(); if (seed == null) return; - worldSeed = seed.seed; + worldSeed = seed; + oreConfig = Ore.getConfig(Seeds.get().getSeed().version); chunkRenderers.clear(); if (mc.world != null && worldSeed != null) { loadVisibleChunks(); @@ -239,13 +219,13 @@ public class OreSim extends Module { ChunkRandom random = new ChunkRandom(ChunkRandom.RandomProvider.LEGACY.create(0)); - if (version.get().ordinal() >= 5) { //1.18 and above + if (worldSeed.version.isNewerOrEqualTo(MCVersion.v1_18)) { //1.18 and above random = new ChunkRandom(ChunkRandom.RandomProvider.XOROSHIRO.create(0)); } HashMap> h = new HashMap<>(); - long populationSeed = random.setPopulationSeed(worldSeed, chunkX, chunkZ); + long populationSeed = random.setPopulationSeed(worldSeed.seed, chunkX, chunkZ); Identifier id = world.getRegistryManager().get(Registry.BIOME_KEY).getId(world.getBiomeAccess().getBiomeForNoiseGen(new BlockPos(chunkX, 0, chunkZ))); if (id == null) { @@ -287,7 +267,7 @@ public class OreSim extends Module { int x = random.nextInt(16) + chunkX; int z; int y; - if (version.get() == Version.V1_14) { + if (worldSeed.version.isBetween(MCVersion.v1_14, MCVersion.v1_14_4)) { y = ore.depthAverage ? random.nextInt(ore.maxY) + random.nextInt(ore.maxY) - ore.maxY : random.nextInt(ore.maxY - ore.minY); z = random.nextInt(16) + chunkZ; } else { diff --git a/src/main/java/anticope/rejects/utils/Ore.java b/src/main/java/anticope/rejects/utils/Ore.java index c470488..bac2b5e 100755 --- a/src/main/java/anticope/rejects/utils/Ore.java +++ b/src/main/java/anticope/rejects/utils/Ore.java @@ -1,9 +1,9 @@ package anticope.rejects.utils; -import anticope.rejects.modules.OreSim; import meteordevelopment.meteorclient.settings.BoolSetting; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.utils.render.color.Color; +import com.seedfinding.mccore.version.MCVersion; import net.minecraft.util.Identifier; import net.minecraft.util.math.intprovider.ConstantIntProvider; import net.minecraft.util.math.intprovider.IntProvider; @@ -203,13 +203,14 @@ public class Ore { return ores; } - public static List getConfig(OreSim.Version version) { + public static List getConfig(MCVersion version) { return switch (version) { - case V1_18 -> V1_18(); - case V1_17_1 -> V1_17_1(); - case V1_17_0 -> V1_17(); - case V1_16 -> V1_16(); - case V1_15, V1_14 -> V1_15(); + case v1_18_1, v1_18 -> V1_18(); + case v1_17_1 -> V1_17_1(); + case v1_17 -> V1_17(); + case v1_16_5, v1_16_4, v1_16_3, v1_16_2, v1_16_1, v1_16 -> V1_16(); + case v1_15_2, v1_15_1, v1_15, v1_14_4, v1_14_3, v1_14_2, v1_14_1, v1_14 -> V1_15(); + default -> null; }; } diff --git a/src/main/java/anticope/rejects/utils/WorldGenUtils.java b/src/main/java/anticope/rejects/utils/WorldGenUtils.java index 13b4efd..62d9cbf 100644 --- a/src/main/java/anticope/rejects/utils/WorldGenUtils.java +++ b/src/main/java/anticope/rejects/utils/WorldGenUtils.java @@ -280,36 +280,36 @@ public class WorldGenUtils { } private static Dimension getDimension(Feature feature) { - switch (feature) { - case buried_treasure -> { return Dimension.OVERWORLD; } - case mansion -> { return Dimension.OVERWORLD; } - case stronghold -> { return Dimension.OVERWORLD; } - case nether_fortress -> { return Dimension.NETHER; } - case ocean_monument -> { return Dimension.OVERWORLD; } - case bastion_remnant -> { return Dimension.NETHER; } - case slime_chunk -> { return Dimension.OVERWORLD; } - case village -> { return Dimension.OVERWORLD; } - case mineshaft -> { return Dimension.OVERWORLD; } - case end_city -> { return Dimension.END; } - case desert_pyramid -> { return Dimension.OVERWORLD; } - default -> { return Dimension.OVERWORLD; } - } + return switch (feature) { + case buried_treasure -> Dimension.OVERWORLD; + case mansion -> Dimension.OVERWORLD; + case stronghold -> Dimension.OVERWORLD; + case nether_fortress -> Dimension.NETHER; + case ocean_monument -> Dimension.OVERWORLD; + case bastion_remnant -> Dimension.NETHER; + case slime_chunk -> Dimension.OVERWORLD; + case village -> Dimension.OVERWORLD; + case mineshaft -> Dimension.OVERWORLD; + case end_city -> Dimension.END; + case desert_pyramid -> Dimension.OVERWORLD; + default -> Dimension.OVERWORLD; + }; } private static Structure getStructure(Feature feature, MCVersion version) { - switch (feature) { - case buried_treasure -> { return new BuriedTreasure(version); } - case mansion -> { return new Mansion(version); } - case stronghold -> { return new Stronghold(version); } - case nether_fortress -> { return new Fortress(version); } - case ocean_monument -> { return new Monument(version); } - case bastion_remnant -> { return new BastionRemnant(version); } - case end_city -> { return new EndCity(version); } - case village -> { return new Village(version); } - case mineshaft -> { return new Mineshaft(version); } - case desert_pyramid -> { return new DesertPyramid(version); } - default -> { return null;} - } + return switch (feature) { + case buried_treasure -> new BuriedTreasure(version); + case mansion -> new Mansion(version); + case stronghold -> new Stronghold(version); + case nether_fortress -> new Fortress(version); + case ocean_monument -> new Monument(version); + case bastion_remnant -> new BastionRemnant(version); + case end_city -> new EndCity(version); + case village -> new Village(version); + case mineshaft -> new Mineshaft(version); + case desert_pyramid -> new DesertPyramid(version); + default -> null; + }; } private static BlockPos toBlockPos(BPos pos) {