diff --git a/src/main/java/com/garbagemule/MobArena/things/SingleThingPicker.java b/src/main/java/com/garbagemule/MobArena/things/SingleThingPicker.java deleted file mode 100644 index 6534a5b..0000000 --- a/src/main/java/com/garbagemule/MobArena/things/SingleThingPicker.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.garbagemule.MobArena.things; - -public class SingleThingPicker implements ThingPicker { - - private final Thing thing; - - public SingleThingPicker(Thing thing) { - this.thing = thing; - } - - @Override - public Thing pick() { - return thing; - } - - @Override - public String toString() { - return thing.toString(); - } - -} diff --git a/src/main/java/com/garbagemule/MobArena/things/Thing.java b/src/main/java/com/garbagemule/MobArena/things/Thing.java index d7d0892..36f953f 100644 --- a/src/main/java/com/garbagemule/MobArena/things/Thing.java +++ b/src/main/java/com/garbagemule/MobArena/things/Thing.java @@ -12,8 +12,12 @@ import org.bukkit.entity.Player; * The interface exposes three methods that are all optional operations. An * operation returns false if it fails or if it isn't applicable to the given * thing (which is the same as failing). + *

+ * A thing is automatically a {@link ThingPicker} for itself, which means it + * can be used in any place that a thing picker is expected, avoiding the need + * to wrap things in a "dummy picker". */ -public interface Thing { +public interface Thing extends ThingPicker { /** * Give this thing to the given player. @@ -39,4 +43,9 @@ public interface Thing { */ boolean heldBy(Player player); + @Override + default Thing pick() { + return this; + } + } diff --git a/src/main/java/com/garbagemule/MobArena/things/ThingPickerManager.java b/src/main/java/com/garbagemule/MobArena/things/ThingPickerManager.java index 21bb108..38a9ba0 100644 --- a/src/main/java/com/garbagemule/MobArena/things/ThingPickerManager.java +++ b/src/main/java/com/garbagemule/MobArena/things/ThingPickerManager.java @@ -25,8 +25,7 @@ public class ThingPickerManager implements ThingPickerParser { return picker; } } - Thing thing = things.parse(s); - return new SingleThingPicker(thing); + return things.parse(s); } }