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 ITEM = Key.from("craftengine:item");
|
||||||
public static final Key FURNITURE_ITEM = Key.from("craftengine:furniture_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 EXP = Key.from("craftengine:exp");
|
||||||
|
public static final Key EMPTY = Key.from("craftengine:empty");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
register(ALTERNATIVES, AlternativesLootEntryContainer.FACTORY);
|
register(ALTERNATIVES, AlternativesLootEntryContainer.FACTORY);
|
||||||
@@ -25,6 +26,7 @@ public class LootEntryContainers {
|
|||||||
register(ITEM, SingleItemLootEntryContainer.FACTORY);
|
register(ITEM, SingleItemLootEntryContainer.FACTORY);
|
||||||
register(EXP, ExpLootEntryContainer.FACTORY);
|
register(EXP, ExpLootEntryContainer.FACTORY);
|
||||||
register(FURNITURE_ITEM, FurnitureItemLootEntryContainer.FACTORY);
|
register(FURNITURE_ITEM, FurnitureItemLootEntryContainer.FACTORY);
|
||||||
|
register(EMPTY, EmptyLoopEntryContainer.FACTORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <T> void register(Key key, LootEntryContainerFactory<T> factory) {
|
public static <T> void register(Key key, LootEntryContainerFactory<T> factory) {
|
||||||
|
|||||||
Reference in New Issue
Block a user