From 5c69855195171fc13a3b6fcddad5976a66ab8037 Mon Sep 17 00:00:00 2001 From: isokissa3 Date: Sat, 8 Dec 2018 23:51:46 +0200 Subject: [PATCH] Block related flags now refer to javadocs on invalid material and errors on non block materials --- .../worldguardextraflags/flags/Flags.java | 10 +++---- .../flags/helpers/BlockMaterialFlag.java | 26 +++++++++++++++++++ .../flags/helpers/MaterialFlag.java | 8 +++--- 3 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 WG/src/main/java/net/goldtreeservers/worldguardextraflags/flags/helpers/BlockMaterialFlag.java diff --git a/WG/src/main/java/net/goldtreeservers/worldguardextraflags/flags/Flags.java b/WG/src/main/java/net/goldtreeservers/worldguardextraflags/flags/Flags.java index 14599af..4adce72 100644 --- a/WG/src/main/java/net/goldtreeservers/worldguardextraflags/flags/Flags.java +++ b/WG/src/main/java/net/goldtreeservers/worldguardextraflags/flags/Flags.java @@ -13,7 +13,7 @@ import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.flags.StringFlag; import net.goldtreeservers.worldguardextraflags.flags.data.SoundData; -import net.goldtreeservers.worldguardextraflags.flags.helpers.MaterialFlag; +import net.goldtreeservers.worldguardextraflags.flags.helpers.BlockMaterialFlag; import net.goldtreeservers.worldguardextraflags.flags.helpers.PotionEffectFlag; import net.goldtreeservers.worldguardextraflags.flags.helpers.PotionEffectTypeFlag; import net.goldtreeservers.worldguardextraflags.flags.helpers.SoundDataFlag; @@ -58,10 +58,10 @@ public final class Flags public final static StateFlag NETHER_PORTALS = new StateFlag("nether-portals", true); - public final static SetFlag ALLOW_BLOCK_PLACE = new SetFlag("allow-block-place", new MaterialFlag(null)); - public final static SetFlag DENY_BLOCK_PLACE = new SetFlag("deny-block-place", new MaterialFlag(null)); - public final static SetFlag ALLOW_BLOCK_BREAK = new SetFlag("allow-block-break", new MaterialFlag(null)); - public final static SetFlag DENY_BLOCK_BREAK = new SetFlag("deny-block-break", new MaterialFlag(null)); + public final static SetFlag ALLOW_BLOCK_PLACE = new SetFlag("allow-block-place", new BlockMaterialFlag(null)); + public final static SetFlag DENY_BLOCK_PLACE = new SetFlag("deny-block-place", new BlockMaterialFlag(null)); + public final static SetFlag ALLOW_BLOCK_BREAK = new SetFlag("allow-block-break", new BlockMaterialFlag(null)); + public final static SetFlag DENY_BLOCK_BREAK = new SetFlag("deny-block-break", new BlockMaterialFlag(null)); public final static StateFlag GLIDE = new StateFlag("glide", false); diff --git a/WG/src/main/java/net/goldtreeservers/worldguardextraflags/flags/helpers/BlockMaterialFlag.java b/WG/src/main/java/net/goldtreeservers/worldguardextraflags/flags/helpers/BlockMaterialFlag.java new file mode 100644 index 0000000..08fadfe --- /dev/null +++ b/WG/src/main/java/net/goldtreeservers/worldguardextraflags/flags/helpers/BlockMaterialFlag.java @@ -0,0 +1,26 @@ +package net.goldtreeservers.worldguardextraflags.flags.helpers; + +import org.bukkit.Material; + +import com.sk89q.worldguard.protection.flags.FlagContext; +import com.sk89q.worldguard.protection.flags.InvalidFlagFormat; + +public class BlockMaterialFlag extends MaterialFlag +{ + public BlockMaterialFlag(String name) + { + super(name); + } + + @Override + public Material parseInput(FlagContext context) throws InvalidFlagFormat + { + Material material = super.parseInput(context); + if (!material.isBlock()) + { + throw new InvalidFlagFormat("This material isn't seen as 'placable block', use alternative id"); + } + + return material; + } +} diff --git a/WG/src/main/java/net/goldtreeservers/worldguardextraflags/flags/helpers/MaterialFlag.java b/WG/src/main/java/net/goldtreeservers/worldguardextraflags/flags/helpers/MaterialFlag.java index bf4c0e8..11d618a 100644 --- a/WG/src/main/java/net/goldtreeservers/worldguardextraflags/flags/helpers/MaterialFlag.java +++ b/WG/src/main/java/net/goldtreeservers/worldguardextraflags/flags/helpers/MaterialFlag.java @@ -16,26 +16,26 @@ public class MaterialFlag extends Flag @Override public Object marshal(Material o) { - return o.toString(); + return o.name(); } @Override public Material parseInput(FlagContext context) throws InvalidFlagFormat { - Material material = Material.getMaterial(context.getUserInput().trim().toUpperCase()); + Material material = Material.matchMaterial(context.getUserInput()); if (material != null) { return material; } else { - throw new InvalidFlagFormat("Unable to find the material!"); + throw new InvalidFlagFormat("Unable to find the material! Please refer to https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html for valid ids"); } } @Override public Material unmarshal(Object o) { - return Material.getMaterial(o.toString()); + return Material.matchMaterial(o.toString()); } }