diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/entry/EmptyLoopEntryContainer.java b/core/src/main/java/net/momirealms/craftengine/core/loot/entry/EmptyLoopEntryContainer.java new file mode 100644 index 000000000..32d71af6c --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/entry/EmptyLoopEntryContainer.java @@ -0,0 +1,43 @@ +package net.momirealms.craftengine.core.loot.entry; + +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.loot.LootConditions; +import net.momirealms.craftengine.core.loot.LootContext; +import net.momirealms.craftengine.core.plugin.context.Condition; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Consumer; + +public class EmptyLoopEntryContainer extends AbstractSingleLootEntryContainer { + public static final Factory FACTORY = new Factory<>(); + + protected EmptyLoopEntryContainer(List> conditions, int weight, int quality) { + super(conditions, null, weight, quality); + } + + @Override + protected void createItem(Consumer> lootConsumer, LootContext context) {} + + @Override + public Key type() { + return LootEntryContainers.EMPTY; + } + + public static class Factory implements LootEntryContainerFactory { + @SuppressWarnings("unchecked") + @Override + public LootEntryContainer create(Map arguments) { + int weight = ResourceConfigUtils.getAsInt(arguments.getOrDefault("weight", 1), "weight"); + int quality = ResourceConfigUtils.getAsInt(arguments.getOrDefault("quality", 0), "quality"); + List> conditions = Optional.ofNullable(arguments.get("conditions")) + .map(it -> LootConditions.fromMapList((List>) it)) + .orElse(Collections.emptyList()); + return new EmptyLoopEntryContainer<>(conditions, weight, quality); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/entry/LootEntryContainers.java b/core/src/main/java/net/momirealms/craftengine/core/loot/entry/LootEntryContainers.java index 82c667a40..f28403072 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/entry/LootEntryContainers.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/entry/LootEntryContainers.java @@ -18,6 +18,7 @@ public class LootEntryContainers { public static final Key ITEM = Key.from("craftengine:item"); public static final Key FURNITURE_ITEM = Key.from("craftengine:furniture_item"); public static final Key EXP = Key.from("craftengine:exp"); + public static final Key EMPTY = Key.from("craftengine:empty"); static { register(ALTERNATIVES, AlternativesLootEntryContainer.FACTORY); @@ -25,6 +26,7 @@ public class LootEntryContainers { register(ITEM, SingleItemLootEntryContainer.FACTORY); register(EXP, ExpLootEntryContainer.FACTORY); register(FURNITURE_ITEM, FurnitureItemLootEntryContainer.FACTORY); + register(EMPTY, EmptyLoopEntryContainer.FACTORY); } public static void register(Key key, LootEntryContainerFactory factory) {