UNTESTED CODE!

Restrictions.yml can now use MMOItems instead of just vanilla materials.
Format is just 'type.id' (might be case sensitive!)

Requires MMOLib 1.3.2
This commit is contained in:
ASangarin 2020-09-10 15:35:30 +02:00
parent 1d2da64593
commit 2620f67672
3 changed files with 13 additions and 10 deletions

Binary file not shown.

View File

@ -62,7 +62,7 @@ public class BlockListener implements Listener {
} }
ItemStack item = player.getInventory().getItemInMainHand(); ItemStack item = player.getInventory().getItemInMainHand();
BlockPermissions perms = MMOCore.plugin.restrictionManager.getPermissions(item.getType()); BlockPermissions perms = MMOCore.plugin.restrictionManager.getPermissions(item);
if (perms == null) { if (perms == null) {
event.setCancelled(true); event.setCancelled(true);
return; return;

View File

@ -6,18 +6,19 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.logging.Level; import java.util.logging.Level;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.inventory.ItemStack;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.block.BlockType; import net.Indyuce.mmocore.api.block.BlockType;
import net.Indyuce.mmocore.api.load.PostLoadObject; import net.Indyuce.mmocore.api.load.PostLoadObject;
import net.mmogroup.mmolib.api.MMOLineConfig; import net.mmogroup.mmolib.api.MMOLineConfig;
import net.mmogroup.mmolib.api.itemtype.ItemType;
public class RestrictionManager { public class RestrictionManager {
// private Set<String> breakBlackList = new HashSet<>(); // private Set<String> breakBlackList = new HashSet<>();
private final Map<Material, BlockPermissions> map = new HashMap<>(); private final Map<ItemType, BlockPermissions> map = new HashMap<>();
public RestrictionManager(FileConfiguration config) { public RestrictionManager(FileConfiguration config) {
@ -32,7 +33,7 @@ public class RestrictionManager {
try { try {
perms.postLoad(); perms.postLoad();
} catch (IllegalArgumentException exception) { } catch (IllegalArgumentException exception) {
MMOCore.log(Level.WARNING, "Could not load block perms " + perms.getTool().name() + ": " + exception.getMessage()); MMOCore.log(Level.WARNING, "Could not load block perms " + perms.getTool().display() + ": " + exception.getMessage());
} }
} }
@ -47,26 +48,28 @@ public class RestrictionManager {
// return breakBlackList.contains(s); // return breakBlackList.contains(s);
// } // }
public BlockPermissions getPermissions(Material tool) { public BlockPermissions getPermissions(ItemStack item) {
return map.getOrDefault(tool, null); for(ItemType type : map.keySet())
if(type.matches(item)) map.get(type);
return null;
} }
public class BlockPermissions extends PostLoadObject { public class BlockPermissions extends PostLoadObject {
private final Set<BlockType> mineable = new HashSet<>(); private final Set<BlockType> mineable = new HashSet<>();
private final Material tool; private final ItemType tool;
private BlockPermissions parent; private BlockPermissions parent;
public BlockPermissions(ConfigurationSection config) { public BlockPermissions(ConfigurationSection config) {
super(config); super(config);
tool = Material.valueOf(config.getName()); tool = ItemType.fromString(config.getName());
} }
@Override @Override
protected void whenPostLoaded(ConfigurationSection config) { protected void whenPostLoaded(ConfigurationSection config) {
if (config.contains("parent")) if (config.contains("parent"))
parent = map.get(Material.valueOf(config.getString("parent", "None").toUpperCase().replace("-", "_").replace(" ", "_"))); parent = map.get(ItemType.fromString(config.getString("parent", "None")));
for (String key : config.getStringList("can-mine")) for (String key : config.getStringList("can-mine"))
mineable.add(MMOCore.plugin.loadManager.loadBlockType(new MMOLineConfig(key))); mineable.add(MMOCore.plugin.loadManager.loadBlockType(new MMOLineConfig(key)));
} }
@ -85,7 +88,7 @@ public class RestrictionManager {
return parent != null && parent.canMine(type); return parent != null && parent.canMine(type);
} }
public Material getTool() { public ItemType getTool() {
return tool; return tool;
} }