diff --git a/src/main/java/net/brennholz/challenges/RandomDrops.java b/src/main/java/net/brennholz/challenges/RandomDrops.java new file mode 100644 index 0000000..e45f406 --- /dev/null +++ b/src/main/java/net/brennholz/challenges/RandomDrops.java @@ -0,0 +1,59 @@ +package net.brennholz.challenges; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.Random; +import java.util.stream.Collectors; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.configuration.file.FileConfiguration; + +public class RandomDrops { + private final ArrayList BLOCKS; + + private final ArrayList ITEM_DROPS; + + private HashMap drops = new HashMap<>(); + + public RandomDrops() { + this.BLOCKS = (ArrayList)Arrays.stream(Material.values()).filter(mat -> mat.isBlock()).collect(Collectors.toList()); + this.ITEM_DROPS = (ArrayList)Arrays.stream(Material.values()).filter(mat -> (mat.isItem() || mat == Material.BEDROCK)).collect(Collectors.toList()); + } + + public void shuffleItems() { + Collections.shuffle(this.ITEM_DROPS); + ArrayList itemDropsCopy = new ArrayList<>(); + this.ITEM_DROPS.forEach(m -> itemDropsCopy.add(m)); + this.BLOCKS.forEach(mat -> { + int r = (new Random()).nextInt(itemDropsCopy.size() - 1); + this.drops.put(mat, itemDropsCopy.get(r)); + itemDropsCopy.remove(r); + }); + saveItems(); + } + + public void saveItems() { + FileConfiguration config = Challenges.getplugin().getRndDropsConfig(); + config.set("drops", this.drops.entrySet().stream().map(entry -> (new StringBuilder()).append(entry.getKey()).append(":").append(entry.getValue()).toString()).collect(Collectors.toList())); + } + + public void loadItems() { + this.drops.clear(); + FileConfiguration config = Challenges.getplugin().getRndDropsConfig(); + if (config.isList("drops")) { + config.getStringList("drops").forEach(str -> { + String[] materialSplitted = str.split(":"); + this.drops.put(Material.getMaterial(materialSplitted[0]), Material.getMaterial(materialSplitted[1])); + }); + } else { + shuffleItems(); + } + } + + public Material getMaterialFromBlock(Block block) { + return this.drops.get(block.getType()); + } +} + diff --git a/src/main/java/net/brennholz/challenges/SBManager.java b/src/main/java/net/brennholz/challenges/SBManager.java new file mode 100644 index 0000000..923f327 --- /dev/null +++ b/src/main/java/net/brennholz/challenges/SBManager.java @@ -0,0 +1,22 @@ +package net.brennholz.challenges; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.scoreboard.DisplaySlot; +import org.bukkit.scoreboard.Objective; +import org.bukkit.scoreboard.RenderType; +import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.scoreboard.ScoreboardManager; + +public class SBManager { + public void createScoreboard(Player p) { + ScoreboardManager manager = Bukkit.getScoreboardManager(); + Scoreboard sb = manager.getNewScoreboard(); + @SuppressWarnings("deprecation") + Objective TabHP = sb.registerNewObjective("§6Challenges", "health"); + TabHP.setDisplaySlot(DisplaySlot.PLAYER_LIST); + TabHP.setDisplayName("§cHP"); + TabHP.setRenderType(RenderType.HEARTS); + p.setScoreboard(sb); + } +} diff --git a/src/main/resources/backpack.yml b/src/main/resources/backpack.yml new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/main/resources/backpack.yml diff --git a/src/main/resources/rnddrops.yml b/src/main/resources/rnddrops.yml new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/main/resources/rnddrops.yml