Merge pull request #69 from BentoBoxWorld/develop

Release 2.5.0
This commit is contained in:
tastybento 2024-04-01 21:09:38 -07:00 committed by GitHub
commit ef08a3ddcc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 1099 additions and 118 deletions

View File

@ -65,7 +65,7 @@
<!-- Do not change unless you want different name for local builds. --> <!-- Do not change unless you want different name for local builds. -->
<build.number>-LOCAL</build.number> <build.number>-LOCAL</build.number>
<!-- This allows to change between versions. --> <!-- This allows to change between versions. -->
<build.version>2.4.0</build.version> <build.version>2.5.0</build.version>
<sonar.projectKey>BentoBoxWorld_Boxed</sonar.projectKey> <sonar.projectKey>BentoBoxWorld_Boxed</sonar.projectKey>
<sonar.organization>bentobox-world</sonar.organization> <sonar.organization>bentobox-world</sonar.organization>

View File

@ -58,17 +58,20 @@ public class Boxed extends GameModeAddon {
private static final String SEED = "seed"; private static final String SEED = "seed";
private static final String NETHER = "_nether"; private static final String NETHER = "_nether";
private static final String THE_END = "_the_end"; private static final String THE_END = "_the_end";
private static final String BASE = "_base";
// Settings // Settings
private Settings settings; private Settings settings;
private AbstractBoxedChunkGenerator chunkGenerator; private AbstractBoxedChunkGenerator worldGen;
private BoxedSeedChunkGenerator seedGen;
private AbstractBoxedChunkGenerator netherGen;
private BoxedSeedChunkGenerator netherSeedGen;
private final Config<Settings> configObject = new Config<>(this, Settings.class); private final Config<Settings> configObject = new Config<>(this, Settings.class);
private AdvancementsManager advManager; private AdvancementsManager advManager;
private AbstractBoxedChunkGenerator netherChunkGenerator;
private World seedWorld; private World seedWorld;
private final Map<World, ChunkGenerator> generatorMap = new HashMap<>(); private final Map<World, ChunkGenerator> generatorMap = new HashMap<>();
//private World seedWorldEnd; private final Map<String, ChunkGenerator> generatorMaps = new HashMap<>();
private BiomeProvider boxedBiomeProvider; private BiomeProvider boxedBiomeProvider;
@Override @Override
@ -101,8 +104,21 @@ public class Boxed extends GameModeAddon {
return false; return false;
} }
// Initialize the Generator because createWorlds will be run after onLoad // Initialize the Generator because createWorlds will be run after onLoad
this.chunkGenerator = new BoxedChunkGenerator(this); this.worldGen = new BoxedChunkGenerator(this);
this.netherChunkGenerator = new BoxedChunkGenerator(this); generatorMaps.put(settings.getWorldName(), worldGen);
seedGen = new BoxedSeedChunkGenerator(this, Environment.NORMAL,
new SeedBiomeGenerator(this));
generatorMaps.put(settings.getWorldName() + "/" + SEED, seedGen);
// Nether generators
this.netherGen = new BoxedChunkGenerator(this);
generatorMaps.put(settings.getWorldName() + NETHER, netherGen);
netherSeedGen = new BoxedSeedChunkGenerator(this, Environment.NETHER,
new NetherSeedBiomeGenerator(this));
generatorMaps.put(settings.getWorldName() + "/" + SEED + NETHER, netherSeedGen);
return true; return true;
} }
@ -180,35 +196,18 @@ public class Boxed extends GameModeAddon {
private void createNether(String worldName) { private void createNether(String worldName) {
// Create vanilla seed nether world // Create vanilla seed nether world
log("Creating Boxed Seed Nether world ..."); log("Creating Boxed Seed Nether world ...");
// This creates a vanilla base world with biomes
AbstractBoxedChunkGenerator seedBaseGen = new BoxedSeedChunkGenerator(this, Environment.NETHER);
World baseWorldNether = WorldCreator
.name(worldName + "/" + SEED + NETHER + BASE)
.generator(seedBaseGen)
.environment(Environment.NETHER)
.seed(getSettings().getSeed())
.createWorld();
baseWorldNether.setDifficulty(Difficulty.PEACEFUL);
baseWorldNether.setSpawnLocation(settings.getSeedX(), 64, settings.getSeedZ());
generatorMap.put(baseWorldNether, seedBaseGen);
getPlugin().getIWM().addWorld(baseWorldNether, this);
copyChunks(baseWorldNether, seedBaseGen);
// Create seed world
// This copies a base world with custom biomes
log("Creating Boxed Biomed Nether world ...");
BoxedSeedChunkGenerator seedWorldNetherGenerator = new BoxedSeedChunkGenerator(this, Environment.NETHER, new NetherSeedBiomeGenerator(this, seedBaseGen));
World seedWorldNether = WorldCreator World seedWorldNether = WorldCreator
.name(worldName + "/" + SEED + NETHER) .name(worldName + "/" + SEED + NETHER)
.generator(seedWorldNetherGenerator) .generator(netherSeedGen)
.environment(Environment.NETHER) .environment(Environment.NETHER)
.seed(getSettings().getSeed()) .seed(getSettings().getSeed())
.createWorld(); .createWorld();
seedWorldNether.setDifficulty(Difficulty.EASY); seedWorldNether.setDifficulty(Difficulty.EASY);
seedWorldNether.setSpawnLocation(settings.getNetherSeedX(), 64, settings.getNetherSeedZ()); seedWorldNether.setSpawnLocation(settings.getNetherSeedX(), 64, settings.getNetherSeedZ());
generatorMap.put(seedWorldNether, seedWorldNetherGenerator); generatorMap.put(seedWorldNether, netherSeedGen);
getPlugin().getIWM().addWorld(seedWorldNether, this); getPlugin().getIWM().addWorld(seedWorldNether, this);
copyChunks(seedWorldNether, netherChunkGenerator); copyChunks(seedWorldNether, netherGen);
if (getServer().getWorld(worldName + NETHER) == null) { if (getServer().getWorld(worldName + NETHER) == null) {
log("Creating Boxed's Nether..."); log("Creating Boxed's Nether...");
@ -219,26 +218,9 @@ public class Boxed extends GameModeAddon {
private void createOverWorld(String worldName) { private void createOverWorld(String worldName) {
// Create vanilla seed world // Create vanilla seed world
log("Creating Boxed Seed world ..."); log("Creating Boxed Seed world ...");
// This creates a vanilla base world with biomes
AbstractBoxedChunkGenerator seedBaseGen = new BoxedSeedChunkGenerator(this, Environment.NORMAL);
World baseWorld = WorldCreator
.name(worldName + "/" + SEED + BASE)
.generator(seedBaseGen)
.environment(Environment.NORMAL)
.seed(getSettings().getSeed())
.createWorld();
baseWorld.setDifficulty(Difficulty.PEACEFUL);
baseWorld.setSpawnLocation(settings.getSeedX(), 64, settings.getSeedZ());
generatorMap.put(baseWorld, seedBaseGen);
getPlugin().getIWM().addWorld(baseWorld, this);
copyChunks(baseWorld, seedBaseGen);
// Create seed world
// This copies a base world with custom biomes
log("Creating Boxed Biomed world ...");
BoxedSeedChunkGenerator seedWorldGenerator = new BoxedSeedChunkGenerator(this, Environment.NORMAL, new SeedBiomeGenerator(this, seedBaseGen));
seedWorld = WorldCreator seedWorld = WorldCreator
.name(worldName + "/" + SEED) .name(worldName + "/" + SEED)
.generator(seedWorldGenerator) .generator(seedGen)
.environment(Environment.NORMAL) .environment(Environment.NORMAL)
.seed(getSettings().getSeed()) .seed(getSettings().getSeed())
.createWorld(); .createWorld();
@ -246,11 +228,9 @@ public class Boxed extends GameModeAddon {
seedWorld.setSpawnLocation(settings.getSeedX(), 64, settings.getSeedZ()); seedWorld.setSpawnLocation(settings.getSeedX(), 64, settings.getSeedZ());
generatorMap.put(seedWorld, seedWorldGenerator); generatorMap.put(seedWorld, seedGen);
getPlugin().getIWM().addWorld(seedWorld, this); getPlugin().getIWM().addWorld(seedWorld, this);
copyChunks(seedWorld, chunkGenerator); copyChunks(seedWorld, worldGen);
if (getServer().getWorld(worldName) == null) { if (getServer().getWorld(worldName) == null) {
log("Creating Boxed world ..."); log("Creating Boxed world ...");
@ -308,7 +288,8 @@ public class Boxed extends GameModeAddon {
int p = (int) (count / percent * 100); int p = (int) (count / percent * 100);
if (p % 10 == 0 && p != last) { if (p % 10 == 0 && p != last) {
last = p; last = p;
this.log("Pregenrating seed chunks for " + world.getName() + "'s " + world.getEnvironment() + " " + p + "% done"); this.log("Pregenerating seed chunks for " + world.getName() + "'s " + world.getEnvironment() + " "
+ p + "% done");
} }
} }
@ -321,7 +302,7 @@ public class Boxed extends GameModeAddon {
* @return the chunkGenerator for the environment * @return the chunkGenerator for the environment
*/ */
public AbstractBoxedChunkGenerator getChunkGenerator(Environment env) { public AbstractBoxedChunkGenerator getChunkGenerator(Environment env) {
return env.equals(Environment.NORMAL) ? chunkGenerator : netherChunkGenerator; return env.equals(Environment.NORMAL) ? worldGen : netherGen;
} }
/** /**
@ -386,8 +367,8 @@ public class Boxed extends GameModeAddon {
@Override @Override
public @Nullable ChunkGenerator getDefaultWorldGenerator(String worldName, String id) { public @Nullable ChunkGenerator getDefaultWorldGenerator(String worldName, String id) {
for (Entry<World, ChunkGenerator> en : generatorMap.entrySet()) { for (Entry<String, ChunkGenerator> en : generatorMaps.entrySet()) {
if (en.getKey().getName().equalsIgnoreCase(worldName)) { if (en.getKey().equalsIgnoreCase(worldName)) {
return en.getValue(); return en.getValue();
} }
} }

View File

@ -131,7 +131,7 @@ public class Settings implements WorldSettings {
@ConfigEntry(path = "world.max-areas") @ConfigEntry(path = "world.max-areas")
private int maxIslands = -1; private int maxIslands = -1;
@ConfigComment("Area height - Lowest is 5.") @ConfigComment("Area height")
@ConfigComment("It is the y coordinate of the bedrock block in the blueprint.") @ConfigComment("It is the y coordinate of the bedrock block in the blueprint.")
@ConfigEntry(path = "world.area-height") @ConfigEntry(path = "world.area-height")
private int islandHeight = 8; private int islandHeight = 8;

View File

@ -1,10 +1,8 @@
package world.bentobox.boxed.generators.biomes; package world.bentobox.boxed.generators.biomes;
import org.bukkit.World.Environment; import org.bukkit.World.Environment;
import org.bukkit.block.Biome;
import world.bentobox.boxed.Boxed; import world.bentobox.boxed.Boxed;
import world.bentobox.boxed.generators.chunks.AbstractBoxedChunkGenerator;
/** /**
* Generator for the Nether seed world * Generator for the Nether seed world
@ -13,8 +11,8 @@ import world.bentobox.boxed.generators.chunks.AbstractBoxedChunkGenerator;
*/ */
public class NetherSeedBiomeGenerator extends AbstractSeedBiomeProvider { public class NetherSeedBiomeGenerator extends AbstractSeedBiomeProvider {
public NetherSeedBiomeGenerator(Boxed boxed, AbstractBoxedChunkGenerator seedGen) { public NetherSeedBiomeGenerator(Boxed boxed) {
super(boxed, Environment.NETHER, Biome.BASALT_DELTAS, seedGen); super(boxed, Environment.NETHER);
} }
} }

View File

@ -1,10 +1,8 @@
package world.bentobox.boxed.generators.biomes; package world.bentobox.boxed.generators.biomes;
import org.bukkit.World.Environment; import org.bukkit.World.Environment;
import org.bukkit.block.Biome;
import world.bentobox.boxed.Boxed; import world.bentobox.boxed.Boxed;
import world.bentobox.boxed.generators.chunks.AbstractBoxedChunkGenerator;
/** /**
* Generator for the seed world * Generator for the seed world
@ -13,8 +11,7 @@ import world.bentobox.boxed.generators.chunks.AbstractBoxedChunkGenerator;
*/ */
public class SeedBiomeGenerator extends AbstractSeedBiomeProvider { public class SeedBiomeGenerator extends AbstractSeedBiomeProvider {
public SeedBiomeGenerator(Boxed boxed, AbstractBoxedChunkGenerator seedGen) { public SeedBiomeGenerator(Boxed boxed) {
super(boxed, Environment.NORMAL, Biome.PLAINS, seedGen); super(boxed, Environment.NORMAL);
} }
} }

View File

@ -38,6 +38,7 @@ public abstract class AbstractBoxedChunkGenerator extends ChunkGenerator {
public AbstractBoxedChunkGenerator(Boxed addon) { public AbstractBoxedChunkGenerator(Boxed addon) {
this.addon = addon; this.addon = addon;
size = (int)(addon.getSettings().getIslandDistance() / 16D); // Size is chunks size = (int)(addon.getSettings().getIslandDistance() / 16D); // Size is chunks
} }
/** /**

View File

@ -33,7 +33,6 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.material.Colorable; import org.bukkit.material.Colorable;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.blueprints.dataobjects.BlueprintBlock; import world.bentobox.bentobox.blueprints.dataobjects.BlueprintBlock;
import world.bentobox.bentobox.blueprints.dataobjects.BlueprintCreatureSpawner; import world.bentobox.bentobox.blueprints.dataobjects.BlueprintCreatureSpawner;
import world.bentobox.bentobox.blueprints.dataobjects.BlueprintEntity; import world.bentobox.bentobox.blueprints.dataobjects.BlueprintEntity;
@ -206,7 +205,7 @@ public class BoxedChunkGenerator extends AbstractBoxedChunkGenerator {
if (chunk == null) { if (chunk == null) {
// This should never be needed because islands should abut each other // This should never be needed because islands should abut each other
//cd.setRegion(0, minY, 0, 16, 0, 16, Material.WATER); //cd.setRegion(0, minY, 0, 16, 0, 16, Material.WATER);
BentoBox.getInstance().logError("No chunks found for " + xx + " " + zz); //BentoBox.getInstance().logError("No chunks found for " + xx + " " + zz);
return; return;
} }
// Copy the chunk // Copy the chunk