Skip to content

Commit b5a5ce2

Browse files
committed
Updated To Suit Upstream Changes
2 parents fb7f8a7 + 7cd2ae4 commit b5a5ce2

15 files changed

+395
-167
lines changed

README.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
# Seedmapper 2.18.x (MC1.21.11) - Modified by CevAPI
1+
# Seedmapper 2.19.x (MC1.21.11) - Modified by CevAPI
22

33
Original Repo: https://github.com/xpple/SeedMapper/
44

55
## Relationship to upstream
66

7-
This project is a friendly, independent fork of Seedmapper. I have not proposed any improvements or features to the upstream but I am welcome to them incorporating my changes. I will sporatically maintain this project and re-base/sync with the upstream project.
7+
This project is a friendly, independent fork of Seedmapper. I have only proposed one feature to the upstream, which was [accepted](https://github.com/xpple/SeedMapper/commit/fb3a3bd0b2d657ac54b35c39fffa990e02b35da0), but I am welcome to them incorporating further changes. I will sporatically maintain this project and re-base/sync with the upstream project.
88

99
## Compiling & Running
1010

@@ -26,7 +26,9 @@ This change was accepted upstream, however in my fork I have adjusted the size o
2626

2727
### World Presets
2828

29-
If the server you're on uses anything other than the default world preset (Large Biomes, Single Biome, ~~Amplified~~, ~~Superflat~~) this will greatly change the world generation. Change the preset to match the server in order to produce an accurate seedmap.
29+
This has been implemented by upstream, but my way does not require you to input the seed again. Both methods are available to use in this fork.
30+
31+
If the server you're on uses anything other than the default world preset (Large Biomes, Single Biome, No Beta Ocean, Force Ocean Variants, ~~Amplified~~, ~~Superflat~~) this will greatly change the world generation. Change the preset to match the server in order to produce an accurate seedmap.
3032

3133
Note that Amplified and Superflat biomes are not implemented yet and are placeholders.
3234

@@ -35,7 +37,9 @@ Note that Amplified and Superflat biomes are not implemented yet and are placeho
3537

3638
### Seed Map Minimap
3739

38-
This is soon to be accepted by upstream!
40+
This has been implemented in the [upstream](https://github.com/xpple/SeedMapper/commit/fb3a3bd0b2d657ac54b35c39fffa990e02b35da0)!
41+
42+
My fork still remains different, has different commands and retains the opacity functionality.
3943

4044
- Run ``` /sm:minimap ``` to open a live SeedMap minimap in the top-left corner of the HUD.
4145
- Use ``` /sm:minimap on/off ``` or to explicitly control whether it is shown.
@@ -96,6 +100,9 @@ Can now export the entire loot table for the map you're viewing by clicking ```E
96100
Exported data will be located in ```SeedMapper/loot/<Server IP>_<Seed>-<Date/Time>.json```
97101

98102
### Auto Apply SeedCracker Seed
99-
If the server you're in already has a seed in the database it will be auto applied and saved.
103+
If the server you're in already has a seed in the database, or it has just been cracked it will be auto applied and saved.
100104

101105
You can enable/disable this with ```/sm:config AutoApplySeedCrackerSeed true/false```
106+
107+
### Notes
108+
If using the original SeedMapper after using my fork you must erase my ```config.json``` first due to the mismatch of settings.

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G
33
org.gradle.parallel=true
44

55
# Mod Properties
6-
mod_version=2.18.1-CevAPI
6+
mod_version=2.19.0-CevAPI
77
maven_group=dev.xpple
88
archives_base_name=SeedMapper
99

src/main/java/dev/xpple/seedmapper/SeedMapper.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,12 @@
3434
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
3535
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
3636
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
37-
import dev.xpple.seedmapper.command.CustomClientCommandSource;
3837
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
3938
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
4039
import net.fabricmc.loader.api.FabricLoader;
4140
import net.fabricmc.loader.api.ModContainer;
4241
import net.minecraft.client.KeyMapping;
4342
import net.minecraft.commands.CommandBuildContext;
44-
import net.fabricmc.loader.api.FabricLoader;
4543

4644
import java.io.IOException;
4745
import java.nio.file.Files;
@@ -88,10 +86,10 @@ public void onInitializeClient() {
8886

8987
SeedDatabaseHelper.fetchSeeds();
9088

91-
KeyMapping keyMapping = KeyBindingHelper.registerKeyBinding(new KeyMapping("key.seedMap", InputConstants.KEY_M, KeyMapping.Category.GAMEPLAY));
89+
KeyMapping seedMapKeyMapping = KeyBindingHelper.registerKeyBinding(new KeyMapping("key.seedMap", InputConstants.KEY_M, KeyMapping.Category.GAMEPLAY));
9290
KeyMapping minimapKeyMapping = KeyBindingHelper.registerKeyBinding(new KeyMapping("key.seedMapMinimap", InputConstants.KEY_COMMA, KeyMapping.Category.GAMEPLAY));
9391
ClientTickEvents.END_CLIENT_TICK.register(minecraft -> {
94-
while (keyMapping.consumeClick()) {
92+
while (seedMapKeyMapping.consumeClick()) {
9593
minecraft.player.connection.sendCommand("sm:seedmap");
9694
}
9795
while (minimapKeyMapping.consumeClick()) {

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import net.minecraft.network.chat.Component;
2323
import net.minecraft.server.permissions.PermissionSet;
2424
import net.minecraft.world.entity.Entity;
25+
import net.minecraft.world.level.dimension.DimensionType;
2526
import net.minecraft.world.phys.Vec2;
2627
import net.minecraft.world.phys.Vec3;
2728
import org.jspecify.annotations.Nullable;
@@ -156,11 +157,7 @@ public int getDimension() throws CommandSyntaxException {
156157
return DimensionArgument.dimension().parse(new StringReader(this.getWorld().dimension().identifier().getPath()));
157158
} catch (CommandSyntaxException _) {
158159
}
159-
return switch (this.getWorld().dimensionType().skybox()) {
160-
case NONE -> Cubiomes.DIM_NETHER();
161-
case OVERWORLD -> Cubiomes.DIM_OVERWORLD();
162-
case END -> Cubiomes.DIM_END();
163-
};
160+
return inferDimension(this.getWorld().dimensionType());
164161
}
165162

166163
public int getVersion() throws CommandSyntaxException {
@@ -185,4 +182,12 @@ public int getGeneratorFlags() throws CommandSyntaxException {
185182
}
186183
return WorldPresetManager.activePreset().generatorFlags();
187184
}
185+
186+
public static int inferDimension(DimensionType dimensionType) {
187+
return switch (dimensionType.skybox()) {
188+
case NONE -> Cubiomes.DIM_NETHER();
189+
case OVERWORLD -> Cubiomes.DIM_OVERWORLD();
190+
case END -> Cubiomes.DIM_END();
191+
};
192+
}
188193
}

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,7 @@ 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-
for (String literalName : new String[]{"Zoom", "zoom"}) {
87-
modRoot.addChild(buildZoomLiteral(literalName).build());
88-
}
86+
modRoot.addChild(buildZoomLiteral("Zoom").build());
8987
}
9088

9189
private static void registerDirectSmConfig(CommandDispatcher<FabricClientCommandSource> dispatcher) {
@@ -104,9 +102,7 @@ private static void registerDirectSmConfig(CommandDispatcher<FabricClientCommand
104102
targetArgNode.then(literal("reset")
105103
.executes(ctx -> executeReset(ctx, getTargetArgument(ctx, "target"))));
106104
smRoot.then(targetArgNode);
107-
for (String literalName : new String[]{"zoom", "Zoom"}) {
108-
smRoot.then(buildZoomLiteral(literalName));
109-
}
105+
smRoot.then(buildZoomLiteral("Zoom"));
110106
// esptimeout top-level alias
111107
smRoot.then(literal("esptimeout")
112108
.executes(ctx -> {

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -274,19 +274,20 @@ private static int highlightTerrain(CustomClientCommandSource source, int chunkR
274274
Set<BlockPos> blocks = new HashSet<>();
275275
SequenceLayout columnLayout = MemoryLayout.sequenceLayout(384, Cubiomes.C_INT);
276276
MemorySegment blockStates = arena.allocate(columnLayout, (long) blockW * blockH);
277-
Cubiomes.generateRegion(params, minChunkX, minChunkZ, chunkW, chunkH, blockStates, MemorySegment.NULL, 0);
277+
MemorySegment heights = arena.allocate(Cubiomes.C_INT, (long) blockW * blockH);
278+
Cubiomes.generateRegion(params, minChunkX, minChunkZ, chunkW, chunkH, blockStates, heights, 1);
278279

279280
for (int relX = 0; relX < blockW; relX++) {
280281
int x = minX + relX;
281282
for (int relZ = 0; relZ < blockH; relZ++) {
282283
int z = minZ + relZ;
283-
int columnIdx = (relX * blockH + relZ) * 384;
284-
for (int y = -64; y < 320; y++) {
285-
int block = blockStates.getAtIndex(Cubiomes.C_INT, columnIdx + y + 64);
286-
if (block == 1) {
287-
blocks.add(new BlockPos(x, y, z));
288-
}
284+
int columnIndex = relX * blockH + relZ;
285+
int stored = heights.getAtIndex(Cubiomes.C_INT, columnIndex);
286+
if (stored <= -64) {
287+
continue;
289288
}
289+
int surfaceY = stored - 1 - 64;
290+
blocks.add(new BlockPos(x, surfaceY, z));
290291
}
291292
}
292293
RenderManager.drawBoxes(blocks, Configs.TerrainESP, 0xFF_FF0000);

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

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,25 +53,12 @@ private static int listPresets(CustomClientCommandSource source) {
5353
}
5454

5555
private static int setPreset(CustomClientCommandSource source, String presetId) {
56-
if (!WorldPresetManager.selectPreset(presetId)) {
56+
WorldPreset preset = WorldPresetManager.findPreset(presetId);
57+
if (preset == null || !Configs.applyWorldPreset(preset.id().toString(), true)) {
5758
source.sendError(Component.translatable("command.worldpreset.unknown", presetId));
5859
return 0;
5960
}
60-
Configs.WorldPresetId = presetId;
61-
Configs.save();
62-
WorldPreset preset = WorldPresetManager.activePreset();
63-
source.sendFeedback(Component.translatable("command.worldpreset.set", accent(preset.displayName().getString())));
64-
// also send a literal confirmation (fallback if translation missing) and refresh minimap
6561
source.sendFeedback(Component.literal("Preset set: " + preset.displayName().getString()));
66-
try {
67-
dev.xpple.seedmapper.seedmap.SeedMapMinimapManager.refreshIfOpenWithGeneratorFlags(preset.generatorFlags());
68-
} catch (Throwable ignored) {}
69-
try {
70-
dev.xpple.seedmapper.seedmap.SeedMapScreen.clearCachesForPresetChange();
71-
} catch (Throwable ignored) {}
72-
try {
73-
dev.xpple.seedmapper.seedmap.SeedMapMinimapManager.debugNotifyPreset();
74-
} catch (Throwable ignored) {}
7562
return Command.SINGLE_SUCCESS;
7663
}
7764
}

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

Lines changed: 65 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
import dev.xpple.seedmapper.SeedMapper;
88
import dev.xpple.seedmapper.command.arguments.SeedResolutionArgument;
99
import dev.xpple.seedmapper.seedmap.MapFeature;
10+
import dev.xpple.seedmapper.seedmap.SeedMapMinimapManager;
1011
import dev.xpple.seedmapper.seedmap.SeedMapScreen;
1112
import dev.xpple.seedmapper.util.ComponentUtils;
1213
import dev.xpple.seedmapper.util.SeedIdentifier;
14+
import dev.xpple.seedmapper.world.WorldPresetManager;
1315
import net.minecraft.ChatFormatting;
1416
import net.minecraft.client.Minecraft;
1517
import net.minecraft.network.chat.Component;
@@ -33,11 +35,14 @@ public static void save() {
3335
Configs.CONFIG_REF.get().save();
3436
}
3537

36-
@Config(chatRepresentation = "displaySeed")
38+
@Config(chatRepresentation = "displaySeed", setter = @Config.Setter("setSeedIdentifier"))
3739
public static SeedIdentifier Seed = null;
3840
private static Component displaySeed() {
3941
return ComponentUtils.formatSeed(Seed);
4042
}
43+
private static void setSeedIdentifier(SeedIdentifier seed) {
44+
updateSeedValue(seed);
45+
}
4146

4247
@Config(putter = @Config.Putter("none"), adder = @Config.Adder(value = "addSavedSeed", type = SeedIdentifier.class), chatRepresentation = "displaySavedSeeds")
4348
public static Map<String, SeedIdentifier> SavedSeeds = new HashMap<>();
@@ -81,7 +86,7 @@ public static void applySeedForCurrentServer(long seed, boolean storeAsSavedSeed
8186
changed = true;
8287
}
8388
if (!Objects.equals(Seed, identifier)) {
84-
Seed = identifier;
89+
updateSeedValue(identifier);
8590
changed = true;
8691
}
8792
if (changed) {
@@ -239,19 +244,15 @@ public static Component getDevModeComment() {
239244
public static String WorldPresetId = "minecraft:default";
240245

241246
private static void setWorldPresetId(String presetId) {
242-
WorldPresetId = presetId;
243-
try {
244-
dev.xpple.seedmapper.world.WorldPresetManager.selectPreset(presetId);
245-
// refresh minimap if open so it picks up new preset
246-
try {
247-
dev.xpple.seedmapper.seedmap.SeedMapMinimapManager.refreshIfOpenWithGeneratorFlags(dev.xpple.seedmapper.world.WorldPresetManager.activePreset().generatorFlags());
248-
} catch (Throwable ignored) {
249-
}
250-
try {
251-
dev.xpple.seedmapper.seedmap.SeedMapScreen.clearCachesForPresetChange();
252-
} catch (Throwable ignored) {}
253-
} catch (Throwable ignored) {
247+
applyWorldPresetInternal(presetId);
248+
}
249+
250+
public static boolean applyWorldPreset(String presetId, boolean saveConfig) {
251+
boolean applied = applyWorldPresetInternal(presetId);
252+
if (applied && saveConfig) {
253+
save();
254254
}
255+
return applied;
255256
}
256257

257258
@Config(setter = @Config.Setter("setSingleBiome"))
@@ -269,4 +270,54 @@ private static void setSingleBiome(String biomeId) {
269270
dev.xpple.seedmapper.seedmap.SeedMapMinimapManager.refreshIfOpenWithGeneratorFlags(dev.xpple.seedmapper.world.WorldPresetManager.activePreset().generatorFlags());
270271
} catch (Throwable ignored) {}
271272
}
273+
274+
private static void updateSeedValue(SeedIdentifier seed) {
275+
Seed = seed;
276+
notifySeedConsumers(null);
277+
}
278+
279+
private static void notifySeedConsumers(Integer generatorFlagsOverride) {
280+
int generatorFlags;
281+
if (generatorFlagsOverride != null) {
282+
generatorFlags = generatorFlagsOverride;
283+
} else if (Seed != null && Seed.generatorFlags() != 0) {
284+
generatorFlags = Seed.generatorFlags();
285+
} else {
286+
try {
287+
generatorFlags = WorldPresetManager.activePreset().generatorFlags();
288+
} catch (Throwable ignored) {
289+
generatorFlags = 0;
290+
}
291+
}
292+
try {
293+
SeedMapScreen.clearCachesForPresetChange();
294+
} catch (Throwable ignored) {}
295+
try {
296+
SeedMapScreen.reopenIfOpen(generatorFlags);
297+
} catch (Throwable ignored) {}
298+
try {
299+
SeedMapMinimapManager.refreshIfOpenWithGeneratorFlags(generatorFlags);
300+
} catch (Throwable ignored) {}
301+
}
302+
303+
private static boolean applyWorldPresetInternal(String presetId) {
304+
boolean selected;
305+
try {
306+
selected = WorldPresetManager.selectPreset(presetId);
307+
} catch (Throwable ignored) {
308+
selected = false;
309+
}
310+
if (!selected) {
311+
return false;
312+
}
313+
WorldPresetId = presetId;
314+
int generatorFlags;
315+
try {
316+
generatorFlags = WorldPresetManager.activePreset().generatorFlags();
317+
} catch (Throwable ignored) {
318+
generatorFlags = 0;
319+
}
320+
notifySeedConsumers(generatorFlags);
321+
return true;
322+
}
272323
}

src/main/java/dev/xpple/seedmapper/mixin/ClientPacketListenerMixin.java

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

33
import dev.xpple.seedmapper.config.Configs;
44
import dev.xpple.seedmapper.render.RenderManager;
5+
import dev.xpple.seedmapper.seedmap.SeedMapMinimapManager;
56
import net.minecraft.client.multiplayer.ClientPacketListener;
67
import net.minecraft.network.protocol.game.ClientboundLoginPacket;
78
import net.minecraft.network.protocol.game.ClientboundRespawnPacket;
@@ -12,9 +13,11 @@
1213

1314
@Mixin(ClientPacketListener.class)
1415
public class ClientPacketListenerMixin {
15-
@Inject(method = "handleLogin", at = @At("HEAD"))
16+
@Inject(method = "handleLogin", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V", shift = At.Shift.AFTER))
1617
private void onHandleLogin(ClientboundLoginPacket packet, CallbackInfo ci) {
1718
RenderManager.clear();
19+
20+
SeedMapMinimapManager.hide();
1821
}
1922

2023
@Inject(method = "handleLogin", at = @At("TAIL"))
@@ -25,5 +28,7 @@ private void onHandleLogin(ClientboundLoginPacket packet, CallbackInfo ci) {
2528
@Inject(method = "handleRespawn", at = @At("HEAD"))
2629
private void onHandleRespawn(ClientboundRespawnPacket packet, CallbackInfo ci) {
2730
RenderManager.clear();
31+
32+
SeedMapMinimapManager.refreshIfOpen();
2833
}
2934
}

0 commit comments

Comments
 (0)