diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2024-08-01 15:08:43 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2024-08-01 15:08:43 -0400 |
commit | fa20be5af2c8d260393a26ba01c2193eba047ba6 (patch) | |
tree | a2097048a41b95352ec3b2a5605362ee7ebb71b5 | |
parent | ac7778112934593d65e2e7c06794a141ed47ab63 (diff) | |
download | Tumble-fa20be5af2c8d260393a26ba01c2193eba047ba6.tar.gz Tumble-fa20be5af2c8d260393a26ba01c2193eba047ba6.tar.bz2 Tumble-fa20be5af2c8d260393a26ba01c2193eba047ba6.zip |
layers.yml (not tested)
7 files changed, 305 insertions, 348 deletions
diff --git a/src/main/java/com/MylesAndMore/Tumble/Main.java b/src/main/java/com/MylesAndMore/Tumble/Main.java index eb1c4e0..b85636d 100644 --- a/src/main/java/com/MylesAndMore/Tumble/Main.java +++ b/src/main/java/com/MylesAndMore/Tumble/Main.java @@ -5,6 +5,7 @@ import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.config.ConfigManager; import com.MylesAndMore.Tumble.config.LanguageManager; +import com.MylesAndMore.Tumble.config.LayerManager; import com.MylesAndMore.Tumble.game.Arena; import org.bstats.bukkit.Metrics; @@ -23,6 +24,7 @@ public class Main extends JavaPlugin{ LanguageManager.readConfig(); ConfigManager.readConfig(); ArenaManager.readConfig(); + LayerManager.readConfig(); Objects.requireNonNull(this.getCommand("tumble")).setExecutor(new Tumble()); new Metrics(this, 16940); diff --git a/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java b/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java index ac7767a..5e6e571 100644 --- a/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java +++ b/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java @@ -120,9 +120,7 @@ public class ArenaManager { * z: * world: * @param path The section in the yaml with x, y, z, and world as its children - * @return Result of either: - * Result#success = true and Result#value OR - * Result#success = false and Result#error + * @return The location specified by the section, or null if the location is not valid */ private static Location readWorld(String path) { diff --git a/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java b/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java index 6625b26..843d7c0 100644 --- a/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java +++ b/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java @@ -12,11 +12,11 @@ import static com.MylesAndMore.Tumble.Main.plugin; * Manages language.yml and allows retrieval of keys */ public class LanguageManager { + private static final CustomConfig languageYml = new CustomConfig("language.yml"); private static Configuration config; private static Configuration defaultConfig; public static void readConfig() { - CustomConfig languageYml = new CustomConfig("language.yml"); languageYml.saveDefaultConfig(); config = languageYml.getConfig(); defaultConfig = Objects.requireNonNull(config.getDefaults()); diff --git a/src/main/java/com/MylesAndMore/Tumble/config/LayerManager.java b/src/main/java/com/MylesAndMore/Tumble/config/LayerManager.java new file mode 100644 index 0000000..d995305 --- /dev/null +++ b/src/main/java/com/MylesAndMore/Tumble/config/LayerManager.java @@ -0,0 +1,66 @@ +package com.MylesAndMore.Tumble.config; + +import com.MylesAndMore.Tumble.plugin.CustomConfig; +import org.bukkit.Material; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import static com.MylesAndMore.Tumble.Main.plugin; + +public class LayerManager { + public static List<List<Material>> layers; + + private static final CustomConfig layersYml = new CustomConfig("layers.yml"); + private static final FileConfiguration config = layersYml.getConfig(); + + /** + * Read layers from layers.yml and populate this.layers + */ + public static void readConfig() { + layersYml.saveDefaultConfig(); + + ConfigurationSection layersSection = config.getConfigurationSection("layers"); + if (layersSection == null) { + plugin.getLogger().warning("layers.yml is missing section 'layers'"); + return; + } + for (String layerPath : layersSection.getKeys(false)) { + List<Material> layer = readLayer(layerPath); + if (layer == null) { + plugin.getLogger().warning("layers.yml: error loading layer at'"+layerPath+"'"); + } else { + layers.add(layer); + } + } + } + + /** + * Read the list of materials for a layer. + * @param path The path of the layer in the config + * @return The list of materials for the layer to be composed of + */ + public static List<Material> readLayer(String path) { + List<String> list = (List<String>) config.getList(path); + if (list == null) { + return null; + } + List<Material> layer = new ArrayList<>(); + for (String entry : list) { + Material tmp = Material.getMaterial(entry); + if (tmp == null) { + + return null; + } + layer.add(tmp); + } + return layer; + } + + public static List<Material> getRandom() { + return layers.get(new Random().nextInt(layers.size())); + } +} diff --git a/src/main/java/com/MylesAndMore/Tumble/game/Generator.java b/src/main/java/com/MylesAndMore/Tumble/game/Generator.java index c8ecb06..2ef0957 100644 --- a/src/main/java/com/MylesAndMore/Tumble/game/Generator.java +++ b/src/main/java/com/MylesAndMore/Tumble/game/Generator.java @@ -1,5 +1,6 @@ package com.MylesAndMore.Tumble.game; +import com.MylesAndMore.Tumble.config.LayerManager; import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -17,37 +18,36 @@ public class Generator { */ public static void generateLayersShovels(Location layer) { Random random = new Random(); - Layers layers = new Layers(); layer.setY(layer.getY() - 1); // Choose a random type of generation; a circular layer, a square layer, or a multi-tiered layer of either variety if (random.nextInt(4) == 0) { // Circular layer - Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.SNOW_BLOCK), layers.getSafeMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.SNOW_BLOCK), LayerManager.getRandom()); } else if (random.nextInt(4) == 1) { // Square layer - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.SNOW_BLOCK), layers.getSafeMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.SNOW_BLOCK), LayerManager.getRandom()); } else if (random.nextInt(4) == 2) { // Multi-tiered circle - Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.SNOW_BLOCK), layers.getSafeMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.SNOW_BLOCK), LayerManager.getRandom()); Generator.generateLayer(layer, 13, 1, Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.GRASS_BLOCK), layers.getMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.GRASS_BLOCK), LayerManager.getRandom()); Generator.generateLayer(layer, 4, 1, Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.PODZOL), layers.getMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.PODZOL), LayerManager.getRandom()); } else { // Multi-tiered square - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.SNOW_BLOCK), layers.getSafeMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.SNOW_BLOCK), LayerManager.getRandom()); Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.GRASS_BLOCK), layers.getMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.GRASS_BLOCK), LayerManager.getRandom()); Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.PODZOL), layers.getMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.PODZOL), LayerManager.getRandom()); } } @@ -57,81 +57,80 @@ public class Generator { */ public static void generateLayersSnowballs(Location layer) { Random random = new Random(); - Layers layers = new Layers(); layer.setY(layer.getY() - 1); // Similar generation to shovels, except there are three layers if (random.nextInt(4) == 0) { // Circular layer - Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), layers.getSafeMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), LayerManager.getRandom()); layer.setY(layer.getY() - 6); - Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), layers.getMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), LayerManager.getRandom()); layer.setY(layer.getY() - 6); - Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), layers.getMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), LayerManager.getRandom()); } else if (random.nextInt(4) == 1) { // Square layer - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), layers.getSafeMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), LayerManager.getRandom()); layer.setY(layer.getY() - 6); - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), layers.getMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), LayerManager.getRandom()); layer.setY(layer.getY() - 6); - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), layers.getMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), LayerManager.getRandom()); } else if (random.nextInt(4) == 2) { // Multi-tiered circle - Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), layers.getSafeMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), LayerManager.getRandom()); Generator.generateLayer(layer, 13, 1, Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.GRANITE), layers.getMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.GRANITE), LayerManager.getRandom()); Generator.generateLayer(layer, 4, 1, Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.LIME_GLAZED_TERRACOTTA), layers.getMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.LIME_GLAZED_TERRACOTTA), LayerManager.getRandom()); layer.setY(layer.getY() - 6); - Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), layers.getSafeMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), LayerManager.getRandom()); Generator.generateLayer(layer, 13, 1, Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.GRANITE), layers.getMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.GRANITE), LayerManager.getRandom()); Generator.generateLayer(layer, 4, 1, Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.LIME_GLAZED_TERRACOTTA), layers.getMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.LIME_GLAZED_TERRACOTTA), LayerManager.getRandom()); layer.setY(layer.getY() - 6); - Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), layers.getSafeMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 17, 1, Material.STONE), LayerManager.getRandom()); Generator.generateLayer(layer, 13, 1, Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.GRANITE), layers.getMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 13, 1, Material.GRANITE), LayerManager.getRandom()); Generator.generateLayer(layer, 4, 1, Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.LIME_GLAZED_TERRACOTTA), layers.getMaterialList()); + Generator.generateClumps(Generator.generateLayer(layer, 4, 1, Material.LIME_GLAZED_TERRACOTTA), LayerManager.getRandom()); } else { // Multi-tiered square - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), layers.getSafeMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), LayerManager.getRandom()); Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.GRANITE), layers.getMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.GRANITE), LayerManager.getRandom()); Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.LIME_GLAZED_TERRACOTTA), layers.getMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.LIME_GLAZED_TERRACOTTA), LayerManager.getRandom()); layer.setY(layer.getY() - 6); - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), layers.getSafeMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), LayerManager.getRandom()); Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.GRANITE), layers.getMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.GRANITE), LayerManager.getRandom()); Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.LIME_GLAZED_TERRACOTTA), layers.getMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.LIME_GLAZED_TERRACOTTA), LayerManager.getRandom()); layer.setY(layer.getY() - 6); - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), layers.getSafeMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 17, layer.getY(), layer.getZ() - 17), new Location(layer.getWorld(), layer.getX() + 17, layer.getY(), layer.getZ() + 17), Material.STONE), LayerManager.getRandom()); Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.GRANITE), layers.getMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 13, layer.getY(), layer.getZ() - 13), new Location(layer.getWorld(), layer.getX() + 13, layer.getY(), layer.getZ() + 13), Material.GRANITE), LayerManager.getRandom()); Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.AIR); layer.setY(layer.getY() - 1); - Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.LIME_GLAZED_TERRACOTTA), layers.getMaterialList()); + Generator.generateClumps(Generator.generateCuboid(new Location(layer.getWorld(), layer.getX() - 7, layer.getY(), layer.getZ() - 7), new Location(layer.getWorld(), layer.getX() + 7, layer.getY(), layer.getZ() + 7), Material.LIME_GLAZED_TERRACOTTA), LayerManager.getRandom()); } } diff --git a/src/main/java/com/MylesAndMore/Tumble/game/Layers.java b/src/main/java/com/MylesAndMore/Tumble/game/Layers.java deleted file mode 100644 index 8954732..0000000 --- a/src/main/java/com/MylesAndMore/Tumble/game/Layers.java +++ /dev/null @@ -1,310 +0,0 @@ -package com.MylesAndMore.Tumble.game; - -import org.bukkit.Material; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -/** - * Stores the different types of layers that can be generated - */ -public class Layers { - - public Layers() { - List<Material> gen2 = new ArrayList<>() {{ - add(Material.PINK_TERRACOTTA); - add(Material.PURPLE_TERRACOTTA); - add(Material.GRAY_TERRACOTTA); - add(Material.BLUE_TERRACOTTA); - add(Material.LIGHT_BLUE_TERRACOTTA); - add(Material.WHITE_TERRACOTTA); - add(Material.BROWN_TERRACOTTA); - add(Material.GREEN_TERRACOTTA); - add(Material.YELLOW_TERRACOTTA); - add(Material.PINK_TERRACOTTA); - add(Material.PURPLE_TERRACOTTA); - add(Material.GRAY_TERRACOTTA); - add(Material.BLUE_TERRACOTTA); - add(Material.LIGHT_BLUE_TERRACOTTA); - add(Material.WHITE_TERRACOTTA); - add(Material.BROWN_TERRACOTTA); - add(Material.GREEN_TERRACOTTA); - add(Material.YELLOW_TERRACOTTA); - add(Material.WHITE_STAINED_GLASS); - add(Material.HONEYCOMB_BLOCK); - add(Material.HONEYCOMB_BLOCK); - }}; - List<Material> gen4 = new ArrayList<>() {{ - add(Material.DIAMOND_BLOCK); - add(Material.GOLD_BLOCK); - add(Material.REDSTONE_BLOCK); - add(Material.REDSTONE_BLOCK); - add(Material.LAPIS_BLOCK); - add(Material.LAPIS_BLOCK); - add(Material.IRON_BLOCK); - add(Material.COAL_BLOCK); - add(Material.IRON_BLOCK); - add(Material.COAL_BLOCK); - add(Material.IRON_BLOCK); - add(Material.COAL_BLOCK); - add(Material.COAL_BLOCK); - }}; - List<Material> gen5 = new ArrayList<>() {{ - add(Material.WHITE_TERRACOTTA); - add(Material.BLUE_ICE); - add(Material.SOUL_SAND); - add(Material.STONE_SLAB); - add(Material.WHITE_TERRACOTTA); - add(Material.BLUE_ICE); - add(Material.SOUL_SAND); - add(Material.STONE_SLAB); - add(Material.WHITE_TERRACOTTA); - add(Material.BLUE_ICE); - add(Material.SOUL_SAND); - add(Material.STONE_SLAB); - add(Material.GLOWSTONE); - add(Material.GLOWSTONE); - add(Material.HONEY_BLOCK); - add(Material.SLIME_BLOCK); - }}; - List<Material> gen7 = new ArrayList<>() {{ - add(Material.END_STONE); - add(Material.END_STONE_BRICKS); - add(Material.END_STONE); - add(Material.END_STONE_BRICKS); - add(Material.END_STONE); - add(Material.END_STONE_BRICKS); - add(Material.END_STONE); - add(Material.END_STONE_BRICKS); - add(Material.OBSIDIAN); - add(Material.PURPUR_BLOCK); - add(Material.PURPUR_PILLAR); - add(Material.COBBLESTONE); - }}; - List<Material> gen9 = new ArrayList<>() {{ - add(Material.PRISMARINE); - add(Material.DARK_PRISMARINE); - add(Material.BLUE_STAINED_GLASS); - add(Material.WET_SPONGE); - add(Material.PRISMARINE_BRICKS); - add(Material.PRISMARINE_BRICK_SLAB); - add(Material.DARK_PRISMARINE); - add(Material.SEA_LANTERN); - add(Material.TUBE_CORAL_BLOCK); - add(Material.BRAIN_CORAL_BLOCK); - add(Material.BUBBLE_CORAL_BLOCK); - }}; - List<Material> gen10 = new ArrayList<>() {{ - add(Material.OAK_LOG); - add(Material.SPRUCE_LOG); - add(Material.ACACIA_LOG); - add(Material.STRIPPED_OAK_LOG); - add(Material.STRIPPED_SPRUCE_LOG); - add(Material.STRIPPED_ACACIA_LOG); - add(Material.OAK_WOOD); - add(Material.SPRUCE_WOOD); - add(Material.ACACIA_WOOD); - add(Material.OAK_LEAVES); - add(Material.SPRUCE_LEAVES); - add(Material.ACACIA_LEAVES); - add(Material.OAK_LEAVES); - add(Material.SPRUCE_LEAVES); - add(Material.ACACIA_LEAVES); - }}; - List<Material> gen1 = new ArrayList<>() {{ - add(Material.YELLOW_GLAZED_TERRACOTTA); - add(Material.LIGHT_BLUE_GLAZED_TERRACOTTA); - add(Material.GRAY_GLAZED_TERRACOTTA); - add(Material.PODZOL); - add(Material.PODZOL); - add(Material.PODZOL); - add(Material.ORANGE_GLAZED_TERRACOTTA); - }}; - for (int i = 0; i < 3; i++) { - List<Material> gen0 = new ArrayList<>() {{ - add(Material.COAL_ORE); - add(Material.COAL_ORE); - add(Material.COAL_ORE); - add(Material.COAL_ORE); - add(Material.COAL_ORE); - add(Material.IRON_ORE); - add(Material.REDSTONE_ORE); - add(Material.EMERALD_ORE); - add(Material.GOLD_ORE); - add(Material.LAPIS_ORE); - add(Material.DIAMOND_ORE); - add(Material.GRASS_BLOCK); - add(Material.GRASS_BLOCK); - add(Material.GRASS_BLOCK); - add(Material.GRASS_BLOCK); - add(Material.COBWEB); - }}; - matList.add(gen0); - matList.add(gen1); - matList.add(gen2); - List<Material> gen3 = new ArrayList<>() {{ - add(Material.PACKED_ICE); - add(Material.PACKED_ICE); - add(Material.JUKEBOX); - add(Material.TNT); - add(Material.LIGHT_BLUE_CONCRETE); - add(Material.GLASS); - add(Material.PACKED_ICE); - add(Material.PACKED_ICE); - add(Material.JUKEBOX); - add(Material.TNT); - add(Material.LIGHT_BLUE_CONCRETE); - add(Material.GLASS); - add(Material.SOUL_SAND); - }}; - matList.add(gen3); - matList.add(gen4); - matList.add(gen5); - List<Material> gen6 = new ArrayList<>() {{ - add(Material.NETHERRACK); - add(Material.NETHERRACK); - add(Material.NETHERRACK); - add(Material.NETHER_BRICKS); - add(Material.NETHER_BRICKS); - add(Material.NETHERRACK); - add(Material.NETHERRACK); - add(Material.NETHERRACK); - add(Material.NETHER_BRICKS); - add(Material.NETHER_BRICKS); - add(Material.NETHER_GOLD_ORE); - add(Material.NETHER_GOLD_ORE); - add(Material.CRIMSON_NYLIUM); - add(Material.WARPED_NYLIUM); - add(Material.SOUL_SOIL); - add(Material.CRACKED_NETHER_BRICKS); - add(Material.RED_NETHER_BRICKS); - add(Material.NETHER_WART_BLOCK); - add(Material.CRYING_OBSIDIAN); - add(Material.MAGMA_BLOCK); - }}; - matList.add(gen6); - matList.add(gen7); - List<Material> gen8 = new ArrayList<>() {{ - add(Material.REDSTONE_BLOCK); - add(Material.REDSTONE_BLOCK); - add(Material.REDSTONE_LAMP); - add(Material.TARGET); - add(Material.SLIME_BLOCK); - add(Material.OBSERVER); - }}; - matList.add(gen8); - matList.add(gen9); - matList.add(gen10); - List<Material> gen12 = new ArrayList<>() {{ - add(Material.DIRT); - add(Material.GRASS_PATH); - add(Material.GRASS_BLOCK); - add(Material.OAK_SLAB); - add(Material.BRICK_WALL); - add(Material.BRICK_STAIRS); - }}; - matList.add(gen12); - List<Material> gen14 = new ArrayList<>() {{ - add(Material.OAK_PLANKS); - add(Material.OBSIDIAN); - add(Material.SPONGE); - add(Material.BEEHIVE); - add(Material.DRIED_KELP_BLOCK); - }}; - matList.add(gen14); - List<Material> gen15 = new ArrayList<>() {{ - add(Material.SANDSTONE); - add(Material.SANDSTONE_SLAB); - add(Material.RED_SANDSTONE); - add(Material.RED_SANDSTONE_SLAB); - add(Material.RED_TERRACOTTA); - add(Material.TERRACOTTA); - add(Material.YELLOW_TERRACOTTA); - }}; - matList.add(gen15); - List<Material> gen16 = new ArrayList<>() {{ - add(Material.JUNGLE_LOG); - add(Material.STRIPPED_JUNGLE_LOG); - add(Material.JUNGLE_WOOD); - add(Material.STRIPPED_JUNGLE_WOOD); - add(Material.MOSSY_COBBLESTONE); - add(Material.MOSSY_COBBLESTONE); - add(Material.MOSSY_COBBLESTONE); - add(Material.JUNGLE_LEAVES); - add(Material.JUNGLE_SLAB); - add(Material.JUNGLE_TRAPDOOR); - }}; - matList.add(gen16); - } - List<Material> gen11 = new ArrayList<>() {{ - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.GLASS); - add(Material.WHITE_STAINED_GLASS); - }}; - matList.add(gen11); // Troll glass layer - - for (int i = 0; i < 2; i++) { - safeMatList.add(gen1); - safeMatList.add(gen2); - safeMatList.add(gen4); - safeMatList.add(gen5); - safeMatList.add(gen7); - safeMatList.add(gen9); - safeMatList.add(gen10); - } - safeMatList.add(gen11); // Troll glass layer - } - - // Define Random class - Random random = new Random(); - /** - * @return A random predefined List of Materials that are okay to use in the clump generator - */ - public List<Material> getMaterialList() { - return matList.get(random.nextInt(matList.size())); - } - - /** - * @return A random predefined List of Materials that are okay to spawn players on top of - */ - public List<Material> getSafeMaterialList() { return safeMatList.get(random.nextInt(safeMatList.size())); } - - // Template: - // private final List<Material> gen = new ArrayList<>() {{ - // add(Material. - // }}; - - private final List<List<Material>> matList = new ArrayList<>(); - - private final List<List<Material>> safeMatList = new ArrayList<>(); - -} diff --git a/src/main/resources/layers.yml b/src/main/resources/layers.yml new file mode 100644 index 0000000..acc5be9 --- /dev/null +++ b/src/main/resources/layers.yml @@ -0,0 +1,202 @@ +layers: + 1: + - YELLOW_GLAZED_TERRACOTTA + - LIGHT_BLUE_GLAZED_TERRACOTTA + - GRAY_GLAZED_TERRACOTTA + - PODZOL + - PODZOL + - PODZOL + - ORANGE_GLAZED_TERRACOTTA + 2: + - PINK_TERRACOTTA + - PURPLE_TERRACOTTA + - GRAY_TERRACOTTA + - BLUE_TERRACOTTA + - LIGHT_BLUE_TERRACOTTA + - WHITE_TERRACOTTA + - BROWN_TERRACOTTA + - GREEN_TERRACOTTA + - YELLOW_TERRACOTTA + - PINK_TERRACOTTA + - PURPLE_TERRACOTTA + - GRAY_TERRACOTTA + - BLUE_TERRACOTTA + - LIGHT_BLUE_TERRACOTTA + - WHITE_TERRACOTTA + - BROWN_TERRACOTTA + - GREEN_TERRACOTTA + - YELLOW_TERRACOTTA + - WHITE_STAINED_GLASS + - HONEYCOMB_BLOCK + - HONEYCOMB_BLOCK + 3: + - DIAMOND_BLOCK + - GOLD_BLOCK + - REDSTONE_BLOCK + - REDSTONE_BLOCK + - LAPIS_BLOCK + - LAPIS_BLOCK + - IRON_BLOCK + - COAL_BLOCK + - IRON_BLOCK + - COAL_BLOCK + - IRON_BLOCK + - COAL_BLOCK + - COAL_BLOCK + 4: + - WHITE_TERRACOTTA + - BLUE_ICE + - SOUL_SAND + - STONE_SLAB + - WHITE_TERRACOTTA + - BLUE_ICE + - SOUL_SAND + - STONE_SLAB + - WHITE_TERRACOTTA + - BLUE_ICE + - SOUL_SAND + - STONE_SLAB + - GLOWSTONE + - GLOWSTONE + - HONEY_BLOCK + - SLIME_BLOCK + 5: + - END_STONE + - END_STONE_BRICKS + - END_STONE + - END_STONE_BRICKS + - END_STONE + - END_STONE_BRICKS + - END_STONE + - END_STONE_BRICKS + - OBSIDIAN + - PURPUR_BLOCK + - PURPUR_PILLAR + - COBBLESTONE + 6: + - PRISMARINE + - DARK_PRISMARINE + - BLUE_STAINED_GLASS + - WET_SPONGE + - PRISMARINE_BRICKS + - PRISMARINE_BRICK_SLAB + - DARK_PRISMARINE + - SEA_LANTERN + - TUBE_CORAL_BLOCK + - BRAIN_CORAL_BLOCK + - BUBBLE_CORAL_BLOCK + 7: + - OAK_LOG + - SPRUCE_LOG + - ACACIA_LOG + - STRIPPED_OAK_LOG + - STRIPPED_SPRUCE_LOG + - STRIPPED_ACACIA_LOG + - OAK_WOOD + - SPRUCE_WOOD + - ACACIA_WOOD + - OAK_LEAVES + - SPRUCE_LEAVES + - ACACIA_LEAVES + - OAK_LEAVES + - SPRUCE_LEAVES + - ACACIA_LEAVES + 8: + - YELLOW_GLAZED_TERRACOTTA + - LIGHT_BLUE_GLAZED_TERRACOTTA + - GRAY_GLAZED_TERRACOTTA + - PODZOL + - PODZOL + - PODZOL + - ORANGE_GLAZED_TERRACOTTA + 9: + - COAL_ORE + - COAL_ORE + - COAL_ORE + - COAL_ORE + - COAL_ORE + - IRON_ORE + - REDSTONE_ORE + - EMERALD_ORE + - GOLD_ORE + - LAPIS_ORE + - DIAMOND_ORE + - GRASS_BLOCK + - GRASS_BLOCK + - GRASS_BLOCK + - GRASS_BLOCK + - COBWEB + 10: + - PACKED_ICE + - PACKED_ICE + - JUKEBOX + - TNT + - LIGHT_BLUE_CONCRETE + - GLASS + - PACKED_ICE + - PACKED_ICE + - JUKEBOX + - TNT + - LIGHT_BLUE_CONCRETE + - GLASS + - SOUL_SAND + 11: + - NETHERRACK + - NETHERRACK + - NETHERRACK + - NETHER_BRICKS + - NETHER_BRICKS + - NETHERRACK + - NETHERRACK + - NETHERRACK + - NETHER_BRICKS + - NETHER_BRICKS + - NETHER_GOLD_ORE + - NETHER_GOLD_ORE + - CRIMSON_NYLIUM + - WARPED_NYLIUM + - SOUL_SOIL + - CRACKED_NETHER_BRICKS + - RED_NETHER_BRICKS + - NETHER_WART_BLOCK + - CRYING_OBSIDIAN + - MAGMA_BLOCK + 12: + - REDSTONE_BLOCK + - REDSTONE_BLOCK + - REDSTONE_LAMP + - TARGET + - SLIME_BLOCK + - OBSERVER + 13: + - DIRT + - GRASS_PATH + - GRASS_BLOCK + - OAK_SLAB + - BRICK_WALL + - BRICK_STAIRS + 14: + - OAK_PLANKS + - OBSIDIAN + - SPONGE + - BEEHIVE + - DRIED_KELP_BLOCK + 15: + - SANDSTONE + - SANDSTONE_SLAB + - RED_SANDSTONE + - RED_SANDSTONE_SLAB + - RED_TERRACOTTA + - TERRACOTTA + - YELLOW_TERRACOTTA + 16: + - JUNGLE_LOG + - STRIPPED_JUNGLE_LOG + - JUNGLE_WOOD + - STRIPPED_JUNGLE_WOOD + - MOSSY_COBBLESTONE + - MOSSY_COBBLESTONE + - MOSSY_COBBLESTONE + - JUNGLE_LEAVES + - JUNGLE_SLAB + - JUNGLE_TRAPDOOR
\ No newline at end of file |