Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package io.github.fhadiel.NoPortalDestroy;
- import java.util.List;
- import java.util.ArrayList;
- import org.bukkit.Material;
- import org.bukkit.block.Block;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.material.Dispenser;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.BlockDispenseEvent;
- import org.bukkit.event.player.PlayerBucketEmptyEvent;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.plugin.java.JavaPlugin;
- public class Main extends JavaPlugin implements Listener {
- ArrayList<Material> preventBlockBreak = new ArrayList<>();
- ArrayList<Material> preventItemDispense = new ArrayList<>();
- FileConfiguration config = getConfig();
- @Override
- public void onEnable() {
- getServer().getPluginManager().registerEvents(this, this);
- saveDefaultConfig();
- updateConfig(getConfig().getStringList("preventbreak"), getConfig().getStringList("preventdispensing"));
- log("Preventing these blocks from breaking: " + preventBlockBreak.toString());
- }
- @EventHandler
- public void onPlaceWater(PlayerBucketEmptyEvent e) {
- Block clickedBlock = e.getBlockClicked();
- Block replacedBlock = clickedBlock.getRelative(e.getBlockFace());
- if (isPreventBreakBlock(replacedBlock)) {
- e.setCancelled(true);
- log("Prevented " + e.getPlayer().getName() + " from breaking " + replacedBlock.getType().name() + " using a bucket at " + replacedBlock.getLocation().getBlockX() + " " + replacedBlock.getLocation().getBlockY() + " " + replacedBlock.getLocation().getBlockZ());
- }
- }
- @EventHandler
- public void onWaterDispenser(BlockDispenseEvent e) {
- if (e.getBlock().getType().equals(Material.DISPENSER)) {
- Dispenser dispenser = (Dispenser) e.getBlock().getState().getData();
- Block inFrontOfDispenser = e.getBlock().getRelative(dispenser.getFacing());
- ItemStack itemInDispenser = e.getItem();
- if (isPreventBreakBlock(inFrontOfDispenser) && isPreventDispenseItem(itemInDispenser)) {
- e.setCancelled(true);
- log("Prevented dispenser from breaking " + inFrontOfDispenser.getType().name() + "using " + itemInDispenser.getType().name() + " at " + inFrontOfDispenser.getLocation().getBlockX() + " " + inFrontOfDispenser.getLocation().getBlockY() + " " + inFrontOfDispenser.getLocation().getBlockZ());
- }
- }
- }
- public void updateConfig(List<String> preventBreakBlocks, List<String> preventDispenseItems) {
- ArrayList<Material> preventBreakBlockArray = new ArrayList<>();
- ArrayList<Material> preventDispenseItemsArray = new ArrayList<>();
- for (String block : preventBreakBlocks) {
- Material b = Material.getMaterial(block);
- if (!(b instanceof Material)) {
- log("There's no block called " + b.name());
- } else {
- preventBreakBlockArray.add(b);
- }
- }
- for (String item : preventDispenseItems) {
- Material b = Material.getMaterial(item);
- if (!(b instanceof Material)) {
- log("There's no item called " + b.name());
- } else {
- preventDispenseItemsArray.add(b);
- }
- }
- preventBlockBreak = preventBreakBlockArray;
- preventItemDispense = preventDispenseItemsArray;
- }
- public boolean isPreventBreakBlock(Block replacedBlock) {
- if (preventBlockBreak.contains(replacedBlock.getType())) {
- return true;
- }
- return false;
- }
- public boolean isPreventDispenseItem(ItemStack item) {
- if (preventBlockBreak.contains(item.getType())) {
- return true;
- }
- return false;
- }
- public void log(String msg) {
- if(config.getBoolean("logging")) getLogger().info(msg);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement