9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-19 15:09:15 +00:00

Merge pull request #475 from iqtesterr/dev

how about empty loot entry
This commit is contained in:
XiaoMoMi
2025-11-22 14:58:33 +08:00
committed by GitHub
2 changed files with 45 additions and 0 deletions

View File

@@ -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);
}
}
}

View File

@@ -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) {