From 92859e097c18c6550346e2d3507beb92e6ada2ad Mon Sep 17 00:00:00 2001 From: tastybento Date: Tue, 4 Oct 2022 05:32:52 -0700 Subject: [PATCH] Version 1.18.0 (#56) * Version 1.16.1 * Expose BentoBox 1.16 portal generation mechanics. BentoBoxWorld/BentoBox#1718 * Adds isCheckForBlocks to false similar to CaveBlock. (#49) * Revert "Adds isCheckForBlocks to false similar to CaveBlock. (#49)" (#53) This reverts commit bd36b951979a777c673a34ec22f21c2d54c6d7fe. * Expose BentoBox mobLimitSettings option. (#52) * Expose BentoBox 1.14 onRespawnCommands (#51) BentoBoxWorld/BentoBox#1719 * Implements https://github.com/BentoBoxWorld/SkyGrid/pull/49 * Update to 1.17 * Improved blocks and items for 1.17 * Update GitHub Action to Java 16 * Make Pladdon Java 16 code clean up. * Remove missing blocks/items checking code. * Correct reference to SkyGrid in settings * Fix code smells. * Update to Minecraft 1.17 world gen. Biomes are made by default now. * Update to BentoBox 1.21 API Co-authored-by: BONNe --- .github/workflows/build.yml | 4 +- .gitignore | 3 + pom.xml | 11 ++-- .../java/world/bentobox/skygrid/Settings.java | 62 ++++++++++--------- .../java/world/bentobox/skygrid/SkyGrid.java | 10 +-- .../skygrid/generators/BiomeGenerator.java | 51 --------------- .../bentobox/skygrid/generators/Biomes.java | 6 +- .../skygrid/generators/SkyGridGen.java | 34 ++-------- .../skygrid/generators/SkyGridPop.java | 2 +- src/main/resources/addon.yml | 2 +- src/main/resources/config.yml | 2 - src/main/resources/plugin.yml | 2 +- 12 files changed, 58 insertions(+), 131 deletions(-) create mode 100644 .gitignore delete mode 100644 src/main/java/world/bentobox/skygrid/generators/BiomeGenerator.java diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 07dd6b1..6d8a454 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,11 +14,11 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up JDK 16 + - name: Set up JDK 17 uses: actions/setup-java@v2 with: distribution: 'adopt' - java-version: 16 + java-version: 17 - name: Cache SonarCloud packages uses: actions/cache@v2 with: diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..525681c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/target/ +/.classpath +/.project diff --git a/pom.xml b/pom.xml index e88f8e0..48a5636 100644 --- a/pom.xml +++ b/pom.xml @@ -8,6 +8,7 @@ skygrid ${revision} + SkyGrid Skygrid is an add-on for BentoBox, an expandable Minecraft Bukkit plugin for island-type games like BSkyBlock or AcidIsland. https://github.com/BentoBoxWorld/SkyGrid 2017 @@ -53,18 +54,18 @@ UTF-8 UTF-8 - 16 + 17 2.0.2 - 1.17.1-R0.1-SNAPSHOT - 1.17.1 + 1.19.1-R0.1-SNAPSHOT + 1.21.0 ${build.version}-SNAPSHOT -LOCAL - 1.17.0 + 1.18.0 BentoBoxWorld_SkyGrid bentobox-world @@ -315,6 +316,4 @@ - - SkyGrid \ No newline at end of file diff --git a/src/main/java/world/bentobox/skygrid/Settings.java b/src/main/java/world/bentobox/skygrid/Settings.java index fabdb91..1d83c89 100644 --- a/src/main/java/world/bentobox/skygrid/Settings.java +++ b/src/main/java/world/bentobox/skygrid/Settings.java @@ -13,6 +13,7 @@ import world.bentobox.bentobox.api.configuration.WorldSettings; import world.bentobox.bentobox.api.flags.Flag; import world.bentobox.bentobox.database.objects.adapters.Adapter; +import world.bentobox.bentobox.database.objects.adapters.FlagBooleanSerializer; import world.bentobox.bentobox.database.objects.adapters.FlagSerializer; import world.bentobox.bentobox.database.objects.adapters.FlagSerializer2; @@ -107,10 +108,6 @@ public class Settings implements WorldSettings { private boolean makeEndPortals = false; /* SkyGrid */ - @ConfigComment("Biomes - this will affect some block types and tree types.") - @ConfigEntry(path = "world.create-biomes") - private boolean createBiomes = true; - @ConfigComment("The probability of a frame being created in a chunk. Frames are always at y=0.") @ConfigEntry(path = "world.end-frame-probability") private double endFrameProb = 0.1; @@ -178,13 +175,12 @@ public class Settings implements WorldSettings { @ConfigComment("The value is the minimum island rank required to do the action") @ConfigComment("Ranks are: Visitor = 0, Member = 900, Owner = 1000") @ConfigEntry(path = "world.default-protection-flags") - @Adapter(FlagSerializer.class) - private Map defaultIslandFlags = new HashMap<>(); + private Map defaultIslandFlagNames = new HashMap<>(); @ConfigComment("These are the default settings for new protected areas") @ConfigEntry(path = "world.default-settings") - @Adapter(FlagSerializer2.class) - private Map defaultIslandSettings = new HashMap<>(); + @Adapter(FlagBooleanSerializer.class) + private Map defaultIslandSettingNames = new HashMap<>(); @ConfigComment("These settings/flags are hidden from users") @ConfigComment("Ops can toggle hiding in-game using SHIFT-LEFT-CLICK on flags in settings") @@ -479,20 +475,6 @@ public void setEndBlocks(Map endBlocks) { this.endBlocks = endBlocks; } - /** - * @return the createBiomes - */ - public boolean isCreateBiomes() { - return createBiomes; - } - - /** - * @param createBiomes the createBiomes to set - */ - public void setCreateBiomes(boolean createBiomes) { - this.createBiomes = createBiomes; - } - /** * @return the endFrameProb */ @@ -738,32 +720,56 @@ public void setWorldFlags(Map worldFlags) { /** * @return the defaultIslandFlags + * @deprecated since 1.21 */ @Override public Map getDefaultIslandFlags() { - return defaultIslandFlags; + return Collections.emptyMap(); } + + /** + * @return defaultIslandFlagNames + */ + @Override + public Map getDefaultIslandFlagNames() + { + return defaultIslandFlagNames; + } + + /** * @param defaultIslandFlags the defaultIslandFlags to set */ - public void setDefaultIslandFlags(Map defaultIslandFlags) { - this.defaultIslandFlags = defaultIslandFlags; + public void setDefaultIslandFlagNames(Map defaultIslandFlags) { + this.defaultIslandFlagNames = defaultIslandFlags; } /** * @return the defaultIslandSettings + * @deprecated since 1.21 */ @Override public Map getDefaultIslandSettings() { - return defaultIslandSettings; + return Collections.emptyMap(); + } + + + /** + * @return defaultIslandSettingNames + */ + @Override + public Map getDefaultIslandSettingNames() + { + return defaultIslandSettingNames; } + /** * @param defaultIslandSettings the defaultIslandSettings to set */ - public void setDefaultIslandSettings(Map defaultIslandSettings) { - this.defaultIslandSettings = defaultIslandSettings; + public void setDefaultIslandSettingNames(Map defaultIslandSettings) { + this.defaultIslandSettingNames = defaultIslandSettings; } /** diff --git a/src/main/java/world/bentobox/skygrid/SkyGrid.java b/src/main/java/world/bentobox/skygrid/SkyGrid.java index d7f2fe7..3c15765 100644 --- a/src/main/java/world/bentobox/skygrid/SkyGrid.java +++ b/src/main/java/world/bentobox/skygrid/SkyGrid.java @@ -2,7 +2,6 @@ import org.bukkit.World; import org.bukkit.WorldCreator; -import org.bukkit.WorldType; import org.bukkit.generator.ChunkGenerator; import org.eclipse.jdt.annotation.NonNull; @@ -90,24 +89,21 @@ public void createWorlds() { getLogger().info("Creating SkyGrid world ..."); } // Create the world if it does not exist - islandWorld = WorldCreator.name(worldName).type(WorldType.FLAT).environment(World.Environment.NORMAL).generator(gen) - .createWorld(); + islandWorld = WorldCreator.name(worldName).environment(World.Environment.NORMAL).generator(gen).createWorld(); // Make the nether if it does not exist if (settings.isNetherGenerate()) { if (getServer().getWorld(worldName + NETHER) == null) { log("Creating SkyGrid's Nether..."); } - netherWorld = WorldCreator.name(worldName + NETHER).type(WorldType.FLAT).generator(gen) - .environment(World.Environment.NETHER).createWorld(); + netherWorld = WorldCreator.name(worldName + NETHER).generator(gen).environment(World.Environment.NETHER).createWorld(); } // Make the end if it does not exist if (settings.isEndGenerate()) { if (getServer().getWorld(worldName + THE_END) == null) { log("Creating SkyGrid's End World..."); } - endWorld = WorldCreator.name(worldName + THE_END).type(WorldType.FLAT).generator(gen) - .environment(World.Environment.THE_END).createWorld(); + endWorld = WorldCreator.name(worldName + THE_END).generator(gen).environment(World.Environment.THE_END).createWorld(); } } diff --git a/src/main/java/world/bentobox/skygrid/generators/BiomeGenerator.java b/src/main/java/world/bentobox/skygrid/generators/BiomeGenerator.java deleted file mode 100644 index b091184..0000000 --- a/src/main/java/world/bentobox/skygrid/generators/BiomeGenerator.java +++ /dev/null @@ -1,51 +0,0 @@ -package world.bentobox.skygrid.generators; - -import java.util.Map; -import java.util.Map.Entry; -import java.util.Objects; - -import org.bukkit.World; -import org.bukkit.World.Environment; -import org.bukkit.block.Biome; -import org.bukkit.util.noise.PerlinOctaveGenerator; - -public class BiomeGenerator { - - private final PerlinOctaveGenerator temperatureGen; - private final PerlinOctaveGenerator rainfallGen; - private final Environment env; - - public BiomeGenerator(World world) { - temperatureGen = new PerlinOctaveGenerator(world.getSeed(), 16); - temperatureGen.setScale(1.0/100.0); - - rainfallGen = new PerlinOctaveGenerator(world.getSeed() + 1, 15); - rainfallGen.setScale(1.0/100.0); - - env = world.getEnvironment(); - } - - /** - * Get the biome for this coordinate - * @param realX - x - * @param realZ - z - * @return Biome - */ - public Biome getDominantBiome(int realX, int realZ) { - //We get the 3 closest biome's to the temperature and rainfall at this block - Map biomes = Biomes.getBiomes(env, Math.abs(temperatureGen.noise(realX, realZ, 0.5, 0.5)*100.0), - Math.abs(rainfallGen.noise(realX, realZ, 0.5, 0.5)*100.0)); - //And tell bukkit (who tells the client) what the biggest biome here is - double maxNoiz = 0.0; - Biomes maxBiome = null; - - for (Entry biome : biomes.entrySet()) { - if (biome.getValue() >= maxNoiz) { - maxNoiz = biome.getValue(); - maxBiome = biome.getKey(); - } - } - return Objects.requireNonNull(maxBiome).biome; - } - -} \ No newline at end of file diff --git a/src/main/java/world/bentobox/skygrid/generators/Biomes.java b/src/main/java/world/bentobox/skygrid/generators/Biomes.java index 74ec42d..4fa641c 100644 --- a/src/main/java/world/bentobox/skygrid/generators/Biomes.java +++ b/src/main/java/world/bentobox/skygrid/generators/Biomes.java @@ -20,19 +20,17 @@ public enum Biomes { //We store the biome, the temperature and rainfall for each biome. - SNOWY_TUNDRA(Environment.NORMAL, Biome.SNOWY_TUNDRA, 0, 100), + SNOWY_PLAINS(Environment.NORMAL, Biome.SNOWY_PLAINS, 0, 100), SNOWY_TAIGA(Environment.NORMAL, Biome.SNOWY_TAIGA, 0, 100), FROZEN_RIVER(Environment.NORMAL, Biome.FROZEN_RIVER, 0, 10), SNOWY_BEACH(Environment.NORMAL, Biome.SNOWY_BEACH, 0, 100), - MOUNTAINS(Environment.NORMAL, Biome.MOUNTAINS, 20, 60), - WOODED_MOUNTAINS(Environment.NORMAL, Biome.WOODED_MOUNTAINS, 20, 60), + STONY_PEAKS(Environment.NORMAL, Biome.STONY_PEAKS, 20, 60), DESERT(Environment.NORMAL, Biome.DESERT, 60, 4), FOREST(Environment.NORMAL, Biome.FOREST, 50, 60), PLAINS(Environment.NORMAL, Biome.PLAINS, 40, 30), SWAMP(Environment.NORMAL, Biome.SWAMP, 40, 70), JUNGLE(Environment.NORMAL, Biome.JUNGLE, 60, 50), SAVANNA(Environment.NORMAL, Biome.SAVANNA, 40, 10), - DESERT_HILLS(Environment.NORMAL, Biome.DESERT_HILLS, 60, 5), TAIGA(Environment.NORMAL, Biome.TAIGA, 30, 5), // Nether NETHER_WASTES(Environment.NETHER, Biome.NETHER_WASTES, 40, 30), diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java index eaf1c6b..7a58b0a 100644 --- a/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridGen.java @@ -1,17 +1,15 @@ package world.bentobox.skygrid.generators; import java.util.Collections; -import java.util.EnumMap; import java.util.List; -import java.util.Map; import java.util.Random; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.World; -import org.bukkit.World.Environment; -import org.bukkit.block.Biome; import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.ChunkGenerator; +import org.bukkit.generator.WorldInfo; import world.bentobox.skygrid.SkyGrid; @@ -19,10 +17,7 @@ public class SkyGridGen extends ChunkGenerator { private final SkyGrid addon; - private final Map biomeGenerator; - private final BlockPopulator populator; - private final SkyGridChunks preMade; /** @@ -32,30 +27,14 @@ public SkyGridGen(SkyGrid addon) { this.addon = addon; this.populator = new SkyGridPop(addon); preMade = new SkyGridChunks(addon); - biomeGenerator = new EnumMap<>(Environment.class); } @Override - public ChunkData generateChunkData(World world, Random random, int chunkX, int chunkZ, ChunkGenerator.BiomeGrid biomeGrid) { - // The chunk we are making - ChunkData result = createChunkData(world); - preMade.getSkyGridChunk(world.getEnvironment()).forEach(b -> result.setBlock(b.getX(), b.getY(), b.getZ(), b.getBd())); - // Set biome - if (addon.getSettings().isCreateBiomes()) { - for (int x = 0; x < 16; x +=4) { - for (int z = 0; z < 16; z +=4) { - int realX = x + chunkX * 16; //used so that the noise function gives us - int realZ = z + chunkZ * 16; //different values each chunk - Biome b = biomeGenerator.computeIfAbsent(world.getEnvironment(), k -> new BiomeGenerator(world)).getDominantBiome(realX, realZ); - for (int y = 0; y < world.getMaxHeight(); y+=4) { - biomeGrid.setBiome(x, y, z, b); - } - } - } - } - return result; - } + public void generateNoise(WorldInfo worldInfo, Random r, int x, int z, ChunkData result) { + result.setRegion(0, worldInfo.getMinHeight(), 0, 16, worldInfo.getMaxHeight(), 16, Material.AIR); + preMade.getSkyGridChunk(worldInfo.getEnvironment()).forEach(b -> result.setBlock(b.getX(), b.getY(), b.getZ(), b.getBd())); + } @Override public List getDefaultPopulators(World world) { @@ -68,5 +47,4 @@ public Location getFixedSpawnLocation(World world, Random random) { } - } \ No newline at end of file diff --git a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java index 43976d3..137b6ba 100644 --- a/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java +++ b/src/main/java/world/bentobox/skygrid/generators/SkyGridPop.java @@ -152,7 +152,7 @@ private void setSaplingType(Block b) { break; case SWAMP: break; - case DESERT, DESERT_HILLS: + case DESERT: b.setType(Material.DEAD_BUSH, false); break; case SAVANNA: diff --git a/src/main/resources/addon.yml b/src/main/resources/addon.yml index 9a80f81..1f9b41e 100755 --- a/src/main/resources/addon.yml +++ b/src/main/resources/addon.yml @@ -4,7 +4,7 @@ version: ${version}${build.number} metrics: true repository: "BentoBoxWorld/SkyGrid" icon: "COBWEB" -api-version: 1.14 +api-version: 1.21 authors: tastybento diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 487e620..30b7ae7 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1030,8 +1030,6 @@ world: # when player enters the end world. # Added since 1.16. create-obsidian-platform: false - # Biomes - this will affect some block types and tree types. - create-biomes: true # The probability of a frame being created in a chunk. Frames are always at y=0. end-frame-probability: 0.1 # Friendly name for this world. Used in admin commands. Must be a single word diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e88ac5c..edd241a 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: Pladdon main: world.bentobox.skygrid.SkyGrid version: ${version} -api-version: 1.17 +api-version: 1.19 description: SkyGrid author: tastybento depend: [BentoBox]