aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/MylesAndMore/tumble/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/MylesAndMore/tumble/api')
-rw-r--r--src/main/java/com/MylesAndMore/tumble/api/Generator.java40
-rw-r--r--src/main/java/com/MylesAndMore/tumble/api/Layers.java95
2 files changed, 128 insertions, 7 deletions
diff --git a/src/main/java/com/MylesAndMore/tumble/api/Generator.java b/src/main/java/com/MylesAndMore/tumble/api/Generator.java
index 533ee97..f4439b6 100644
--- a/src/main/java/com/MylesAndMore/tumble/api/Generator.java
+++ b/src/main/java/com/MylesAndMore/tumble/api/Generator.java
@@ -1,12 +1,14 @@
package com.MylesAndMore.tumble.api;
+import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
-import org.bukkit.util.BlockVector;
+import org.bukkit.block.BlockFace;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Random;
@@ -45,21 +47,45 @@ public class Generator {
/**
* Generates clumps in a pre-generated layer.
- * @param blocks A list of block Locations that this method is allowed to edit
- * @param materials A list of Materials for the generator to randomly choose from.
+ * @param blockList A list of block Locations that this method is allowed to edit
+ * @param materialList A list of Materials for the generator to randomly choose from.
* Keep in mind that not all Materials may be used, the amount used depends on the size of the layer.
* More Materials = more randomization
*/
- public static void generateClumps(List<Block> blocks, List<Material> materials) {
+ public static void generateClumps(List<Block> blockList, List<Material> materialList) {
// Define random class
Random random = new Random();
- // This for loop will run until there are no blocks left to change
- for (Block aBlock : blocks) {
+ // Define new blocks list so we can manipulate it
+ List<Block> blocks = new ArrayList<>(blockList);
+ // Define new shuffled Materials list
+ List<Material> materials = new ArrayList<>(materialList);
+ Collections.shuffle(materials);
+ // This loop will run until there are no blocks left to change
+ while (blocks.size() > 0) {
// Get a random Material from the provided materials list
Material randomMaterial = materials.get(random.nextInt(materials.size()));
+ // Gets the first Block from the list, to modify
+ Block aBlock = blocks.get(0);
+ // Modifies the block
aBlock.setType(randomMaterial);
// Get the blocks around that and change it to that same material
- // ...
+ if (blocks.contains(aBlock.getRelative(BlockFace.NORTH))) {
+ aBlock.getRelative(BlockFace.NORTH).setType(randomMaterial);
+ blocks.remove(aBlock.getRelative(BlockFace.NORTH));
+ }
+ if (blocks.contains(aBlock.getRelative(BlockFace.SOUTH))) {
+ aBlock.getRelative(BlockFace.SOUTH).setType(randomMaterial);
+ blocks.remove(aBlock.getRelative(BlockFace.SOUTH));
+ }
+ if (blocks.contains(aBlock.getRelative(BlockFace.EAST))) {
+ aBlock.getRelative(BlockFace.EAST).setType(randomMaterial);
+ blocks.remove(aBlock.getRelative(BlockFace.EAST));
+ }
+ if (blocks.contains(aBlock.getRelative(BlockFace.WEST))) {
+ aBlock.getRelative(BlockFace.WEST).setType(randomMaterial);
+ blocks.remove(aBlock.getRelative(BlockFace.WEST));
+ }
+ blocks.remove(aBlock);
}
}
diff --git a/src/main/java/com/MylesAndMore/tumble/api/Layers.java b/src/main/java/com/MylesAndMore/tumble/api/Layers.java
new file mode 100644
index 0000000..b970891
--- /dev/null
+++ b/src/main/java/com/MylesAndMore/tumble/api/Layers.java
@@ -0,0 +1,95 @@
+package com.MylesAndMore.tumble.api;
+
+import org.bukkit.Material;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * This class is dedicated to storing the different types of layers that can be generated.
+ */
+public class Layers {
+
+ public Layers(){
+ matList.add(gen0);
+ matList.add(gen0);
+ matList.add(gen0);
+ matList.add(gen1);
+ matList.add(gen1);
+ matList.add(gen0);
+ matList.add(gen0);
+ matList.add(gen0);
+ matList.add(gen1);
+ matList.add(gen1);
+ matList.add(gen2);
+ }
+
+ // 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()));
+ }
+
+
+ // Begin lists
+
+ // private final List<Material> gen = new ArrayList<>() {{
+ // add(Material.);
+ // }};
+
+ private final 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.COBWEB);
+ add(Material.GRASS_BLOCK);
+ add(Material.GRASS_BLOCK);
+ }};
+
+ private final 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);
+ }};
+
+ private final 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);
+ }};
+
+ private final List<List<Material>> matList = new ArrayList<>();
+
+}