mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-19 15:09:15 +00:00
@@ -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<T> extends AbstractSingleLootEntryContainer<T> {
|
||||
public static final Factory<?> FACTORY = new Factory<>();
|
||||
|
||||
protected EmptyLoopEntryContainer(List<Condition<LootContext>> conditions, int weight, int quality) {
|
||||
super(conditions, null, weight, quality);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createItem(Consumer<Item<T>> lootConsumer, LootContext context) {}
|
||||
|
||||
@Override
|
||||
public Key type() {
|
||||
return LootEntryContainers.EMPTY;
|
||||
}
|
||||
|
||||
public static class Factory<A> implements LootEntryContainerFactory<A> {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public LootEntryContainer<A> create(Map<String, Object> arguments) {
|
||||
int weight = ResourceConfigUtils.getAsInt(arguments.getOrDefault("weight", 1), "weight");
|
||||
int quality = ResourceConfigUtils.getAsInt(arguments.getOrDefault("quality", 0), "quality");
|
||||
List<Condition<LootContext>> conditions = Optional.ofNullable(arguments.get("conditions"))
|
||||
.map(it -> LootConditions.fromMapList((List<Map<String, Object>>) it))
|
||||
.orElse(Collections.emptyList());
|
||||
return new EmptyLoopEntryContainer<>(conditions, weight, quality);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 <T> void register(Key key, LootEntryContainerFactory<T> factory) {
|
||||
|
||||
Reference in New Issue
Block a user