Skip to content

Commit 2f2ebf4

Browse files
committed
Default to void world generator for Erethon
1 parent edaebd7 commit 2f2ebf4

File tree

2 files changed

+85
-7
lines changed

2 files changed

+85
-7
lines changed

papyrus-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
22
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
3-
@@ -15,6 +_,7 @@
3+
@@ -11,10 +_,12 @@
4+
import com.mojang.brigadier.exceptions.CommandSyntaxException;
5+
import com.mojang.serialization.Dynamic;
6+
import com.mojang.serialization.Lifecycle;
7+
+import de.erethon.papyrus.world.ErethonVoidGenerator;
8+
import io.papermc.paper.configuration.GlobalConfiguration;
49
import io.papermc.paper.configuration.PaperServerConfiguration;
510
import io.papermc.paper.configuration.ServerConfiguration;
611
import io.papermc.paper.world.PaperWorldLoader;
@@ -19,19 +24,32 @@
1924
static {
2025
ConfigurationSerialization.registerClass(CraftOfflinePlayer.class);
2126
ConfigurationSerialization.registerClass(CraftPlayerProfile.class);
22-
@@ -484,6 +_,15 @@
23-
this.potionBrewer = new io.papermc.paper.potion.PaperPotionBrewer(console); // Paper - custom potion mixes
24-
datapackManager = new io.papermc.paper.datapack.PaperDatapackManager(console.getPackRepository()); // Paper
27+
@@ -486,6 +_,15 @@
2528
this.spark = new io.papermc.paper.SparksFly(this); // Paper - spark
26-
+ }
27-
+
29+
}
30+
2831
+ @Override
2932
+ public SpellbookAPI getSpellbookAPI() {
3033
+ return spellbookAPI;
3134
+ }
3235
+
3336
+ public void setSpellbookAPI(SpellbookAPI api) {
3437
+ this.spellbookAPI = api;
38+
+ }
39+
+
40+
public boolean getCommandBlockOverride(String command) {
41+
return this.overrideAllCommandBlockCommands || this.commandsConfiguration.getStringList("command-block-overrides").contains(command);
42+
}
43+
@@ -1748,6 +_,12 @@
3544
}
3645

37-
public boolean getCommandBlockOverride(String command) {
46+
public ChunkGenerator getGenerator(String world) {
47+
+ // Papyrus start - Void gen
48+
+ if (world.equalsIgnoreCase("Erethon")) {
49+
+ this.getLogger().info("Using ErethonVoidGenerator for out-of-bounds generation...");
50+
+ return new ErethonVoidGenerator();
51+
+ }
52+
+ // Papyrus end
53+
ConfigurationSection section = this.configuration.getConfigurationSection("worlds");
54+
ChunkGenerator result = null;
55+
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package de.erethon.papyrus.world;
2+
3+
import org.bukkit.World;
4+
import org.bukkit.block.Biome;
5+
import org.bukkit.generator.BiomeProvider;
6+
import org.bukkit.generator.BlockPopulator;
7+
import org.bukkit.generator.ChunkGenerator;
8+
import org.bukkit.generator.WorldInfo;
9+
import org.jetbrains.annotations.NotNull;
10+
import org.jetbrains.annotations.Nullable;
11+
12+
import java.util.List;
13+
import java.util.Random;
14+
15+
// Simple void generator to prevent chunk gen outside our pre-generated WorldPainter world
16+
public class ErethonVoidGenerator extends ChunkGenerator {
17+
18+
@Override
19+
public @NotNull List<BlockPopulator> getDefaultPopulators(@NotNull World world) { return List.of(); }
20+
21+
@Override
22+
public void generateNoise(@NotNull WorldInfo worldInfo, @NotNull Random random, int chunkX, int chunkZ,
23+
@NotNull ChunkData chunkData) {
24+
// No need to generate noise, we want an empty world
25+
}
26+
@Override
27+
public void generateSurface(@NotNull WorldInfo worldInfo, @NotNull Random random, int chunkX, int chunkZ,
28+
@NotNull ChunkData chunkData) {
29+
// No need to generate surface, we want an empty world
30+
}
31+
@Override
32+
public void generateBedrock(@NotNull WorldInfo worldInfo, @NotNull Random random, int chunkX, int chunkZ,
33+
@NotNull ChunkData chunkData) {
34+
// No need to generate bedrock, we want an empty world
35+
}
36+
@Override
37+
public void generateCaves(@NotNull WorldInfo worldInfo, @NotNull Random random, int chunkX, int chunkZ,
38+
@NotNull ChunkData chunkData) {
39+
// No need to generate caves, we want an empty world
40+
}
41+
42+
@Override
43+
@Nullable
44+
public BiomeProvider getDefaultBiomeProvider(@NotNull WorldInfo worldInfo) { return new VoidBiomeProvider(); }
45+
46+
@Override
47+
public boolean canSpawn(World world, int x, int z) { return true; }
48+
49+
50+
private static class VoidBiomeProvider extends BiomeProvider {
51+
52+
@Override
53+
public @NotNull Biome getBiome(@NotNull WorldInfo worldInfo, int x, int y, int z) { return Biome.THE_VOID; }
54+
55+
@Override
56+
public @NotNull List<Biome> getBiomes(@NotNull WorldInfo worldInfo) { return List.of(Biome.THE_VOID); }
57+
58+
}
59+
}
60+

0 commit comments

Comments
 (0)