mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2024-11-22 10:45:22 +01:00
Implements flags as enum so flags are protected.
This commit is contained in:
parent
ffbf938a32
commit
645b4eb610
@ -11,7 +11,6 @@ import us.tastybento.bskyblock.database.managers.island.IslandsManager;
|
||||
import us.tastybento.bskyblock.generators.IslandWorld;
|
||||
import us.tastybento.bskyblock.listeners.JoinLeaveListener;
|
||||
import us.tastybento.bskyblock.listeners.PanelListenerManager;
|
||||
import us.tastybento.bskyblock.lists.Flags;
|
||||
import us.tastybento.bskyblock.managers.AddonsManager;
|
||||
import us.tastybento.bskyblock.managers.CommandsManager;
|
||||
import us.tastybento.bskyblock.managers.FlagsManager;
|
||||
@ -92,7 +91,6 @@ public class BSkyBlock extends JavaPlugin {
|
||||
|
||||
// Load Flags
|
||||
flagsManager = new FlagsManager(plugin);
|
||||
new Flags(plugin);
|
||||
|
||||
// Load islands from database
|
||||
islandsManager.load();
|
||||
|
@ -6,16 +6,16 @@ import org.bukkit.event.Listener;
|
||||
|
||||
import us.tastybento.bskyblock.BSkyBlock;
|
||||
import us.tastybento.bskyblock.api.panels.PanelItem;
|
||||
import us.tastybento.bskyblock.lists.Flaggs;
|
||||
import us.tastybento.bskyblock.lists.Flags;
|
||||
|
||||
public class Flag implements Comparable<Flag> {
|
||||
|
||||
private final Flaggs id;
|
||||
private final Flags id;
|
||||
private final PanelItem icon;
|
||||
private final Listener listener;
|
||||
private boolean defaultSetting;
|
||||
|
||||
public Flag(BSkyBlock plugin, Flaggs id2, PanelItem icon, Listener listener, boolean defaultSetting) {
|
||||
public Flag(BSkyBlock plugin, Flags id2, PanelItem icon, Listener listener, boolean defaultSetting) {
|
||||
this.id = id2;
|
||||
this.icon = icon;
|
||||
this.listener = listener;
|
||||
@ -24,7 +24,7 @@ public class Flag implements Comparable<Flag> {
|
||||
plugin.getFlagsManager().registerFlag(this);
|
||||
}
|
||||
|
||||
public Flaggs getID() {
|
||||
public Flags getID() {
|
||||
return id;
|
||||
}
|
||||
|
||||
|
@ -7,16 +7,16 @@ import org.bukkit.inventory.ItemStack;
|
||||
import us.tastybento.bskyblock.BSkyBlock;
|
||||
import us.tastybento.bskyblock.api.panels.PanelItem;
|
||||
import us.tastybento.bskyblock.api.panels.builders.PanelItemBuilder;
|
||||
import us.tastybento.bskyblock.lists.Flaggs;
|
||||
import us.tastybento.bskyblock.lists.Flags;
|
||||
|
||||
public class FlagBuilder {
|
||||
|
||||
private Flaggs id;
|
||||
private Flags id;
|
||||
private PanelItem icon;
|
||||
private Listener listener;
|
||||
private boolean defaultSetting;
|
||||
|
||||
public FlagBuilder id(Flaggs flag) {
|
||||
public FlagBuilder id(Flags flag) {
|
||||
this.id = flag;
|
||||
return this;
|
||||
}
|
||||
|
@ -16,15 +16,14 @@ import org.bukkit.entity.Entity;
|
||||
|
||||
import us.tastybento.bskyblock.BSkyBlock;
|
||||
import us.tastybento.bskyblock.api.commands.User;
|
||||
import us.tastybento.bskyblock.api.configuration.ConfigEntry;
|
||||
import us.tastybento.bskyblock.api.events.IslandBaseEvent;
|
||||
import us.tastybento.bskyblock.api.events.island.IslandEvent;
|
||||
import us.tastybento.bskyblock.api.events.island.IslandEvent.IslandLockEvent;
|
||||
import us.tastybento.bskyblock.api.events.island.IslandEvent.IslandUnlockEvent;
|
||||
import us.tastybento.bskyblock.api.events.island.IslandEvent.Reason;
|
||||
import us.tastybento.bskyblock.api.flags.Flag;
|
||||
import us.tastybento.bskyblock.database.objects.adapters.Adapter;
|
||||
import us.tastybento.bskyblock.database.objects.adapters.FlagSerializer;
|
||||
import us.tastybento.bskyblock.lists.Flags;
|
||||
import us.tastybento.bskyblock.managers.RanksManager;
|
||||
import us.tastybento.bskyblock.util.Util;
|
||||
|
||||
@ -83,7 +82,7 @@ public class Island implements DataObject {
|
||||
|
||||
//// Protection flags ////
|
||||
@Adapter(FlagSerializer.class)
|
||||
private HashMap<Flag, Integer> flags = new HashMap<>();
|
||||
private HashMap<Flags, Integer> flags = new HashMap<>();
|
||||
|
||||
private int levelHandicap;
|
||||
private Location spawnPoint;
|
||||
@ -158,7 +157,7 @@ public class Island implements DataObject {
|
||||
* @param flag
|
||||
* @return flag rank. Players must have at least this rank to bypass this flag
|
||||
*/
|
||||
public int getFlagReq(Flag flag){
|
||||
public int getFlagReq(Flags flag){
|
||||
if(flags.containsKey(flag)) {
|
||||
return flags.get(flag);
|
||||
} else {
|
||||
@ -170,7 +169,7 @@ public class Island implements DataObject {
|
||||
/**
|
||||
* @return the flags
|
||||
*/
|
||||
public HashMap<Flag, Integer> getFlags() {
|
||||
public HashMap<Flags, Integer> getFlags() {
|
||||
return flags;
|
||||
}
|
||||
|
||||
@ -418,7 +417,7 @@ public class Island implements DataObject {
|
||||
* @param flag
|
||||
* @return true if allowed, false if not
|
||||
*/
|
||||
public boolean isAllowed(Flag flag) {
|
||||
public boolean isAllowed(Flags flag) {
|
||||
return this.getFlagReq(flag) >= 0 ? true : false;
|
||||
}
|
||||
|
||||
@ -428,7 +427,7 @@ public class Island implements DataObject {
|
||||
* @param flag - flag
|
||||
* @return true if allowed, false if not
|
||||
*/
|
||||
public boolean isAllowed(User user, Flag flag) {
|
||||
public boolean isAllowed(User user, Flags flag) {
|
||||
//Bukkit.getLogger().info("DEBUG: " + flag.getID() + " user score = " + getRank(user) + " flag req = "+ this.getFlagReq(flag));
|
||||
return (this.getRank(user) >= this.getFlagReq(flag)) ? true : false;
|
||||
}
|
||||
@ -507,14 +506,14 @@ public class Island implements DataObject {
|
||||
* @param flag
|
||||
* @param value - rank value. If the flag applies to the island, a positive number = true, negative = false
|
||||
*/
|
||||
public void setFlag(Flag flag, int value){
|
||||
public void setFlag(Flags flag, int value){
|
||||
flags.put(flag, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param flags the flags to set
|
||||
*/
|
||||
public void setFlags(HashMap<Flag, Integer> flags) {
|
||||
public void setFlags(HashMap<Flags, Integer> flags) {
|
||||
this.flags = flags;
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,7 @@ import us.tastybento.bskyblock.BSkyBlock;
|
||||
import us.tastybento.bskyblock.api.commands.User;
|
||||
import us.tastybento.bskyblock.api.flags.Flag;
|
||||
import us.tastybento.bskyblock.database.objects.Island;
|
||||
import us.tastybento.bskyblock.lists.Flags;
|
||||
|
||||
/**
|
||||
* Abstract class for flag listeners. Provides common code.
|
||||
@ -122,23 +123,23 @@ public abstract class AbstractFlagListener implements Listener {
|
||||
* Generic place blocks checker
|
||||
* @param e
|
||||
* @param loc
|
||||
* @param flag
|
||||
* @param redstone
|
||||
* @return true if the check is okay, false if it was disallowed
|
||||
*/
|
||||
public boolean checkIsland(Event e, Location loc, Flag flag) {
|
||||
return checkIsland(e, loc, flag, false);
|
||||
public boolean checkIsland(Event e, Location loc, Flags redstone) {
|
||||
return checkIsland(e, loc, redstone, false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generic place blocks checker
|
||||
* Check if flag is allowed
|
||||
* @param e
|
||||
* @param loc
|
||||
* @param silent - if true, no attempt is made to tell the user
|
||||
* @return true if the check is okay, false if it was disallowed
|
||||
*/
|
||||
public boolean checkIsland(Event e, Location loc, Flag flag, boolean silent) {
|
||||
public boolean checkIsland(Event e, Location loc, Flags flag, boolean silent) {
|
||||
|
||||
// If the user is not set already, try to get it from the event
|
||||
if (user == null) {
|
||||
@ -169,7 +170,7 @@ public abstract class AbstractFlagListener implements Listener {
|
||||
}
|
||||
|
||||
// The player is in the world, but not on an island, so general world settings apply
|
||||
if (!flag.isAllowed()) {
|
||||
if (!isAllowed(flag)) {
|
||||
noGo(e, silent);
|
||||
user = null;
|
||||
return false;
|
||||
@ -179,4 +180,16 @@ public abstract class AbstractFlagListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the flag for this ID
|
||||
* @param flag
|
||||
* @return Flag denoted by the id
|
||||
*/
|
||||
protected Flag id(Flags flag) {
|
||||
return plugin.getFlagsManager().getFlagByID(flag);
|
||||
}
|
||||
|
||||
protected boolean isAllowed(Flags flag) {
|
||||
return plugin.getFlagsManager().isAllowed(flag);
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,6 @@ import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
|
||||
import us.tastybento.bskyblock.BSkyBlock;
|
||||
import us.tastybento.bskyblock.lists.Flaggs;
|
||||
import us.tastybento.bskyblock.lists.Flags;
|
||||
|
||||
/**
|
||||
@ -33,7 +32,7 @@ public class BlockInteractionListener extends AbstractFlagListener {
|
||||
}
|
||||
switch (e.getClickedBlock().getType()) {
|
||||
case ANVIL:
|
||||
checkIsland(e, e.getClickedBlock().getLocation(), plugin.getFlagsManager().getFlagByID(Flaggs.ANVIL));
|
||||
checkIsland(e, e.getClickedBlock().getLocation(), Flags.ANVIL);
|
||||
break;
|
||||
case BEACON:
|
||||
checkIsland(e, e.getClickedBlock().getLocation(), Flags.BEACON);
|
||||
|
@ -107,7 +107,7 @@ public class BreakBlocksListener extends AbstractFlagListener {
|
||||
});
|
||||
|
||||
// The player is in the world, but not on an island, so general world settings apply
|
||||
if (!Flags.BREAK_BLOCKS.isAllowed()) {
|
||||
if (!isAllowed(Flags.BREAK_BLOCKS)) {
|
||||
e.setCancelled(true);
|
||||
user.sendMessage("protection.protected");
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ public class FireListener extends AbstractFlagListener {
|
||||
if (!x.isAllowed(Flags.FIRE_SPREAD)) e.setCancelled(true);
|
||||
});
|
||||
// If not on an island, check the default setting
|
||||
if (!island.isPresent() && !Flags.FIRE_SPREAD.isAllowed()) e.setCancelled(true);
|
||||
if (!island.isPresent() && !isAllowed(Flags.FIRE_SPREAD)) e.setCancelled(true);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -69,7 +69,7 @@ public class FireListener extends AbstractFlagListener {
|
||||
if (!x.isAllowed(Flags.FIRE_SPREAD)) e.setCancelled(true);
|
||||
});
|
||||
// If not on an island, check the default setting
|
||||
if (!island.isPresent() && !Flags.FIRE_SPREAD.isAllowed()) e.setCancelled(true);
|
||||
if (!island.isPresent() && !isAllowed(Flags.FIRE_SPREAD)) e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -92,7 +92,7 @@ public class FireListener extends AbstractFlagListener {
|
||||
if (!x.isAllowed(Flags.FIRE)) e.setCancelled(true);
|
||||
});
|
||||
// If not on an island, check the default setting
|
||||
if (!island.isPresent() && !Flags.FIRE.isAllowed()) e.setCancelled(true);
|
||||
if (!island.isPresent() && !isAllowed(Flags.FIRE)) e.setCancelled(true);
|
||||
|
||||
}
|
||||
|
||||
@ -145,7 +145,7 @@ public class FireListener extends AbstractFlagListener {
|
||||
if (!x.isAllowed(Flags.FIRE)) e.setCancelled(true);
|
||||
});
|
||||
// If not on an island, check the default setting
|
||||
if (!island.isPresent() && !Flags.FIRE.isAllowed()) e.setCancelled(true);
|
||||
if (!island.isPresent() && !isAllowed(Flags.FIRE)) e.setCancelled(true);
|
||||
|
||||
// If either of these canceled the event, return
|
||||
if (e.isCancelled()) return;
|
||||
|
@ -32,7 +32,6 @@ import org.bukkit.potion.PotionEffect;
|
||||
|
||||
import us.tastybento.bskyblock.BSkyBlock;
|
||||
import us.tastybento.bskyblock.api.commands.User;
|
||||
import us.tastybento.bskyblock.api.flags.Flag;
|
||||
import us.tastybento.bskyblock.lists.Flags;
|
||||
|
||||
/**
|
||||
@ -71,7 +70,7 @@ public class HurtingListener extends AbstractFlagListener {
|
||||
* @param damager
|
||||
* @param flag
|
||||
*/
|
||||
private void respond(Event event, Entity damager, Flag flag) {
|
||||
private void respond(Event event, Entity damager, Flags flag) {
|
||||
// Get the attacker
|
||||
if (damager instanceof Player) {
|
||||
setUser(User.getInstance(damager)).checkIsland(event, damager.getLocation(), flag);
|
||||
|
@ -65,13 +65,13 @@ public class MobSpawnListener extends AbstractFlagListener {
|
||||
} else {
|
||||
// Outside of the island
|
||||
if (e.getEntity() instanceof Monster || e.getEntity() instanceof Slime) {
|
||||
if (!Flags.MOB_SPAWN.isAllowed()) {
|
||||
if (!isAllowed(Flags.MOB_SPAWN)) {
|
||||
// Mobs not allowed to spawn
|
||||
e.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
} else if (e.getEntity() instanceof Animals) {
|
||||
if (!Flags.MONSTER_SPAWN.isAllowed()) {
|
||||
if (!isAllowed(Flags.MONSTER_SPAWN)) {
|
||||
// Mobs not allowed to spawn
|
||||
e.setCancelled(true);
|
||||
return;
|
||||
|
@ -22,7 +22,6 @@ import org.bukkit.potion.PotionEffect;
|
||||
|
||||
import us.tastybento.bskyblock.BSkyBlock;
|
||||
import us.tastybento.bskyblock.api.commands.User;
|
||||
import us.tastybento.bskyblock.api.flags.Flag;
|
||||
import us.tastybento.bskyblock.lists.Flags;
|
||||
|
||||
/**
|
||||
@ -49,14 +48,14 @@ public class PVPListener extends AbstractFlagListener {
|
||||
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
||||
public void onEntityDamage(final EntityDamageByEntityEvent e) {
|
||||
if (e.getEntity() instanceof Player) {
|
||||
Flag flag = Flags.PVP_OVERWORLD;
|
||||
Flags flag = Flags.PVP_OVERWORLD;
|
||||
if (e.getEntity().getWorld().equals(plugin.getIslandWorldManager().getNetherWorld())) flag = Flags.PVP_NETHER;
|
||||
else if (e.getEntity().getWorld().equals(plugin.getIslandWorldManager().getEndWorld())) flag = Flags.PVP_END;
|
||||
respond(e, e.getDamager(), flag);
|
||||
}
|
||||
}
|
||||
|
||||
private void respond(Event event, Entity damager, Flag flag) {
|
||||
private void respond(Event event, Entity damager, Flags flag) {
|
||||
// Get the attacker
|
||||
if (damager instanceof Player) {
|
||||
setUser(User.getInstance(damager)).checkIsland(event, damager.getLocation(), flag);
|
||||
@ -77,7 +76,7 @@ public class PVPListener extends AbstractFlagListener {
|
||||
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
||||
public void onFishing(PlayerFishEvent e) {
|
||||
if (e.getCaught() != null && e.getCaught() instanceof Player) {
|
||||
Flag flag = Flags.PVP_OVERWORLD;
|
||||
Flags flag = Flags.PVP_OVERWORLD;
|
||||
if (e.getCaught().getWorld().equals(plugin.getIslandWorldManager().getNetherWorld())) flag = Flags.PVP_NETHER;
|
||||
else if (e.getCaught().getWorld().equals(plugin.getIslandWorldManager().getEndWorld())) flag = Flags.PVP_END;
|
||||
if (checkIsland(e, e.getCaught().getLocation(), flag)) {
|
||||
@ -94,7 +93,7 @@ public class PVPListener extends AbstractFlagListener {
|
||||
@EventHandler(priority = EventPriority.LOW, ignoreCancelled=true)
|
||||
public void onSplashPotionSplash(final PotionSplashEvent e) {
|
||||
// Deduce the world
|
||||
Flag flag = Flags.PVP_OVERWORLD;
|
||||
Flags flag = Flags.PVP_OVERWORLD;
|
||||
if (e.getPotion().getWorld().equals(plugin.getIslandWorldManager().getNetherWorld())) flag = Flags.PVP_NETHER;
|
||||
else if (e.getPotion().getWorld().equals(plugin.getIslandWorldManager().getEndWorld())) flag = Flags.PVP_END;
|
||||
|
||||
@ -142,7 +141,7 @@ public class PVPListener extends AbstractFlagListener {
|
||||
|
||||
if (e.getCause().equals(DamageCause.ENTITY_ATTACK) && thrownPotions.containsKey(e.getDamager().getEntityId())) {
|
||||
// Deduce the world
|
||||
Flag flag = Flags.PVP_OVERWORLD;
|
||||
Flags flag = Flags.PVP_OVERWORLD;
|
||||
if (e.getEntity().getWorld().equals(plugin.getIslandWorldManager().getNetherWorld())) flag = Flags.PVP_NETHER;
|
||||
else if (e.getEntity().getWorld().equals(plugin.getIslandWorldManager().getEndWorld())) flag = Flags.PVP_END;
|
||||
|
||||
|
@ -1,51 +0,0 @@
|
||||
package us.tastybento.bskyblock.lists;
|
||||
|
||||
|
||||
public enum Flaggs {
|
||||
ANVIL,
|
||||
ARMOR_STAND,
|
||||
BEACON,
|
||||
BED,
|
||||
BREAK_BLOCKS,
|
||||
BREEDING,
|
||||
BREWING,
|
||||
BUCKET,
|
||||
CHEST,
|
||||
CHORUS_FRUIT,
|
||||
COLLECT_LAVA,
|
||||
COLLECT_WATER,
|
||||
CRAFTING,
|
||||
CROP_TRAMPLE,
|
||||
DOOR,
|
||||
EGGS,
|
||||
ENCHANTING,
|
||||
ENDER_PEARL,
|
||||
ENTER_EXIT_MESSAGES,
|
||||
FIRE,
|
||||
FIRE_EXTINGUISH,
|
||||
FIRE_SPREAD,
|
||||
FURNACE,
|
||||
GATE,
|
||||
HURT_MOBS,
|
||||
HURT_MONSTERS,
|
||||
ITEM_DROP,
|
||||
ITEM_PICKUP,
|
||||
LEASH,
|
||||
LEVER_BUTTON,
|
||||
MILKING,
|
||||
MOB_SPAWN,
|
||||
MONSTER_SPAWN,
|
||||
MOUNT_INVENTORY,
|
||||
MUSIC,
|
||||
PLACE_BLOCKS,
|
||||
PORTAL,
|
||||
PRESSURE_PLATE,
|
||||
PVP_END,
|
||||
PVP_NETHER,
|
||||
PVP_OVERWORLD,
|
||||
REDSTONE,
|
||||
RIDING,
|
||||
SHEARING,
|
||||
SPAWN_EGGS,
|
||||
TRADING
|
||||
}
|
@ -1,128 +1,51 @@
|
||||
package us.tastybento.bskyblock.lists;
|
||||
|
||||
import org.bukkit.Material;
|
||||
|
||||
import us.tastybento.bskyblock.BSkyBlock;
|
||||
import us.tastybento.bskyblock.api.flags.FlagBuilder;
|
||||
import us.tastybento.bskyblock.listeners.flags.BlockInteractionListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.BreakBlocksListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.BreedingListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.BucketListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.EggListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.EntityInteractListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.FireListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.HurtingListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.InventoryListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.ItemDropPickUpListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.LeashListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.PVPListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.PhysicalInteractionListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.PlaceBlocksListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.PortalListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.ShearingListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.TeleportationListener;
|
||||
|
||||
/**
|
||||
* Protection flags
|
||||
* @author tastybento
|
||||
*
|
||||
*/
|
||||
|
||||
public class Flags {
|
||||
|
||||
private BSkyBlock p;
|
||||
|
||||
public Flags(BSkyBlock plugin) {
|
||||
p = plugin;
|
||||
|
||||
// Break and place blocks
|
||||
new FlagBuilder().id(Flaggs.BREAK_BLOCKS).icon(Material.STONE).listener(new BreakBlocksListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.PLACE_BLOCKS).icon(Material.DIRT).listener(new PlaceBlocksListener(p)).build(p);
|
||||
|
||||
// Block interactions - all use BlockInteractionListener()
|
||||
new FlagBuilder().id(Flaggs.ANVIL).icon(Material.ANVIL).listener(new BlockInteractionListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.BEACON).icon(Material.BEACON).build(p);
|
||||
new FlagBuilder().id(Flaggs.BED).icon(Material.BED).build(p);
|
||||
new FlagBuilder().id(Flaggs.BREWING).icon(Material.BREWING_STAND_ITEM).build(p);
|
||||
new FlagBuilder().id(Flaggs.CHEST).icon(Material.CHEST).build(p);
|
||||
new FlagBuilder().id(Flaggs.DOOR).allowedByDefault(true).icon(Material.WOODEN_DOOR).build(p);
|
||||
new FlagBuilder().id(Flaggs.CRAFTING).allowedByDefault(true).icon(Material.WORKBENCH).build(p);
|
||||
new FlagBuilder().id(Flaggs.ENCHANTING).allowedByDefault(true).icon(Material.ENCHANTMENT_TABLE).build(p);
|
||||
new FlagBuilder().id(Flaggs.FURNACE).icon(Material.FURNACE).build(p);
|
||||
new FlagBuilder().id(Flaggs.GATE).allowedByDefault(true).icon(Material.FENCE_GATE).build(p);
|
||||
new FlagBuilder().id(Flaggs.MUSIC).icon(Material.JUKEBOX).build(p);
|
||||
new FlagBuilder().id(Flaggs.LEVER_BUTTON).icon(Material.LEVER).build(p);
|
||||
new FlagBuilder().id(Flaggs.REDSTONE).icon(Material.REDSTONE).build(p);
|
||||
new FlagBuilder().id(Flaggs.SPAWN_EGGS).icon(Material.MONSTER_EGG).build(p);
|
||||
|
||||
// Entity interactions
|
||||
new FlagBuilder().id(Flaggs.ARMOR_STAND).icon(Material.ARMOR_STAND).listener(new EntityInteractListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.RIDING).icon(Material.GOLD_BARDING).build(p);
|
||||
new FlagBuilder().id(Flaggs.TRADING).allowedByDefault(true).icon(Material.EMERALD).build(p);
|
||||
|
||||
// Breeding
|
||||
new FlagBuilder().id(Flaggs.BREEDING).icon(Material.CARROT).listener(new BreedingListener(p)).build(p);
|
||||
|
||||
// Buckets. All bucket use is covered by one listener
|
||||
new FlagBuilder().id(Flaggs.BUCKET).icon(Material.BUCKET).listener(new BucketListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.COLLECT_LAVA).icon(Material.LAVA_BUCKET).build(p);
|
||||
new FlagBuilder().id(Flaggs.COLLECT_WATER).icon(Material.WATER_BUCKET).build(p);
|
||||
new FlagBuilder().id(Flaggs.MILKING).icon(Material.MILK_BUCKET).build(p);
|
||||
|
||||
// Chorus Fruit and Enderpearls
|
||||
new FlagBuilder().id(Flaggs.CHORUS_FRUIT).icon(Material.CHORUS_FRUIT).listener(new TeleportationListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.ENDER_PEARL).icon(Material.ENDER_PEARL).build(p);
|
||||
|
||||
// Physical interactions
|
||||
new FlagBuilder().id(Flaggs.CROP_TRAMPLE).icon(Material.WHEAT).listener(new PhysicalInteractionListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.PRESSURE_PLATE).icon(Material.GOLD_PLATE).build(p);
|
||||
|
||||
// Egg throwing
|
||||
new FlagBuilder().id(Flaggs.EGGS).icon(Material.EGG).listener(new EggListener(p)).build(p);
|
||||
|
||||
/*
|
||||
* Fire
|
||||
* I'll take you to burn.
|
||||
* Fire
|
||||
* I'll take you to learn.
|
||||
* You gonna burn, burn, burn
|
||||
* Fire
|
||||
* I'll take you to burn
|
||||
* - The Crazy World of Arthur Brown
|
||||
*/
|
||||
new FlagBuilder().id(Flaggs.FIRE).icon(Material.FLINT_AND_STEEL).listener(new FireListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.FIRE_EXTINGUISH).icon(Material.POTION).build(p);
|
||||
new FlagBuilder().id(Flaggs.FIRE_SPREAD).icon(Material.FIREWORK_CHARGE).build(p);
|
||||
|
||||
// Inventories
|
||||
new FlagBuilder().id(Flaggs.MOUNT_INVENTORY).icon(Material.IRON_BARDING).listener(new InventoryListener(p)).build(p);
|
||||
|
||||
// Hurting things
|
||||
new FlagBuilder().id(Flaggs.HURT_MOBS).icon(Material.STONE_SWORD).listener(new HurtingListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.HURT_MONSTERS).icon(Material.WOOD_SWORD).build(p);
|
||||
|
||||
// Leashes
|
||||
new FlagBuilder().id(Flaggs.LEASH).icon(Material.LEASH).listener(new LeashListener(p)).build(p);
|
||||
|
||||
// Portal use protection
|
||||
new FlagBuilder().id(Flaggs.PORTAL).icon(Material.OBSIDIAN).listener(new PortalListener(p)).build(p);
|
||||
|
||||
// Shearing
|
||||
new FlagBuilder().id(Flaggs.SHEARING).icon(Material.SHEARS).listener(new ShearingListener(p)).build(p);
|
||||
|
||||
// Item pickup or drop
|
||||
new FlagBuilder().id(Flaggs.ITEM_DROP).icon(Material.DIRT).allowedByDefault(true).listener(new ItemDropPickUpListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.ITEM_PICKUP).icon(Material.DIRT).build(p);
|
||||
|
||||
/*
|
||||
* Non-protection flags
|
||||
*/
|
||||
// PVP
|
||||
new FlagBuilder().id(Flaggs.PVP_OVERWORLD).icon(Material.ARROW).listener(new PVPListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.PVP_NETHER).icon(Material.IRON_AXE).build(p);
|
||||
new FlagBuilder().id(Flaggs.PVP_END).icon(Material.END_CRYSTAL).build(p);
|
||||
new FlagBuilder().id(Flaggs.ENTER_EXIT_MESSAGES).icon(Material.DIRT).allowedByDefault(true).build(p);
|
||||
new FlagBuilder().id(Flaggs.MOB_SPAWN).icon(Material.APPLE).allowedByDefault(true).build(p);
|
||||
new FlagBuilder().id(Flaggs.MONSTER_SPAWN).icon(Material.MOB_SPAWNER).allowedByDefault(true).build(p);
|
||||
}
|
||||
public enum Flags {
|
||||
ANVIL,
|
||||
ARMOR_STAND,
|
||||
BEACON,
|
||||
BED,
|
||||
BREAK_BLOCKS,
|
||||
BREEDING,
|
||||
BREWING,
|
||||
BUCKET,
|
||||
CHEST,
|
||||
CHORUS_FRUIT,
|
||||
COLLECT_LAVA,
|
||||
COLLECT_WATER,
|
||||
CRAFTING,
|
||||
CROP_TRAMPLE,
|
||||
DOOR,
|
||||
EGGS,
|
||||
ENCHANTING,
|
||||
ENDER_PEARL,
|
||||
ENTER_EXIT_MESSAGES,
|
||||
FIRE,
|
||||
FIRE_EXTINGUISH,
|
||||
FIRE_SPREAD,
|
||||
FURNACE,
|
||||
GATE,
|
||||
HURT_MOBS,
|
||||
HURT_MONSTERS,
|
||||
ITEM_DROP,
|
||||
ITEM_PICKUP,
|
||||
LEASH,
|
||||
LEVER_BUTTON,
|
||||
MILKING,
|
||||
MOB_SPAWN,
|
||||
MONSTER_SPAWN,
|
||||
MOUNT_INVENTORY,
|
||||
MUSIC,
|
||||
PLACE_BLOCKS,
|
||||
PORTAL,
|
||||
PRESSURE_PLATE,
|
||||
PVP_END,
|
||||
PVP_NETHER,
|
||||
PVP_OVERWORLD,
|
||||
REDSTONE,
|
||||
RIDING,
|
||||
SHEARING,
|
||||
SPAWN_EGGS,
|
||||
TRADING
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ import us.tastybento.bskyblock.listeners.flags.PlaceBlocksListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.PortalListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.ShearingListener;
|
||||
import us.tastybento.bskyblock.listeners.flags.TeleportationListener;
|
||||
import us.tastybento.bskyblock.lists.Flaggs;
|
||||
import us.tastybento.bskyblock.lists.Flags;
|
||||
|
||||
public class FlagsManager {
|
||||
|
||||
@ -38,7 +38,7 @@ public class FlagsManager {
|
||||
registerFlags();
|
||||
}
|
||||
|
||||
private HashMap<Flaggs, Flag> flags = new HashMap<>();
|
||||
private HashMap<Flags, Flag> flags = new HashMap<>();
|
||||
|
||||
public void registerFlag(Flag flag) {
|
||||
//TODO all the security checks
|
||||
@ -48,11 +48,11 @@ public class FlagsManager {
|
||||
flag.getListener().ifPresent(l -> p.getServer().getPluginManager().registerEvents(l, p));
|
||||
}
|
||||
|
||||
public HashMap<Flaggs, Flag> getFlags() {
|
||||
public HashMap<Flags, Flag> getFlags() {
|
||||
return flags;
|
||||
}
|
||||
|
||||
public Flag getFlagByID(Flaggs id) {
|
||||
public Flag getFlagByID(Flags id) {
|
||||
return flags.get(id);
|
||||
}
|
||||
|
||||
@ -66,49 +66,49 @@ public class FlagsManager {
|
||||
private void registerFlags() {
|
||||
|
||||
// Break and place blocks
|
||||
new FlagBuilder().id(Flaggs.BREAK_BLOCKS).icon(Material.STONE).listener(new BreakBlocksListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.PLACE_BLOCKS).icon(Material.DIRT).listener(new PlaceBlocksListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.BREAK_BLOCKS).icon(Material.STONE).listener(new BreakBlocksListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.PLACE_BLOCKS).icon(Material.DIRT).listener(new PlaceBlocksListener(p)).build(p);
|
||||
|
||||
// Block interactions - all use BlockInteractionListener()
|
||||
new FlagBuilder().id(Flaggs.ANVIL).icon(Material.ANVIL).listener(new BlockInteractionListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.BEACON).icon(Material.BEACON).build(p);
|
||||
new FlagBuilder().id(Flaggs.BED).icon(Material.BED).build(p);
|
||||
new FlagBuilder().id(Flaggs.BREWING).icon(Material.BREWING_STAND_ITEM).build(p);
|
||||
new FlagBuilder().id(Flaggs.CHEST).icon(Material.CHEST).build(p);
|
||||
new FlagBuilder().id(Flaggs.DOOR).allowedByDefault(true).icon(Material.WOODEN_DOOR).build(p);
|
||||
new FlagBuilder().id(Flaggs.CRAFTING).allowedByDefault(true).icon(Material.WORKBENCH).build(p);
|
||||
new FlagBuilder().id(Flaggs.ENCHANTING).allowedByDefault(true).icon(Material.ENCHANTMENT_TABLE).build(p);
|
||||
new FlagBuilder().id(Flaggs.FURNACE).icon(Material.FURNACE).build(p);
|
||||
new FlagBuilder().id(Flaggs.GATE).allowedByDefault(true).icon(Material.FENCE_GATE).build(p);
|
||||
new FlagBuilder().id(Flaggs.MUSIC).icon(Material.JUKEBOX).build(p);
|
||||
new FlagBuilder().id(Flaggs.LEVER_BUTTON).icon(Material.LEVER).build(p);
|
||||
new FlagBuilder().id(Flaggs.REDSTONE).icon(Material.REDSTONE).build(p);
|
||||
new FlagBuilder().id(Flaggs.SPAWN_EGGS).icon(Material.MONSTER_EGG).build(p);
|
||||
new FlagBuilder().id(Flags.ANVIL).icon(Material.ANVIL).listener(new BlockInteractionListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.BEACON).icon(Material.BEACON).build(p);
|
||||
new FlagBuilder().id(Flags.BED).icon(Material.BED).build(p);
|
||||
new FlagBuilder().id(Flags.BREWING).icon(Material.BREWING_STAND_ITEM).build(p);
|
||||
new FlagBuilder().id(Flags.CHEST).icon(Material.CHEST).build(p);
|
||||
new FlagBuilder().id(Flags.DOOR).allowedByDefault(true).icon(Material.WOODEN_DOOR).build(p);
|
||||
new FlagBuilder().id(Flags.CRAFTING).allowedByDefault(true).icon(Material.WORKBENCH).build(p);
|
||||
new FlagBuilder().id(Flags.ENCHANTING).allowedByDefault(true).icon(Material.ENCHANTMENT_TABLE).build(p);
|
||||
new FlagBuilder().id(Flags.FURNACE).icon(Material.FURNACE).build(p);
|
||||
new FlagBuilder().id(Flags.GATE).allowedByDefault(true).icon(Material.FENCE_GATE).build(p);
|
||||
new FlagBuilder().id(Flags.MUSIC).icon(Material.JUKEBOX).build(p);
|
||||
new FlagBuilder().id(Flags.LEVER_BUTTON).icon(Material.LEVER).build(p);
|
||||
new FlagBuilder().id(Flags.REDSTONE).icon(Material.REDSTONE).build(p);
|
||||
new FlagBuilder().id(Flags.SPAWN_EGGS).icon(Material.MONSTER_EGG).build(p);
|
||||
|
||||
// Entity interactions
|
||||
new FlagBuilder().id(Flaggs.ARMOR_STAND).icon(Material.ARMOR_STAND).listener(new EntityInteractListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.RIDING).icon(Material.GOLD_BARDING).build(p);
|
||||
new FlagBuilder().id(Flaggs.TRADING).allowedByDefault(true).icon(Material.EMERALD).build(p);
|
||||
new FlagBuilder().id(Flags.ARMOR_STAND).icon(Material.ARMOR_STAND).listener(new EntityInteractListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.RIDING).icon(Material.GOLD_BARDING).build(p);
|
||||
new FlagBuilder().id(Flags.TRADING).allowedByDefault(true).icon(Material.EMERALD).build(p);
|
||||
|
||||
// Breeding
|
||||
new FlagBuilder().id(Flaggs.BREEDING).icon(Material.CARROT).listener(new BreedingListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.BREEDING).icon(Material.CARROT).listener(new BreedingListener(p)).build(p);
|
||||
|
||||
// Buckets. All bucket use is covered by one listener
|
||||
new FlagBuilder().id(Flaggs.BUCKET).icon(Material.BUCKET).listener(new BucketListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.COLLECT_LAVA).icon(Material.LAVA_BUCKET).build(p);
|
||||
new FlagBuilder().id(Flaggs.COLLECT_WATER).icon(Material.WATER_BUCKET).build(p);
|
||||
new FlagBuilder().id(Flaggs.MILKING).icon(Material.MILK_BUCKET).build(p);
|
||||
new FlagBuilder().id(Flags.BUCKET).icon(Material.BUCKET).listener(new BucketListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.COLLECT_LAVA).icon(Material.LAVA_BUCKET).build(p);
|
||||
new FlagBuilder().id(Flags.COLLECT_WATER).icon(Material.WATER_BUCKET).build(p);
|
||||
new FlagBuilder().id(Flags.MILKING).icon(Material.MILK_BUCKET).build(p);
|
||||
|
||||
// Chorus Fruit and Enderpearls
|
||||
new FlagBuilder().id(Flaggs.CHORUS_FRUIT).icon(Material.CHORUS_FRUIT).listener(new TeleportationListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.ENDER_PEARL).icon(Material.ENDER_PEARL).build(p);
|
||||
new FlagBuilder().id(Flags.CHORUS_FRUIT).icon(Material.CHORUS_FRUIT).listener(new TeleportationListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.ENDER_PEARL).icon(Material.ENDER_PEARL).build(p);
|
||||
|
||||
// Physical interactions
|
||||
new FlagBuilder().id(Flaggs.CROP_TRAMPLE).icon(Material.WHEAT).listener(new PhysicalInteractionListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.PRESSURE_PLATE).icon(Material.GOLD_PLATE).build(p);
|
||||
new FlagBuilder().id(Flags.CROP_TRAMPLE).icon(Material.WHEAT).listener(new PhysicalInteractionListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.PRESSURE_PLATE).icon(Material.GOLD_PLATE).build(p);
|
||||
|
||||
// Egg throwing
|
||||
new FlagBuilder().id(Flaggs.EGGS).icon(Material.EGG).listener(new EggListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.EGGS).icon(Material.EGG).listener(new EggListener(p)).build(p);
|
||||
|
||||
/*
|
||||
* Fire
|
||||
@ -120,40 +120,40 @@ public class FlagsManager {
|
||||
* I'll take you to burn
|
||||
* - The Crazy World of Arthur Brown
|
||||
*/
|
||||
new FlagBuilder().id(Flaggs.FIRE).icon(Material.FLINT_AND_STEEL).listener(new FireListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.FIRE_EXTINGUISH).icon(Material.POTION).build(p);
|
||||
new FlagBuilder().id(Flaggs.FIRE_SPREAD).icon(Material.FIREWORK_CHARGE).build(p);
|
||||
new FlagBuilder().id(Flags.FIRE).icon(Material.FLINT_AND_STEEL).listener(new FireListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.FIRE_EXTINGUISH).icon(Material.POTION).build(p);
|
||||
new FlagBuilder().id(Flags.FIRE_SPREAD).icon(Material.FIREWORK_CHARGE).build(p);
|
||||
|
||||
// Inventories
|
||||
new FlagBuilder().id(Flaggs.MOUNT_INVENTORY).icon(Material.IRON_BARDING).listener(new InventoryListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.MOUNT_INVENTORY).icon(Material.IRON_BARDING).listener(new InventoryListener(p)).build(p);
|
||||
|
||||
// Hurting things
|
||||
new FlagBuilder().id(Flaggs.HURT_MOBS).icon(Material.STONE_SWORD).listener(new HurtingListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.HURT_MONSTERS).icon(Material.WOOD_SWORD).build(p);
|
||||
new FlagBuilder().id(Flags.HURT_MOBS).icon(Material.STONE_SWORD).listener(new HurtingListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.HURT_MONSTERS).icon(Material.WOOD_SWORD).build(p);
|
||||
|
||||
// Leashes
|
||||
new FlagBuilder().id(Flaggs.LEASH).icon(Material.LEASH).listener(new LeashListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.LEASH).icon(Material.LEASH).listener(new LeashListener(p)).build(p);
|
||||
|
||||
// Portal use protection
|
||||
new FlagBuilder().id(Flaggs.PORTAL).icon(Material.OBSIDIAN).listener(new PortalListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.PORTAL).icon(Material.OBSIDIAN).listener(new PortalListener(p)).build(p);
|
||||
|
||||
// Shearing
|
||||
new FlagBuilder().id(Flaggs.SHEARING).icon(Material.SHEARS).listener(new ShearingListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.SHEARING).icon(Material.SHEARS).listener(new ShearingListener(p)).build(p);
|
||||
|
||||
// Item pickup or drop
|
||||
new FlagBuilder().id(Flaggs.ITEM_DROP).icon(Material.DIRT).allowedByDefault(true).listener(new ItemDropPickUpListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.ITEM_PICKUP).icon(Material.DIRT).build(p);
|
||||
new FlagBuilder().id(Flags.ITEM_DROP).icon(Material.DIRT).allowedByDefault(true).listener(new ItemDropPickUpListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.ITEM_PICKUP).icon(Material.DIRT).build(p);
|
||||
|
||||
/*
|
||||
* Non-protection flags
|
||||
*/
|
||||
// PVP
|
||||
new FlagBuilder().id(Flaggs.PVP_OVERWORLD).icon(Material.ARROW).listener(new PVPListener(p)).build(p);
|
||||
new FlagBuilder().id(Flaggs.PVP_NETHER).icon(Material.IRON_AXE).build(p);
|
||||
new FlagBuilder().id(Flaggs.PVP_END).icon(Material.END_CRYSTAL).build(p);
|
||||
new FlagBuilder().id(Flaggs.ENTER_EXIT_MESSAGES).icon(Material.DIRT).allowedByDefault(true).build(p);
|
||||
new FlagBuilder().id(Flaggs.MOB_SPAWN).icon(Material.APPLE).allowedByDefault(true).build(p);
|
||||
new FlagBuilder().id(Flaggs.MONSTER_SPAWN).icon(Material.MOB_SPAWNER).allowedByDefault(true).build(p);
|
||||
new FlagBuilder().id(Flags.PVP_OVERWORLD).icon(Material.ARROW).listener(new PVPListener(p)).build(p);
|
||||
new FlagBuilder().id(Flags.PVP_NETHER).icon(Material.IRON_AXE).build(p);
|
||||
new FlagBuilder().id(Flags.PVP_END).icon(Material.END_CRYSTAL).build(p);
|
||||
new FlagBuilder().id(Flags.ENTER_EXIT_MESSAGES).icon(Material.DIRT).allowedByDefault(true).build(p);
|
||||
new FlagBuilder().id(Flags.MOB_SPAWN).icon(Material.APPLE).allowedByDefault(true).build(p);
|
||||
new FlagBuilder().id(Flags.MONSTER_SPAWN).icon(Material.MOB_SPAWNER).allowedByDefault(true).build(p);
|
||||
|
||||
}
|
||||
|
||||
@ -163,10 +163,15 @@ public class FlagsManager {
|
||||
* @return Flag or null if not known
|
||||
*/
|
||||
public Flag getFlagByID(String key) {
|
||||
for (Flaggs flag: Flaggs.values()) {
|
||||
for (Flags flag: Flags.values()) {
|
||||
if (flag.name().equalsIgnoreCase(key)) return this.getFlagByID(flag);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isAllowed(Flags flag) {
|
||||
if (flags.containsKey(flag)) return flags.get(flag).isAllowed();
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -411,7 +411,7 @@ public class TestBSkyBlock {
|
||||
assertFalse(island.getBanned().contains(member1));
|
||||
|
||||
// Protection
|
||||
new Flags(plugin);
|
||||
new FlagsManager(plugin);
|
||||
// Check default settings
|
||||
// Owner should be able to do anything
|
||||
assertTrue(island.isAllowed(owner, Flags.PLACE_BLOCKS));
|
||||
|
Loading…
Reference in New Issue
Block a user