From 44c5447edb7ec9d285bccabf780816fee7cee3a4 Mon Sep 17 00:00:00 2001 From: Jesse Boyd Date: Fri, 17 Aug 2018 23:05:34 +1000 Subject: [PATCH] Parse instead of get block for masks --- .../sk89q/worldedit/function/mask/BlockMaskBuilder.java | 7 ++++--- .../java/com/sk89q/worldedit/world/block/BlockTypes.java | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BlockMaskBuilder.java b/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BlockMaskBuilder.java index 45fb81549..d606e267b 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BlockMaskBuilder.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BlockMaskBuilder.java @@ -3,6 +3,7 @@ package com.sk89q.worldedit.function.mask; import com.boydti.fawe.object.collection.FastBitSet; import com.boydti.fawe.object.string.MutableCharSequence; import com.boydti.fawe.util.StringMan; +import com.sk89q.worldedit.extension.input.InputParseException; import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.registry.state.AbstractProperty; import com.sk89q.worldedit.registry.state.Property; @@ -66,7 +67,7 @@ public class BlockMaskBuilder { } } - public BlockMaskBuilder addRegex(String input) { + public BlockMaskBuilder addRegex(String input) throws InputParseException { if (input.charAt(input.length() - 1) == ']') { int propStart = StringMan.findMatchingBracket(input, input.length() - 1); if (propStart == -1) return this; @@ -78,7 +79,7 @@ public class BlockMaskBuilder { BlockTypes type = null; List blockTypeList = null; if (StringMan.isAlphanumericUnd(charSequence)) { - type = BlockTypes.get(charSequence); + type = BlockTypes.parse(charSequence.toString()); add(type); } else { String regex = charSequence.toString(); @@ -153,7 +154,7 @@ public class BlockMaskBuilder { } } else { if (StringMan.isAlphanumericUnd(input)) { - add(BlockTypes.get(input)); + add(BlockTypes.parse(input)); } else { for (BlockTypes myType : BlockTypes.values) { if (myType.getId().matches(input)) { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypes.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypes.java index 55bd12dac..a9cd5a1a0 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypes.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypes.java @@ -25,6 +25,7 @@ import com.sk89q.worldedit.Vector; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.blocks.BlockMaterial; +import com.sk89q.worldedit.extension.input.InputParseException; import com.sk89q.worldedit.extension.platform.Capability; import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.function.mask.Mask; @@ -978,7 +979,7 @@ public enum BlockTypes implements BlockType { } } - public static BlockTypes parse(String input) { + public static BlockTypes parse(String input) throws InputParseException { input = input.toLowerCase(); if (!input.split("\\[", 2)[0].contains(":")) input = "minecraft:" + input; @@ -987,10 +988,10 @@ public enum BlockTypes implements BlockType { try { BlockStateHolder block = LegacyMapper.getInstance().getBlockFromLegacy(input); - if (block != null) return (BlockTypes) block.getBlockType(); + if (block != null) return block.getBlockType(); } catch (NumberFormatException e) { } catch (IndexOutOfBoundsException e) {} - return null; + throw new InputParseException("Unkown block for " + input); } private static BlockTypes register(final String id) {