From b4cd509eff854b4257869bb2de5bd895d6e06b33 Mon Sep 17 00:00:00 2001 From: Andreas Troelsen Date: Thu, 22 Jul 2021 15:13:35 +0200 Subject: [PATCH] Use "legacy-aware" utility class for Material types. Introduces the Materials utility class, which works much like the static MACreature registration process, but for certain material types. Instead of storing everything in a stringly typed map, certain Material values are stored as constants. Right now it's just the `OAK_SIGN`/`SIGN` pair for the autogeneration in MAUtils, and chances are we can throw it out at some point in the near future, but at least now there's room for more materials, should the need arise. --- .../com/garbagemule/MobArena/MAUtils.java | 3 ++- .../garbagemule/MobArena/util/Materials.java | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/garbagemule/MobArena/util/Materials.java diff --git a/src/main/java/com/garbagemule/MobArena/MAUtils.java b/src/main/java/com/garbagemule/MobArena/MAUtils.java index 771a393..3a0afc9 100644 --- a/src/main/java/com/garbagemule/MobArena/MAUtils.java +++ b/src/main/java/com/garbagemule/MobArena/MAUtils.java @@ -5,6 +5,7 @@ import com.garbagemule.MobArena.framework.ArenaMaster; import com.garbagemule.MobArena.region.ArenaRegion; import com.garbagemule.MobArena.things.InvalidThingInputString; import com.garbagemule.MobArena.things.ThingPicker; +import com.garbagemule.MobArena.util.Materials; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; @@ -274,7 +275,7 @@ public class MAUtils // Place the hippie signs //Iterator iterator = am.getClasses().iterator(); Iterator iterator = am.getClasses().values().iterator(); - Rotatable signData = (Rotatable) Material.OAK_SIGN.createBlockData(); + Rotatable signData = (Rotatable) Materials.SIGN.createBlockData(); signData.setRotation(BlockFace.NORTH); for (int i = lx1+2; i <= lx2-2; i++) // Signs { diff --git a/src/main/java/com/garbagemule/MobArena/util/Materials.java b/src/main/java/com/garbagemule/MobArena/util/Materials.java new file mode 100644 index 0000000..801c658 --- /dev/null +++ b/src/main/java/com/garbagemule/MobArena/util/Materials.java @@ -0,0 +1,22 @@ +package com.garbagemule.MobArena.util; + +import org.bukkit.Material; + +import java.util.Arrays; + +public class Materials { + + public static final Material SIGN = resolve("OAK_SIGN", "SIGN"); + + private static Material resolve(String... names) { + for (String name : names) { + try { + return Material.valueOf(name); + } catch (IllegalArgumentException e) { + // Swallow + } + } + throw new IllegalStateException("Unknown material: " + Arrays.toString(names)); + } + +}