Skip to content

Commit fb7f8a7

Browse files
committed
Update To Suit Upstream Changes + MiniMap & Zoom Fixes
1 parent 02697db commit fb7f8a7

File tree

11 files changed

+160
-269
lines changed

11 files changed

+160
-269
lines changed

src/main/java/dev/xpple/seedmapper/command/CustomClientCommandSource.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import dev.xpple.seedmapper.config.Configs;
1111
import dev.xpple.seedmapper.util.SeedDatabaseHelper;
1212
import dev.xpple.seedmapper.util.SeedIdentifier;
13+
import dev.xpple.seedmapper.world.WorldPresetManager;
1314
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
1415
import net.minecraft.Optionull;
1516
import net.minecraft.SharedConstants;
@@ -178,6 +179,10 @@ public int getGeneratorFlags() throws CommandSyntaxException {
178179
if (generatorFlagsMeta != null) {
179180
return (int) generatorFlagsMeta;
180181
}
181-
return this.getSeed().getSecond().generatorFlags();
182+
int seedFlags = this.getSeed().getSecond().generatorFlags();
183+
if (seedFlags != 0) {
184+
return seedFlags;
185+
}
186+
return WorldPresetManager.activePreset().generatorFlags();
182187
}
183188
}

src/main/java/dev/xpple/seedmapper/command/commands/EspConfigCommand.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ public static void register(CommandDispatcher<FabricClientCommandSource> dispatc
8383
targetArgNode.then(literal("reset")
8484
.executes(ctx -> executeReset(ctx, getTargetArgument(ctx, "target"))));
8585
modRoot.addChild(targetArgNode.build());
86-
modRoot.addChild(buildZoomLiteral().build());
86+
for (String literalName : new String[]{"Zoom", "zoom"}) {
87+
modRoot.addChild(buildZoomLiteral(literalName).build());
88+
}
8789
}
8890

