mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2025-02-05 15:02:06 +01:00
Fixed some Flags and added a security check in FlagsManager
...to avoid duplicates of Listeners
This commit is contained in:
parent
f33fa2477a
commit
7b55ca70b2
@ -38,11 +38,11 @@ public class Flags {
|
||||
public static final Flag BED = new FlagBuilder().id("BED").icon(Material.BED).build();
|
||||
public static final Flag BREWING = new FlagBuilder().id("BREWING").icon(Material.BREWING_STAND_ITEM).build();
|
||||
public static final Flag CHEST = new FlagBuilder().id("CHEST").icon(Material.CHEST).build();
|
||||
public static final Flag DOOR = new FlagBuilder().id("DOOR).allowedByDefault(true").icon(Material.WOODEN_DOOR).build();
|
||||
public static final Flag CRAFTING = new FlagBuilder().id("CRAFTING).allowedByDefault(true").icon(Material.WORKBENCH).build();
|
||||
public static final Flag ENCHANTING = new FlagBuilder().id("ENCHANTING).allowedByDefault(true").icon(Material.ENCHANTMENT_TABLE).build();
|
||||
public static final Flag DOOR = new FlagBuilder().id("DOOR").allowedByDefault(true).icon(Material.WOODEN_DOOR).build();
|
||||
public static final Flag CRAFTING = new FlagBuilder().id("CRAFTING").allowedByDefault(true).icon(Material.WORKBENCH).build();
|
||||
public static final Flag ENCHANTING = new FlagBuilder().id("ENCHANTING").allowedByDefault(true).icon(Material.ENCHANTMENT_TABLE).build();
|
||||
public static final Flag FURNACE = new FlagBuilder().id("FURNACE").icon(Material.FURNACE).build();
|
||||
public static final Flag GATE = new FlagBuilder().id("GATE).allowedByDefault(true").icon(Material.FENCE_GATE).build();
|
||||
public static final Flag GATE = new FlagBuilder().id("GATE").allowedByDefault(true).icon(Material.FENCE_GATE).build();
|
||||
public static final Flag MUSIC = new FlagBuilder().id("MUSIC").icon(Material.JUKEBOX).build();
|
||||
public static final Flag LEVER_BUTTON = new FlagBuilder().id("LEVER_BUTTON").icon(Material.LEVER).build();
|
||||
public static final Flag REDSTONE = new FlagBuilder().id("REDSTONE").icon(Material.REDSTONE).build();
|
||||
@ -51,7 +51,7 @@ public class Flags {
|
||||
// Entity interactions
|
||||
public static final Flag ARMOR_STAND = new FlagBuilder().id("ARMOR_STAND").icon(Material.ARMOR_STAND).listener(new EntityInteractListener()).build();
|
||||
public static final Flag RIDING = new FlagBuilder().id("RIDING").icon(Material.GOLD_BARDING).build();
|
||||
public static final Flag TRADING = new FlagBuilder().id("TRADING).allowedByDefault(true").icon(Material.EMERALD).build();
|
||||
public static final Flag TRADING = new FlagBuilder().id("TRADING").allowedByDefault(true).icon(Material.EMERALD).build();
|
||||
|
||||
// Breeding
|
||||
public static final Flag BREEDING = new FlagBuilder().id("BREEDING").icon(Material.CARROT).listener(new BreedingListener()).build();
|
||||
|
@ -1,19 +1,29 @@
|
||||
package us.tastybento.bskyblock.managers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import org.bukkit.event.Listener;
|
||||
import us.tastybento.bskyblock.BSkyBlock;
|
||||
import us.tastybento.bskyblock.api.flags.Flag;
|
||||
import us.tastybento.bskyblock.api.panels.PanelItem;
|
||||
import us.tastybento.bskyblock.lists.Flags;
|
||||
|
||||
/**
|
||||
* @author Poslovitch
|
||||
* @author tastybento
|
||||
*/
|
||||
public class FlagsManager {
|
||||
|
||||
private BSkyBlock plugin;
|
||||
private HashMap<String, Flag> flags = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Stores the flag listeners that have already been registered into Bukkit's API to avoid duplicates.
|
||||
*/
|
||||
private ArrayList<Listener> registeredListeners = new ArrayList<>();
|
||||
|
||||
public FlagsManager(BSkyBlock plugin) {
|
||||
this.plugin = plugin;
|
||||
@ -31,8 +41,13 @@ public class FlagsManager {
|
||||
public void registerFlag(Flag flag) {
|
||||
//Bukkit.getLogger().info("DEBUG: registering flag " + flag.getID());
|
||||
flags.put(flag.getID(), flag);
|
||||
// If there is a listener, register it into Bukkit.
|
||||
flag.getListener().ifPresent(l -> Bukkit.getServer().getPluginManager().registerEvents(l, plugin));
|
||||
// If there is a listener which is not already registered, register it into Bukkit.
|
||||
flag.getListener().ifPresent(l -> {
|
||||
if (!registeredListeners.contains(l)) {
|
||||
Bukkit.getServer().getPluginManager().registerEvents(l, plugin);
|
||||
registeredListeners.add(l);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public HashMap<String, Flag> getFlags() {
|
||||
@ -40,8 +55,8 @@ public class FlagsManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get flag by string
|
||||
* @param key - string name same as the enum
|
||||
* Get flag by ID
|
||||
* @param id
|
||||
* @return Flag or null if not known
|
||||
*/
|
||||
public Flag getFlagByID(String id) {
|
||||
|
Loading…
Reference in New Issue
Block a user