Random Drops (随机掉落-使方块破坏后的物品掉落变得随机)
Random Drops是一个有趣的插件,它使得方块破坏后的物品掉落变得随机!这是我的第一个插件,也是受到了CodedRed的启发,因此所有权归他所有!
- 功能: 使得方块破坏后的物品掉落变得随机
- 配置:
reload: - "&b&o重新加载" - "&c&l随机方块!" blocks: DIRT: - DIRT - DIRT - DIRT - DIAMOND - FLINT - SAND SAND: - SAND - DIRT GRAVEL: - IRON_INGOT
- 用法:
- /randomblock reload - 重新加载插件
- 权限: randomblock.reload
源代码:
package me.Floppy.RandomBlock; import java.util.Random; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.java.JavaPlugin; import net.md_5.bungee.api.ChatColor; public class Main extends JavaPlugin implements Listener { @Override public void onEnable() { this.saveDefaultConfig(); this.getServer().getPluginManager().registerEvents(this, this); } @Override public void onDisable() {} public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (label.equalsIgnoreCase("randomblock")) { if (!sender.hasPermission("randomblock.reload")) { sender.sendMessage(ChatColor.RED + "您无法运行此命令"); return true; } if (args.length == 0) { // /randomblock sender.sendMessage(ChatColor.RED + "用法: /randomblock reload"); return true; } if (args.length > 0) { // /randomblock reload if (args[0].equalsIgnoreCase("reload")) { for (String msg : this.getConfig().getStringList("reload.message")) { sender.sendMessage(ChatColor.translateAlternateColorCodes('&', msg)); } this.reloadConfig(); } } return false; } @EventHandler public void onBlockBreak(BlockBreakEvent event) { this.getConfig().getConfigurationSection("blocks").getKeys(false).forEach(key -> { // dirt if (key.equalsIgnoreCase(event.getBlock().getType().toString())) { ItemStack[] items = new ItemStack[this.getConfig().getStringList("blocks." + key).size()]; ItemStack item = null; int position = 0; Random r = new Random(); for (String i : this.getConfig().getStringList("blocks." + key)) { // DIRT DIR try { item = new ItemStack(Material.matchMaterial(i), r.nextInt(16) + 1); } catch(Exception e) { item = new ItemStack(Material.matchMaterial(key)); } items[position] = item; position++; } int num = r.nextInt(items.length); event.setDropItems(false); World world = event.getPlayer().getWorld(); world.dropItemNaturally(event.getBlock().getLocation(), items[num]); } }); } }
收录