8991
private static void registerDirectSmConfig(CommandDispatcher<FabricClientCommandSource> dispatcher) {
@@ -102,7 +104,9 @@ private static void registerDirectSmConfig(CommandDispatcher<FabricClientCommand
102104
targetArgNode.then(literal("reset")
103105
.executes(ctx -> executeReset(ctx, getTargetArgument(ctx, "target"))));
104106
smRoot.then(targetArgNode);
105-
smRoot.then(buildZoomLiteral());
107+
for (String literalName : new String[]{"zoom", "Zoom"}) {
108+
smRoot.then(buildZoomLiteral(literalName));
109+
}
106110
// esptimeout top-level alias
107111
smRoot.then(literal("esptimeout")
108112
.executes(ctx -> {
@@ -122,8 +126,8 @@ private static void registerDirectSmConfig(CommandDispatcher<FabricClientCommand
122126
dispatcher.register(smRoot);
123127
}
124128

125-
private static LiteralArgumentBuilder<FabricClientCommandSource> buildZoomLiteral() {
126-
LiteralArgumentBuilder<FabricClientCommandSource> zoom = literal("Zoom");
129+
private static LiteralArgumentBuilder<FabricClientCommandSource> buildZoomLiteral(String literalName) {
130+
LiteralArgumentBuilder<FabricClientCommandSource> zoom = literal(literalName);
127131
zoom.then(literal("get")
128132
.executes(EspConfigCommand::executeZoomGet));
129133
zoom.then(literal("set")

src/main/java/dev/xpple/seedmapper/command/commands/ExportLootCommand.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import dev.xpple.seedmapper.command.arguments.DimensionArgument;
1515
import dev.xpple.seedmapper.feature.StructureChecks;
1616
import dev.xpple.seedmapper.util.LootExportHelper;
17-
import dev.xpple.seedmapper.world.WorldPresetManager;
17+
import dev.xpple.seedmapper.util.SeedIdentifier;
1818
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
1919
import net.minecraft.core.BlockPos;
2020
import net.minecraft.network.chat.Component;
@@ -73,19 +73,21 @@ private static int exportLoot(CustomClientCommandSource source, int radius, Inte
7373
throw CommandExceptions.LOOT_NOT_SUPPORTED_EXCEPTION.create();
7474
}
7575
int dimension = dimensionArg == null ? source.getDimension() : dimensionArg;
76-
long seed = source.getSeed().getSecond();
76+
SeedIdentifier seed = source.getSeed().getSecond();
77+
long seedValue = seed.seed();
78+
int generatorFlags = source.getGeneratorFlags();
7779
int centerX = Mth.floor(source.getPosition().x());
7880
int centerZ = Mth.floor(source.getPosition().z());
7981

8082
Set<Integer> filterStructures = parseStructureFilter(structuresFilter, version);
8183

8284
try (Arena arena = Arena.ofConfined()) {
8385
MemorySegment generator = Generator.allocate(arena);
84-
Cubiomes.setupGenerator(generator, version, WorldPresetManager.activePreset().generatorFlags());
85-
Cubiomes.applySeed(generator, dimension, seed);
86+
Cubiomes.setupGenerator(generator, version, generatorFlags);
87+
Cubiomes.applySeed(generator, dimension, seedValue);
8688

8789
MemorySegment surfaceNoise = SurfaceNoise.allocate(arena);
88-
Cubiomes.initSurfaceNoise(surfaceNoise, dimension, seed);
90+
Cubiomes.initSurfaceNoise(surfaceNoise, dimension, seedValue);
8991

9092
List<MemorySegment> structureConfigs = new ArrayList<>();
9193
for (int structure = 0; structure < Cubiomes.FEATURE_NUM(); structure++) {
@@ -146,7 +148,7 @@ private static int exportLoot(CustomClientCommandSource source, int radius, Inte
146148
LootExportHelper.Result result = LootExportHelper.exportLoot(
147149
source.getClient(),
148150
generator,
149-
seed,
151+
seedValue,
150152
version,
151153
dimension,
152154
4,

src/main/java/dev/xpple/seedmapper/command/commands/HighlightCommand.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.github.cubiomes.CanyonCarverConfig;
44
import com.github.cubiomes.CaveCarverConfig;
55
import com.github.cubiomes.Cubiomes;
6-
import dev.xpple.seedmapper.world.WorldPresetManager;
76
import com.github.cubiomes.Generator;
87
import com.github.cubiomes.OreConfig;
98
import com.github.cubiomes.OreVeinParameters;
@@ -97,8 +96,8 @@ private static int highlightBlock(CustomClientCommandSource source, Pair<Integer
9796
int dimension = source.getDimension();
9897
try (Arena arena = Arena.ofConfined()) {
9998
MemorySegment generator = Generator.allocate(arena);
100-
Cubiomes.setupGenerator(generator, version, WorldPresetManager.activePreset().generatorFlags());
101-
Cubiomes.applySeed(generator, dimension, seed);
99+
Cubiomes.setupGenerator(generator, version, source.getGeneratorFlags());
100+
Cubiomes.applySeed(generator, dimension, seed.seed());
102101
MemorySegment surfaceNoise = SurfaceNoise.allocate(arena);
103102
Cubiomes.initSurfaceNoise(surfaceNoise, dimension, seed.seed());
104103

@@ -313,7 +312,7 @@ private static int highlightCanyon(CustomClientCommandSource source, int canyonC
313312
throw CommandExceptions.INVALID_DIMENSION_EXCEPTION.create();
314313
}
315314
var biomeFunction = LocateCommand.getCarverBiomeFunction(arena, seed.seed(), dimension, version, source.getGeneratorFlags());
316-
return highlightCarver(source, chunkRange, (chunkX, chunkZ) -> {
315+
return highlightCarver(source, chunkRange, Configs.CanyonESP, (chunkX, chunkZ) -> {
317316
int biome = biomeFunction.applyAsInt(chunkX, chunkZ);
318317
if (Cubiomes.isViableCanyonBiome(canyonCarver, biome) == 0) {
319318
return null;
@@ -341,7 +340,7 @@ private static int highlightCave(CustomClientCommandSource source, int caveCarve
341340
throw CommandExceptions.INVALID_DIMENSION_EXCEPTION.create();
342341
}
343342
var biomeFunction = LocateCommand.getCarverBiomeFunction(arena, seed.seed(), dimension, version, source.getGeneratorFlags());
344-
return highlightCarver(source, chunkRange, (chunkX, chunkZ) -> {
343+
return highlightCarver(source, chunkRange, Configs.CaveESP, (chunkX, chunkZ) -> {
345344
int biome = biomeFunction.applyAsInt(chunkX, chunkZ);
346345
if (Cubiomes.isViableCaveBiome(caveCarver, biome) == 0) {
347346
return null;

src/main/java/dev/xpple/seedmapper/command/commands/LocateCommand.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.github.cubiomes.CanyonCarverConfig;
44
import com.github.cubiomes.Cubiomes;
5-
import dev.xpple.seedmapper.world.WorldPresetManager;
65
import com.github.cubiomes.Generator;
76
import com.github.cubiomes.ItemStack;
87
import com.github.cubiomes.LootTableContext;
@@ -232,7 +231,8 @@ private static int locateStronghold(CustomClientCommandSource source) throws Com
232231

233232
BlockPos position = BlockPos.containing(source.getPosition());
234233

235-
TwoDTree tree = SeedMapScreen.strongholdDataCache.computeIfAbsent(new WorldIdentifier(seed, dimension, version, dev.xpple.seedmapper.world.WorldPresetManager.activePreset().cacheKey()), _ -> calculateStrongholds(seed, dimension, version));
234+
SeedIdentifier contextSeed = new SeedIdentifier(seed.seed(), version, generatorFlags);
235+
TwoDTree tree = SeedMapScreen.strongholdDataCache.computeIfAbsent(new WorldIdentifier(contextSeed, dimension), _ -> calculateStrongholds(seed.seed(), dimension, version, generatorFlags));
236236

237237
BlockPos pos = tree.nearestTo(position.atY(0));
238238

@@ -246,7 +246,7 @@ public static TwoDTree calculateStrongholds(long seed, int dimension, int versio
246246
MemorySegment strongholdIter = StrongholdIter.allocate(arena);
247247
Cubiomes.initFirstStronghold(arena, strongholdIter, version, seed);
248248
MemorySegment generator = Generator.allocate(arena);
249-
Cubiomes.setupGenerator(generator, version, WorldPresetManager.activePreset().generatorFlags());
249+
Cubiomes.setupGenerator(generator, version, generatorFlags);
250250
Cubiomes.applySeed(generator, dimension, seed);
251251

252252
final int count = version <= Cubiomes.MC_1_8() ? 3 : 128;
@@ -289,11 +289,15 @@ private static int locateLoot(CustomClientCommandSource source, int amount, Ench
289289
throw CommandExceptions.LOOT_NOT_SUPPORTED_EXCEPTION.create();
290290
}
291291
int dimension = source.getDimension();
292+
int generatorFlags = source.getGeneratorFlags();
292293

293294
try (Arena arena = Arena.ofConfined()) {
294295
MemorySegment generator = Generator.allocate(arena);
295-
Cubiomes.setupGenerator(generator, version, WorldPresetManager.activePreset().generatorFlags());
296-
Cubiomes.applySeed(generator, dimension, seed);
296+
Cubiomes.setupGenerator(generator, version, generatorFlags);
297+
Cubiomes.applySeed(generator, dimension, seed.seed());
298+
299+
MemorySegment surfaceNoise = SurfaceNoise.allocate(arena);
300+
Cubiomes.initSurfaceNoise(surfaceNoise, dimension, seed.seed());
297301

298302
BlockPos center = BlockPos.containing(source.getPosition());
299303

@@ -542,8 +546,8 @@ static ToIntBiFunction<Integer, Integer> getCarverBiomeFunction(Arena arena, lon
542546
if (version > Cubiomes.MC_1_17_1()) {
543547
return (_, _) -> -1;
544548
}
545-
MemorySegment generator = Generator.allocate(arena);
546-
Cubiomes.setupGenerator(generator, version, WorldPresetManager.activePreset().generatorFlags());
549+
MemorySegment generator = Generator.allocate(arena);
550+
Cubiomes.setupGenerator(generator, version, generatorFlags);
547551
Cubiomes.applySeed(generator, dimension, seed);
548552
return (chunkX, chunkZ) -> Cubiomes.getBiomeAt(generator, 4, chunkX << 2, 0, chunkZ << 2);
549553
}

src/main/java/dev/xpple/seedmapper/command/commands/MinimapCommand.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.mojang.brigadier.exceptions.CommandSyntaxException;
66
import dev.xpple.seedmapper.command.CustomClientCommandSource;
77
import dev.xpple.seedmapper.seedmap.SeedMapMinimapManager;
8+
import dev.xpple.seedmapper.util.SeedIdentifier;
89
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
910
import net.minecraft.core.BlockPos;
1011

@@ -20,20 +21,24 @@ public static void register(CommandDispatcher<FabricClientCommandSource> dispatc
2021
}
2122

2223
private static int toggle(CustomClientCommandSource source) throws CommandSyntaxException {
23-
long seed = source.getSeed().getSecond();
24+
SeedIdentifier seed = source.getSeed().getSecond();
25+
long seedValue = seed.seed();
2426
int dimension = source.getDimension();
2527
int version = source.getVersion();
28+
int generatorFlags = source.getGeneratorFlags();
2629
BlockPos playerPos = BlockPos.containing(source.getPosition());
27-
source.getClient().schedule(() -> SeedMapMinimapManager.toggle(seed, dimension, version, playerPos));
30+
source.getClient().schedule(() -> SeedMapMinimapManager.toggle(seedValue, dimension, version, generatorFlags, playerPos));
2831
return Command.SINGLE_SUCCESS;
2932
}
3033

3134
private static int enable(CustomClientCommandSource source) throws CommandSyntaxException {
32-
long seed = source.getSeed().getSecond();
35+
SeedIdentifier seed = source.getSeed().getSecond();
36+
long seedValue = seed.seed();
3337
int dimension = source.getDimension();
3438
int version = source.getVersion();
39+
int generatorFlags = source.getGeneratorFlags();
3540
BlockPos playerPos = BlockPos.containing(source.getPosition());
36-
source.getClient().schedule(() -> SeedMapMinimapManager.show(seed, dimension, version, playerPos));
41+
source.getClient().schedule(() -> SeedMapMinimapManager.show(seedValue, dimension, version, generatorFlags, playerPos));
3742
return Command.SINGLE_SUCCESS;
3843
}
3944

src/main/java/dev/xpple/seedmapper/command/commands/WorldPresetCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ private static int setPreset(CustomClientCommandSource source, String presetId)
6464
// also send a literal confirmation (fallback if translation missing) and refresh minimap
6565
source.sendFeedback(Component.literal("Preset set: " + preset.displayName().getString()));
6666
try {
67-
dev.xpple.seedmapper.seedmap.SeedMapMinimapManager.refreshIfOpen();
67+
dev.xpple.seedmapper.seedmap.SeedMapMinimapManager.refreshIfOpenWithGeneratorFlags(preset.generatorFlags());
6868
} catch (Throwable ignored) {}
6969
try {
7070
dev.xpple.seedmapper.seedmap.SeedMapScreen.clearCachesForPresetChange();

src/main/java/dev/xpple/seedmapper/config/Configs.java

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,15 @@ private static String getCurrentServerKey() {
7373
}
7474

7575
public static void applySeedForCurrentServer(long seed, boolean storeAsSavedSeed) {
76+
SeedIdentifier identifier = new SeedIdentifier(seed);
7677
String key = getCurrentServerKey();
7778
boolean changed = false;
78-
if (storeAsSavedSeed && key != null && !Objects.equals(SavedSeeds.get(key), seed)) {
79-
SavedSeeds.put(key, seed);
79+
if (storeAsSavedSeed && key != null && !Objects.equals(SavedSeeds.get(key), identifier)) {
80+
SavedSeeds.put(key, identifier);
8081
changed = true;
8182
}
82-
if (!Objects.equals(Seed, seed)) {
83-
Seed = seed;
83+
if (!Objects.equals(Seed, identifier)) {
84+
Seed = identifier;
8485
changed = true;
8586
}
8687
if (changed) {
@@ -93,9 +94,9 @@ public static void loadSavedSeedForCurrentServer() {
9394
if (key == null) {
9495
return;
9596
}
96-
Long savedSeed = SavedSeeds.get(key);
97+
SeedIdentifier savedSeed = SavedSeeds.get(key);
9798
if (savedSeed != null) {
98-
applySeedForCurrentServer(savedSeed, false);
99+
applySeedForCurrentServer(savedSeed.seed(), false);
99100
}
100101
}
101102

@@ -243,7 +244,7 @@ private static void setWorldPresetId(String presetId) {
243244
dev.xpple.seedmapper.world.WorldPresetManager.selectPreset(presetId);
244245
// refresh minimap if open so it picks up new preset
245246
try {
246-
dev.xpple.seedmapper.seedmap.SeedMapMinimapManager.refreshIfOpen();
247+
dev.xpple.seedmapper.seedmap.SeedMapMinimapManager.refreshIfOpenWithGeneratorFlags(dev.xpple.seedmapper.world.WorldPresetManager.activePreset().generatorFlags());
247248
} catch (Throwable ignored) {
248249
}
249250
try {
@@ -253,6 +254,19 @@ private static void setWorldPresetId(String presetId) {
253254
}
254255
}
255256

256-
@Config
257+
@Config(setter = @Config.Setter("setSingleBiome"))
257258
public static String SingleBiome = "minecraft:plains";
259+
260+
private static void setSingleBiome(String biomeId) {
261+
SingleBiome = biomeId;
262+
try {
263+
dev.xpple.seedmapper.world.WorldPresetManager.refreshSingleBiomePreset();
264+
} catch (Throwable ignored) {}
265+
try {
266+
dev.xpple.seedmapper.seedmap.SeedMapScreen.clearCachesForPresetChange();
267+
} catch (Throwable ignored) {}
268+
try {
269+
dev.xpple.seedmapper.seedmap.SeedMapMinimapManager.refreshIfOpenWithGeneratorFlags(dev.xpple.seedmapper.world.WorldPresetManager.activePreset().generatorFlags());
270+
} catch (Throwable ignored) {}
271+
}
258272
}

0 commit comments

Comments
 (0)