Skip to content

Commit 9d87fde

Browse files
committed
-Added Biome Scale, with customizable values modifying addToBiomeFirstOctave world option with custom biome scale
1 parent 780475b commit 9d87fde

13 files changed

Lines changed: 211 additions & 19 deletions

File tree

src/main/java/wily/legacy_world_sizes/LegacyWorldSizes.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import wily.legacy_world_sizes.config.LegacyWSCommonOptions;
1515
import wily.legacy_world_sizes.config.LegacyMixinToggles;
1616
import wily.legacy_world_sizes.config.LWSWorldOptions;
17-
import wily.legacy_world_sizes.init.LegacyRegistries;
17+
import wily.legacy_world_sizes.init.LWSRegistries;
1818
import wily.legacy_world_sizes.level.FakeLevelChunk;
1919

2020
//? if fabric {
@@ -81,7 +81,7 @@ public static boolean isNewerVersion(String actualVersion, String previous, int
8181
public static void init() {
8282
FactoryConfig.registerCommonStorage(createModLocation("common"), LegacyWSCommonOptions.COMMON_STORAGE);
8383
FactoryConfig.registerCommonStorage(createModLocation("mixin_common"), MIXIN_CONFIGS_STORAGE);
84-
LegacyRegistries.register();
84+
LWSRegistries.register();
8585
FactoryEvent.setup(LegacyWorldSizes::setup);
8686
FactoryConfig.registerCommonStorage(createModLocation("config"), LWSWorldOptions.WORLD_STORAGE);
8787
FactoryEvent.serverStarted(LegacyWorldSizes::onServerStart);
@@ -105,7 +105,7 @@ public static void onServerPlayerJoin(ServerPlayer p) {
105105

106106
public static void serverStarting(MinecraftServer server) {
107107
LWSWorldOptions.WORLD_STORAGE.withServerFile(server, "config/legacy_world_sizes.json").resetAndLoad();
108-
LWSWorldOptions.setupLegacyWorldSize(server);
108+
LWSWorldOptions.setupLegacyWorldSize(server.registryAccess());
109109
if (server instanceof DedicatedServer dedicatedServer)
110110
LWSWorldOptions.setupDedicatedServerBalancedSeed(dedicatedServer);
111111
}

src/main/java/wily/legacy_world_sizes/config/LWSWorldOptions.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import net.minecraft.Util;
99
import net.minecraft.core.BlockPos;
1010
import net.minecraft.core.Holder;
11+
import net.minecraft.core.RegistryAccess;
1112
import net.minecraft.core.SectionPos;
1213
import net.minecraft.resources.RegistryOps;
1314
import net.minecraft.resources.ResourceKey;
@@ -36,10 +37,7 @@
3637
import wily.factoryapi.base.config.FactoryConfigDisplay;
3738
import wily.legacy_world_sizes.LegacyWorldSizes;
3839
import wily.legacy_world_sizes.mixin.base.*;
39-
import wily.legacy_world_sizes.util.LegacyChunkBounds;
40-
import wily.legacy_world_sizes.util.LegacyLevelLimit;
41-
import wily.legacy_world_sizes.util.LegacyWSComponents;
42-
import wily.legacy_world_sizes.util.LegacyWorldSize;
40+
import wily.legacy_world_sizes.util.*;
4341

4442
import java.util.*;
4543
import java.util.function.Consumer;
@@ -107,6 +105,11 @@ public static <T> FactoryConfig<T> buildAndRegister(UnaryOperator<FactoryConfig.
107105

108106
public static final FactoryConfig<LegacyWorldSize> legacyWorldSize = buildAndRegister(b -> b.key("legacyWorldSize").control(new FactoryConfigControl.FromInt<>(LegacyWorldSize.CODEC, LegacyWorldSize.map::getByIndex, LegacyWorldSize.map::indexOf, LegacyWorldSize.map::size)).defaultValue(LegacyWorldSize.CUSTOM), FactoryConfigDisplay.<LegacyWorldSize>builder().valueToComponent(LegacyWorldSize::name).tooltip(LegacyWSComponents.staticTooltip(LegacyWSComponents.optionName("legacyWorldSize.description"))));
109107

108+
public static final FactoryConfig<LegacyBiomeScale.AddOctave> addToBiomeFirstOctave = buildAndRegister(b -> b.key("addToBiomeFirstOctave").control(FactoryConfigControl.of(LegacyBiomeScale.AddOctave.CODEC)).defaultValue(LegacyBiomeScale.AddOctave.ZERO));
109+
110+
public static final FactoryConfig<LegacyBiomeScale> legacyBiomeScale = buildAndRegister(b -> b.key("legacyBiomeScale").control(new FactoryConfigControl.FromInt<>(LegacyBiomeScale.CODEC, LegacyBiomeScale.map::getByIndex, LegacyBiomeScale.map::indexOf, LegacyBiomeScale.map::size)).defaultValue(LegacyBiomeScale.CUSTOM), FactoryConfigDisplay.<LegacyBiomeScale>builder().valueToComponent(LegacyBiomeScale::name).tooltip(LegacyWSComponents.staticTooltip(LegacyWSComponents.optionName("legacyBiomeScale.description"))));
111+
112+
110113
public static boolean isValidChunk(LevelChunk chunk) {
111114
return isValidPos(chunk.getLevel().dimension(), chunk.getPos());
112115
}
@@ -185,12 +188,16 @@ public static double getTeleportationScale(ResourceKey<Level> from, ResourceKey<
185188
public static void restoreChangedDefaults() {
186189
balancedSeed.setDefault(true);
187190
legacyWorldSize.setDefault(LegacyWorldSize.CUSTOM);
191+
legacyBiomeScale.setDefault(LegacyBiomeScale.CUSTOM);
188192
balancedSeed.reset();
189193
legacyWorldSize.reset();
194+
legacyBiomeScale.reset();
190195
}
191196

192-
public static void setupLegacyWorldSize(MinecraftServer server) {
193-
legacyWorldSize.get().applier().accept(new LegacyWorldSize.ApplyContext(server.registryAccess()));
197+
public static void setupLegacyWorldSize(RegistryAccess access) {
198+
legacyWorldSize.get().applier().accept(new LegacyWorldSize.ApplyContext(access));
199+
legacyBiomeScale.get().applyToAddToBiomeFirstOctave();
200+
addToBiomeFirstOctave.get().applyToBiomeNoiseParameters(access);
194201
}
195202

196203
public static void setupDedicatedServerBalancedSeed(DedicatedServer server) {
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package wily.legacy_world_sizes.data;
2+
3+
//? if neoforge {
4+
/*import wily.legacy_world_sizes.LegacyWorldSizes;
5+
import net.neoforged.bus.api.SubscribeEvent;
6+
//? if >=1.20.6 {
7+
import net.neoforged.fml.common.EventBusSubscriber;
8+
//?} else {
9+
/^import net.neoforged.fml.common.Mod.EventBusSubscriber;
10+
^///?}
11+
import net.neoforged.neoforge.data.event.GatherDataEvent;
12+
import net.minecraft.data.DataProvider;
13+
import net.minecraft.data.DataGenerator;
14+
15+
import java.io.IOException;
16+
*///?} else if fabric {
17+
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
18+
//?}
19+
20+
//? if forge {
21+
/*import wily.legacy_world_sizes.LegacyWorldSizes;
22+
import net.minecraft.data.DataGenerator;
23+
import net.minecraft.data.DataProvider;
24+
import net.minecraftforge.data.event.GatherDataEvent;
25+
import net.minecraftforge.eventbus.api.SubscribeEvent;
26+
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
27+
*///?}
28+
29+
//? if forge || neoforge {
30+
/*@EventBusSubscriber(modid = LegacyWorldSizes.MOD_ID/^? if !(neoforge && >=1.21.6) {^/, bus = EventBusSubscriber.Bus.MOD/^?}^/)
31+
*///?}
32+
public class LWSDataGenerator {
33+
//? if fabric {
34+
public void onInitializeDataGenerator(FabricDataGenerator generator) {
35+
FabricDataGenerator.Pack pack = generator.createPack();
36+
}
37+
//?} else if neoforge || forge {
38+
/*@SubscribeEvent
39+
public static void event(GatherDataEvent event) throws IOException {
40+
DataGenerator generator = event.getGenerator();
41+
}
42+
*///?}
43+
}

src/main/java/wily/legacy_world_sizes/init/LegacyRegistries.java renamed to src/main/java/wily/legacy_world_sizes/init/LWSRegistries.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package wily.legacy_world_sizes.init;
22

3-
public class LegacyRegistries {
3+
public class LWSRegistries {
44
public static void register() {
55

66
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package wily.legacy_world_sizes.mixin.base;
2+
3+
import net.minecraft.server.level.ChunkMap;
4+
import org.spongepowered.asm.mixin.Mixin;
5+
6+
@Mixin(ChunkMap.class)
7+
public class ChunkMapMixin {
8+
9+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package wily.legacy_world_sizes.mixin.base;
2+
3+
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
4+
import net.minecraft.world.level.levelgen.synth.NormalNoise;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.Unique;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import wily.legacy_world_sizes.util.LegacyBiomeScale;
9+
10+
@Mixin(NormalNoise.NoiseParameters.class)
11+
public class NoiseParametersMixin implements LegacyBiomeScale.OctaveFunctionHolder {
12+
@Unique
13+
LegacyBiomeScale.OctaveFunction lws$octaveFunction = i -> i;
14+
15+
@Override
16+
public LegacyBiomeScale.OctaveFunction getOctaveFunction() {
17+
return lws$octaveFunction;
18+
}
19+
20+
@Override
21+
public void setOctaveFunction(LegacyBiomeScale.OctaveFunction octaveFunction) {
22+
this.lws$octaveFunction = octaveFunction;
23+
}
24+
25+
@ModifyReturnValue(method = "firstOctave", at = @At("RETURN"))
26+
private int applyOctaveFunction(int original) {
27+
return getOctaveFunction().apply(original);
28+
}
29+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package wily.legacy_world_sizes.mixin.base;
2+
3+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
4+
import com.llamalad7.mixinextras.sugar.Local;
5+
import net.minecraft.world.level.levelgen.synth.NormalNoise;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
9+
@Mixin(NormalNoise.class)
10+
public class NormalNoiseMixin {
11+
@ModifyExpressionValue(method = "<init>", at = @At(value = "FIELD", target = "Lnet/minecraft/world/level/levelgen/synth/NormalNoise$NoiseParameters;firstOctave:I"))
12+
private int changeFistOctaveToGetter(int original, @Local(argsOnly = true) NormalNoise.NoiseParameters noiseParameters) {
13+
return noiseParameters.firstOctave();
14+
}
15+
}

src/main/java/wily/legacy_world_sizes/mixin/base/client/CreateWorldScreenMixin.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import wily.legacy_world_sizes.config.LWSWorldOptions;
1616
import wily.legacy_world_sizes.util.LegacyChunkBounds;
1717
import wily.legacy_world_sizes.util.LegacyLevelLimit;
18-
import wily.legacy_world_sizes.util.LegacyWorldSize;
1918

2019
import java.util.OptionalLong;
2120

@@ -32,7 +31,7 @@ private void init(CallbackInfo info) {
3231
@Inject(method = "onCreate", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/worldselection/CreateWorldScreen;createLevelSettings(Z)Lnet/minecraft/world/level/LevelSettings;"))
3332
private void onCreate(CallbackInfo ci, @Local LayeredRegistryAccess<RegistryLayer> registryAccess) {
3433
if (uiState.getSeed().isBlank() && LWSWorldOptions.balancedSeed.get()) {
35-
LWSWorldOptions.legacyWorldSize.get().applier().accept(new LegacyWorldSize.ApplyContext(registryAccess.compositeAccess()));
34+
LWSWorldOptions.setupLegacyWorldSize(registryAccess.compositeAccess());
3635
LegacyLevelLimit limit = LWSWorldOptions.legacyLevelLimits.get().get(Level.OVERWORLD);
3736
if (limit != null) {
3837
LegacyChunkBounds bounds = limit.bounds().get(0);

src/main/java/wily/legacy_world_sizes/mixin/base/client/CreateWorldScreenWorldTabMixin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class CreateWorldScreenWorldTabMixin {
1616
@Inject(method = "<init>", at = @At("RETURN"))
1717
private void init(CreateWorldScreen createWorldScreen, CallbackInfo ci, @Local GridLayout.RowHelper rowHelper) {
1818
rowHelper.addChild(FactoryConfigWidgets.createWidget(LWSWorldOptions.balancedSeed, 0, 0, 150, LWSWorldOptions.balancedSeed::setDefault));
19+
rowHelper.addChild(FactoryConfigWidgets.createWidget(LWSWorldOptions.legacyBiomeScale, 0, 0, 150, LWSWorldOptions.legacyBiomeScale::setDefault));
1920
rowHelper.addChild(FactoryConfigWidgets.createWidget(LWSWorldOptions.legacyWorldSize, 0, 0, 308, LWSWorldOptions.legacyWorldSize::setDefault), 2);
2021
}
2122
}

src/main/java/wily/legacy_world_sizes/mixin/base/client/compat/legacy4j/WorldMoreOptionsScreenMixin.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import net.minecraft.client.gui.screens.worldselection.CreateWorldScreen;
55
import net.minecraft.network.chat.Component;
66
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.Unique;
78
import org.spongepowered.asm.mixin.injection.At;
89
import org.spongepowered.asm.mixin.injection.Inject;
910
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@@ -15,7 +16,6 @@
1516
import wily.legacy.client.CommonColor;
1617
import wily.legacy.client.screen.*;
1718
import wily.legacy_world_sizes.config.LWSWorldOptions;
18-
import wily.legacy_world_sizes.util.LegacyWorldSize;
1919

2020
import java.util.function.Function;
2121

@@ -27,12 +27,17 @@ public WorldMoreOptionsScreenMixin(Panel.Constructor<PanelVListScreen> panelCons
2727

2828
@Inject(method = "<init>(Lnet/minecraft/client/gui/screens/worldselection/CreateWorldScreen;Lwily/factoryapi/base/Bearer;)V", at = @At("RETURN"))
2929
private void init(CreateWorldScreen parent, Bearer trustPlayers, CallbackInfo ci) {
30-
FactoryConfig<LegacyWorldSize> config = LWSWorldOptions.legacyWorldSize;
31-
FactoryConfigControl.FromInt<LegacyWorldSize> c = (FactoryConfigControl.FromInt<LegacyWorldSize>) config.control();
32-
Function<LegacyWorldSize, Tooltip> tooltipFunction = (v) -> FactoryConfigWidgets.getCachedTooltip(config.getDisplay().tooltip().apply(v));
33-
renderableVList.renderables.add(3, LegacySliderButton.createFromInt(0, 0, 200, 16, (s) -> config.getDisplay().valueToComponent().apply(s.getObjectValue()), (s) -> tooltipFunction.apply(s.getObjectValue()), config.get(), c.valueGetter(), c.valueSetter(), c.valuesSize(), (s) -> FactoryConfig.saveOptionAndConsume(config, s.getObjectValue(), config::setDefault), config));
34-
renderableVList.renderables.add(3, SimpleLayoutRenderable.createDrawString(config.getDisplay().name(), 1, 2, 0, 9, CommonColor.INVENTORY_GRAY_TEXT.get(), false));
30+
addLabeledConfigSlider(LWSWorldOptions.legacyBiomeScale);
31+
addLabeledConfigSlider(LWSWorldOptions.legacyWorldSize);
3532
renderableVList.renderables.add(3, SimpleLayoutRenderable.create(0, 9, (r) -> (guiGraphics, i, j, f) -> {}));
3633
renderableVList.renderables.add(3, LegacyConfigWidgets.createWidget(LWSWorldOptions.balancedSeed, 0, 0, 200, LWSWorldOptions.balancedSeed::setDefault));
3734
}
35+
36+
@Unique
37+
private <T> void addLabeledConfigSlider(FactoryConfig<T> config) {
38+
FactoryConfigControl.FromInt<T> c = (FactoryConfigControl.FromInt<T>) config.control();
39+
Function<T, Tooltip> tooltipFunction = (v) -> FactoryConfigWidgets.getCachedTooltip(config.getDisplay().tooltip().apply(v));
40+
renderableVList.renderables.add(3, LegacySliderButton.createFromInt(0, 0, 200, 16, (s) -> config.getDisplay().valueToComponent().apply(s.getObjectValue()), (s) -> tooltipFunction.apply(s.getObjectValue()), config.get(), c.valueGetter(), c.valueSetter(), c.valuesSize(), (s) -> FactoryConfig.saveOptionAndConsume(config, s.getObjectValue(), config::setDefault), config));
41+
renderableVList.renderables.add(3, SimpleLayoutRenderable.createDrawString(config.getDisplay().name(), 1, 2, 0, 9, CommonColor.INVENTORY_GRAY_TEXT.get(), false));
42+
}
3843
}

0 commit comments

Comments
 (0)