Add BlockBlockUseEvent to restrict usage of blocked items and blocks
This commit is contained in:
parent
f80645e2fe
commit
05fd3beb9c
|
|
@ -42,6 +42,7 @@ public final class PlayerUtils extends JavaPlugin {
|
|||
pluginManager.registerEvents(new TeleportEvent(), this);
|
||||
pluginManager.registerEvents(new GoatHornEvent(logger), this);
|
||||
pluginManager.registerEvents(new LimitArmorStands(this, logger), this);
|
||||
pluginManager.registerEvents(new BlockBlockUseEvent(logger), this);
|
||||
|
||||
RotateBlockEvent rotateBlockEvent = new RotateBlockEvent(logger);
|
||||
pluginManager.registerEvents(rotateBlockEvent, this);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.alttd.playerutils.config;
|
||||
|
||||
import com.alttd.playerutils.util.Logger;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
|
@ -157,4 +156,14 @@ public class Messages extends AbstractConfig {
|
|||
GAVE_FINAL_KEY = config.getString(prefix, "gave-final-key", GAVE_FINAL_KEY);
|
||||
}
|
||||
}
|
||||
|
||||
public static class BLOCK_BLOCK_USE {
|
||||
private static final String prefix = "block-block-use.";
|
||||
public static String BLOCKED = "<red>You are not powerful enough!</red>";
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static void load() {
|
||||
BLOCKED = config.getString(prefix, "blocked", BLOCKED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,68 @@
|
|||
package com.alttd.playerutils.event_listeners;
|
||||
|
||||
import com.alttd.playerutils.config.Messages;
|
||||
import com.alttd.playerutils.util.Logger;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Tag;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockCanBuildEvent;
|
||||
import org.bukkit.event.block.BlockDispenseEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class BlockBlockUseEvent implements Listener {
|
||||
|
||||
private final Logger logger;
|
||||
|
||||
public BlockBlockUseEvent(Logger logger) {
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onBlockPlace(BlockCanBuildEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
if (player != null && player.hasPermission("playerutils.block-block-use.bypass")) {
|
||||
return;
|
||||
}
|
||||
if (isNotBlocked(event.getMaterial())) {
|
||||
return;
|
||||
}
|
||||
event.setBuildable(false);
|
||||
if (player != null) {
|
||||
player.sendRichMessage(Messages.BLOCK_BLOCK_USE.BLOCKED);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onItemUse(PlayerInteractEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
if (player.hasPermission("playerutils.block-block-use.bypass")) {
|
||||
return;
|
||||
}
|
||||
if (!event.getAction().isRightClick()) {
|
||||
return;
|
||||
}
|
||||
ItemStack item = event.getItem();
|
||||
if (item == null || isNotBlocked(item.getType())) {
|
||||
return;
|
||||
}
|
||||
player.sendRichMessage(Messages.BLOCK_BLOCK_USE.BLOCKED);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDispenserUse(BlockDispenseEvent event) {
|
||||
if (isNotBlocked(event.getItem().getType())) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
public boolean isNotBlocked(Material type) {
|
||||
return !type.equals(Material.BEDROCK) && !type.equals(Material.SPAWNER) && !type.equals(Material.BARRIER) && !type.translationKey().endsWith("_spawn_egg");
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user