9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-31 04:46:37 +00:00
This commit is contained in:
jhqwqmc
2025-12-28 20:22:53 +08:00
parent 668afcb754
commit 8b87e02531
53 changed files with 109 additions and 111 deletions

View File

@@ -24,7 +24,7 @@ public class BukkitCustomItem extends AbstractCustomItem<ItemStack> {
public BukkitCustomItem(boolean isVanillaItem, UniqueKey id, Object item, Object clientItem, Key materialKey, Key clientBoundMaterialKey,
List<ItemBehavior> behaviors,
List<ItemProcessor> modifiers, List<ItemProcessor> clientBoundModifiers,
List<ItemProcessor<ItemStack>> modifiers, List<ItemProcessor<ItemStack>> clientBoundModifiers,
ItemSettings settings,
Map<EventTrigger, List<Function<Context>>> events,
ItemUpdateConfig updater) {
@@ -37,7 +37,7 @@ public class BukkitCustomItem extends AbstractCustomItem<ItemStack> {
public ItemStack buildItemStack(ItemBuildContext context, int count) {
ItemStack item = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(FastNMS.INSTANCE.constructor$ItemStack(this.item, count));
Item<ItemStack> wrapped = BukkitCraftEngine.instance().itemManager().wrap(item);
for (ItemProcessor modifier : this.modifiers) {
for (ItemProcessor<ItemStack> modifier : this.modifiers) {
modifier.apply(wrapped, context);
}
return wrapped.getItem();
@@ -47,7 +47,7 @@ public class BukkitCustomItem extends AbstractCustomItem<ItemStack> {
public Item<ItemStack> buildItem(ItemBuildContext context, int count) {
ItemStack item = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(FastNMS.INSTANCE.constructor$ItemStack(this.item, count));
Item<ItemStack> wrapped = BukkitCraftEngine.instance().itemManager().wrap(item);
for (ItemProcessor modifier : dataModifiers()) {
for (ItemProcessor<ItemStack> modifier : dataModifiers()) {
modifier.apply(wrapped, context);
}
return wrapped;
@@ -78,8 +78,8 @@ public class BukkitCustomItem extends AbstractCustomItem<ItemStack> {
private final Object clientBoundItem;
private final Map<EventTrigger, List<Function<Context>>> events = new EnumMap<>(EventTrigger.class);
private final List<ItemBehavior> behaviors = new ArrayList<>(4);
private final List<ItemProcessor> modifiers = new ArrayList<>(4);
private final List<ItemProcessor> clientBoundModifiers = new ArrayList<>(4);
private final List<ItemProcessor<ItemStack>> modifiers = new ArrayList<>(4);
private final List<ItemProcessor<ItemStack>> clientBoundModifiers = new ArrayList<>(4);
private ItemSettings settings;
private ItemUpdateConfig updater;
@@ -113,25 +113,25 @@ public class BukkitCustomItem extends AbstractCustomItem<ItemStack> {
}
@Override
public Builder<ItemStack> dataModifier(ItemProcessor modifier) {
public Builder<ItemStack> dataModifier(ItemProcessor<ItemStack> modifier) {
this.modifiers.add(modifier);
return this;
}
@Override
public Builder<ItemStack> dataModifiers(List<ItemProcessor> modifiers) {
public Builder<ItemStack> dataModifiers(List<ItemProcessor<ItemStack>> modifiers) {
this.modifiers.addAll(modifiers);
return this;
}
@Override
public Builder<ItemStack> clientBoundDataModifier(ItemProcessor modifier) {
public Builder<ItemStack> clientBoundDataModifier(ItemProcessor<ItemStack> modifier) {
this.clientBoundModifiers.add(modifier);
return this;
}
@Override
public Builder<ItemStack> clientBoundDataModifiers(List<ItemProcessor> modifiers) {
public Builder<ItemStack> clientBoundDataModifiers(List<ItemProcessor<ItemStack>> modifiers) {
this.clientBoundModifiers.addAll(modifiers);
return null;
}

View File

@@ -221,11 +221,11 @@ public final class LegacyNetworkItemHandler implements NetworkItemHandler<ItemSt
context = NetworkItemBuildContext.of(player);
}
// 准备阶段
for (ItemProcessor modifier : customItem.clientBoundDataModifiers()) {
for (ItemProcessor<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
modifier.prepareNetworkItem(wrapped, context, tag);
}
// 应用阶段
for (ItemProcessor modifier : customItem.clientBoundDataModifiers()) {
for (ItemProcessor<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
modifier.apply(wrapped, context);
}
// 如果拦截物品的描述名称等

View File

@@ -198,11 +198,11 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler<ItemSt
}
// 准备阶段
CompoundTag tag = new CompoundTag();
for (ItemProcessor modifier : customItem.clientBoundDataModifiers()) {
for (ItemProcessor<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
modifier.prepareNetworkItem(original, context, tag);
}
// 应用阶段
for (ItemProcessor modifier : customItem.clientBoundDataModifiers()) {
for (ItemProcessor<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
modifier.apply(wrapped, context);
}
// 如果拦截物品的描述名称等

View File

@@ -20,8 +20,8 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
protected final UniqueKey id;
protected final Key material;
protected final Key clientBoundMaterial;
protected final ItemProcessor[] modifiers;
protected final ItemProcessor[] clientBoundModifiers;
protected final ItemProcessor<I>[] modifiers;
protected final ItemProcessor<I>[] clientBoundModifiers;
protected final List<ItemBehavior> behaviors;
protected final ItemSettings settings;
protected final Map<EventTrigger, List<Function<Context>>> events;
@@ -30,8 +30,8 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
@SuppressWarnings("unchecked")
public AbstractCustomItem(boolean isVanillaItem, UniqueKey id, Key material, Key clientBoundMaterial,
List<ItemBehavior> behaviors,
List<ItemProcessor> modifiers,
List<ItemProcessor> clientBoundModifiers,
List<ItemProcessor<I>> modifiers,
List<ItemProcessor<I>> clientBoundModifiers,
ItemSettings settings,
Map<EventTrigger, List<Function<Context>>> events,
ItemUpdateConfig updater) {
@@ -82,7 +82,7 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
}
@Override
public ItemProcessor[] dataModifiers() {
public ItemProcessor<I>[] dataModifiers() {
return this.modifiers;
}
@@ -97,7 +97,7 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
}
@Override
public ItemProcessor[] clientBoundDataModifiers() {
public ItemProcessor<I>[] clientBoundDataModifiers() {
return this.clientBoundModifiers;
}

View File

@@ -603,7 +603,7 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
// 如果不是原版物品那么加入ce的标识符
if (!isVanillaItem)
itemBuilder.dataModifier(new IdProcessor(id));
itemBuilder.dataModifier(new IdProcessor<>(id));
// 事件
Map<EventTrigger, List<net.momirealms.craftengine.core.plugin.context.function.Function<Context>>> eventTriggerListMap;

View File

@@ -35,11 +35,11 @@ public interface CustomItem<I> extends BuildableItem<I> {
Key clientBoundMaterial();
ItemProcessor[] dataModifiers();
ItemProcessor<I>[] dataModifiers();
boolean hasClientBoundDataModifier();
ItemProcessor[] clientBoundDataModifiers();
ItemProcessor<I>[] clientBoundDataModifiers();
ItemSettings settings();
@@ -63,13 +63,13 @@ public interface CustomItem<I> extends BuildableItem<I> {
Builder<I> material(Key material);
Builder<I> dataModifier(ItemProcessor modifier);
Builder<I> dataModifier(ItemProcessor<I> modifier);
Builder<I> dataModifiers(List<ItemProcessor> modifiers);
Builder<I> dataModifiers(List<ItemProcessor<I>> modifiers);
Builder<I> clientBoundDataModifier(ItemProcessor modifier);
Builder<I> clientBoundDataModifier(ItemProcessor<I> modifier);
Builder<I> clientBoundDataModifiers(List<ItemProcessor> modifiers);
Builder<I> clientBoundDataModifiers(List<ItemProcessor<I>> modifiers);
Builder<I> behavior(ItemBehavior behavior);

View File

@@ -228,7 +228,7 @@ public interface Item<I> {
void merge(Item<I> another);
default Item<I> apply(ItemProcessor modifier, ItemBuildContext context) {
default Item<I> apply(ItemProcessor<I> modifier, ItemBuildContext context) {
return modifier.apply(this, context);
}

View File

@@ -2,7 +2,7 @@ package net.momirealms.craftengine.core.item;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
public interface ItemProcessorFactory<T extends ItemProcessor> {
public interface ItemProcessorFactory<I> {
T create(Object arg);
ItemProcessor<I> create(Object arg);
}

View File

@@ -58,8 +58,8 @@ public class ItemSettings {
private ItemSettings() {}
public <I> List<ItemProcessor> modifiers() {
ArrayList<ItemProcessor> modifiers = new ArrayList<>();
public <I> List<ItemProcessor<I>> modifiers() {
ArrayList<ItemProcessor<I>> modifiers = new ArrayList<>();
if (this.equipment != null) {
EquipmentData data = this.equipment.equipmentData();
if (data != null) {
@@ -75,8 +75,8 @@ public class ItemSettings {
return modifiers;
}
public <I> List<ItemProcessor> clientBoundModifiers() {
ArrayList<ItemProcessor> modifiers = new ArrayList<>();
public <I> List<ItemProcessor<I>> clientBoundModifiers() {
ArrayList<ItemProcessor<I>> modifiers = new ArrayList<>();
if (this.equipment != null) {
if (this.equipment.clientBoundModel().asBoolean(Config.globalClientboundModel())) {
modifiers.addAll(this.equipment.equipment().modifiers());

View File

@@ -26,7 +26,7 @@ public final class ComponentBasedEquipment extends AbstractEquipment implements
}
@Override
public <I> List<ItemProcessor> modifiers() {
public <I> List<ItemProcessor<I>> modifiers() {
return List.of(new EquippableAssetIdProcessor<>(this.assetId));
}

View File

@@ -9,5 +9,5 @@ public interface Equipment {
Key assetId();
<I> List<ItemProcessor> modifiers();
<I> List<ItemProcessor<I>> modifiers();
}

View File

@@ -34,7 +34,7 @@ public final class TrimBasedEquipment extends AbstractEquipment {
}
@Override
public <I> List<ItemProcessor> modifiers() {
public <I> List<ItemProcessor<I>> modifiers() {
return List.of(
new TrimProcessor<>(Key.of(AbstractPackManager.NEW_TRIM_MATERIAL), this.assetId),
new HideTooltipProcessor<>(List.of(DataComponentKeys.TRIM))

View File

@@ -15,7 +15,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
public class ArgumentsProcessor<I> implements ItemProcessor {
public class ArgumentsProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
public static final String ARGUMENTS_TAG = "craftengine:arguments";
private final Map<String, TextProvider> arguments;
@@ -51,7 +51,7 @@ public class ArgumentsProcessor<I> implements ItemProcessor {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "arguments");
Map<String, TextProvider> arguments = new HashMap<>();
for (Map.Entry<String, Object> entry : data.entrySet()) {

View File

@@ -155,7 +155,7 @@ public class AttributeModifiersProcessor<I> implements SimpleNetworkItemProcesso
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
List<PreModifier> attributeModifiers = ResourceConfigUtils.parseConfigAsList(arg, (map) -> {
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.item.data.attribute_modifiers.missing_type");
Key nativeType = AttributeModifiersProcessor.getNativeAttributeName(Key.of(type));

View File

@@ -48,7 +48,7 @@ public class BlockStateProcessor<I> implements SimpleNetworkItemProcessor<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
if (arg instanceof Map<?, ?> map) {
Map<String, String> properties = new HashMap<>();
for (Map.Entry<?, ?> entry : map.entrySet()) {

View File

@@ -12,7 +12,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ComponentsProcessor<I> implements ItemProcessor {
public class ComponentsProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final List<Pair<Key, Tag>> arguments;
private CompoundTag customData = null;
@@ -85,7 +85,7 @@ public class ComponentsProcessor<I> implements ItemProcessor {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "components");
return new ComponentsProcessor<>(data);
}

View File

@@ -15,12 +15,12 @@ import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
public class ConditionalProcessor<I> implements ItemProcessor {
public class ConditionalProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final Predicate<Context> condition;
private final ItemProcessor[] modifiers;
private final ItemProcessor<I>[] modifiers;
public ConditionalProcessor(Predicate<Context> condition, ItemProcessor[] modifiers) {
public ConditionalProcessor(Predicate<Context> condition, ItemProcessor<I>[] modifiers) {
this.modifiers = modifiers;
this.condition = condition;
}
@@ -28,7 +28,7 @@ public class ConditionalProcessor<I> implements ItemProcessor {
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (this.condition.test(context)) {
for (ItemProcessor m : this.modifiers) {
for (ItemProcessor<I> m : this.modifiers) {
item = item.apply(m, context);
}
}
@@ -38,7 +38,7 @@ public class ConditionalProcessor<I> implements ItemProcessor {
@Override
public Item<I> prepareNetworkItem(Item<I> item, ItemBuildContext context, CompoundTag networkData) {
if (this.condition.test(context)) {
for (ItemProcessor m : this.modifiers) {
for (ItemProcessor<I> m : this.modifiers) {
item = m.prepareNetworkItem(item, context, networkData);
}
}
@@ -49,11 +49,11 @@ public class ConditionalProcessor<I> implements ItemProcessor {
@SuppressWarnings("unchecked")
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> conditionalData = ResourceConfigUtils.getAsMap(arg, "conditional");
List<Condition<Context>> conditions = ResourceConfigUtils.parseConfigAsList(conditionalData.get("conditions"), CommonConditions::fromMap);
List<ItemProcessor> modifiers = new ArrayList<>();
ItemProcessors.applyDataModifiers(ResourceConfigUtils.getAsMap(conditionalData.get("data"), "conditional.data"), m -> modifiers.add((ItemProcessor) m));
List<ItemProcessor<I>> modifiers = new ArrayList<>();
ItemProcessors.applyDataModifiers(ResourceConfigUtils.getAsMap(conditionalData.get("data"), "conditional.data"), m -> modifiers.add((ItemProcessor<I>) m));
return new ConditionalProcessor<>(MiscUtils.allOf(conditions), modifiers.toArray(new ItemProcessor[0]));
}
}

View File

@@ -44,7 +44,7 @@ public class CustomModelDataProcessor<I> implements SimpleNetworkItemProcessor<I
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
int customModelData = ResourceConfigUtils.getAsInt(arg, "custom-model-data");
return new CustomModelDataProcessor<>(customModelData);
}

View File

@@ -56,7 +56,7 @@ public class CustomNameProcessor<I> implements SimpleNetworkItemProcessor<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String name = arg.toString();
return new CustomNameProcessor<>(name);
}

View File

@@ -46,7 +46,7 @@ public class DyedColorProcessor<I> implements SimpleNetworkItemProcessor<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
if (arg instanceof Integer integer) {
return new DyedColorProcessor<>(Color.fromDecimal(integer));
} else {

View File

@@ -90,7 +90,7 @@ public class EnchantmentsProcessor<I> implements SimpleNetworkItemProcessor<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> enchantData = ResourceConfigUtils.getAsMap(arg, "enchantments");
List<Enchantment> enchantments = new ArrayList<>();
boolean merge = false;

View File

@@ -45,7 +45,7 @@ public class EquippableAssetIdProcessor<I> implements SimpleNetworkItemProcessor
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String id = arg.toString();
return new EquippableAssetIdProcessor<>(Key.of(id));
}

View File

@@ -36,7 +36,7 @@ public class EquippableProcessor<I> implements SimpleNetworkItemProcessor<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "equippable");
return new EquippableProcessor<>(EquipmentData.fromMap(data));
}

View File

@@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.*;
public class ExternalSourceProcessor<I> implements ItemProcessor {
public class ExternalSourceProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final ThreadLocal<Set<Dependency>> BUILD_STACK = ThreadLocal.withInitial(LinkedHashSet::new);
private final String id;
@@ -68,7 +68,7 @@ public class ExternalSourceProcessor<I> implements ItemProcessor {
@SuppressWarnings("unchecked")
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "external");
String plugin = ResourceConfigUtils.requireNonEmptyStringOrThrow(ResourceConfigUtils.get(data, "plugin", "source"), "warning.config.item.data.external.missing_source");
String id = ResourceConfigUtils.requireNonEmptyStringOrThrow(data.get("id"), "warning.config.item.data.external.missing_id");

View File

@@ -52,7 +52,7 @@ public class FoodProcessor<I> implements SimpleNetworkItemProcessor<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "food");
int nutrition = ResourceConfigUtils.getAsInt(data.get("nutrition"), "nutrition");
float saturation = ResourceConfigUtils.getAsFloat(data.get("saturation"), "saturation");

View File

@@ -15,7 +15,7 @@ import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class HideTooltipProcessor<I> implements ItemProcessor {
public class HideTooltipProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
public static final Map<Key, Integer> TO_LEGACY;
public static final List<Key> COMPONENTS = List.of(
@@ -230,7 +230,7 @@ public class HideTooltipProcessor<I> implements ItemProcessor {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
List<Key> components = MiscUtils.getAsStringList(arg).stream().map(Key::of).toList();
return new HideTooltipProcessor<>(components);
}

View File

@@ -5,9 +5,9 @@ import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
public class IdProcessor implements ItemProcessor {
public class IdProcessor<I> implements ItemProcessor<I> {
public static final String CRAFT_ENGINE_ID = "craftengine:id";
public static final ItemProcessorFactory<IdProcessor> FACTORY = new Factory();
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final Key argument;
public IdProcessor(Key argument) {
@@ -19,17 +19,17 @@ public class IdProcessor implements ItemProcessor {
}
@Override
public Item<?> apply(Item<?> item, ItemBuildContext context) {
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.customId(this.argument);
return item;
}
private static class Factory implements ItemProcessorFactory<IdProcessor> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public IdProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String id = arg.toString();
return new IdProcessor(Key.of(id));
return new IdProcessor<>(Key.of(id));
}
}
}

View File

@@ -32,7 +32,7 @@ public class ItemModelProcessor<I> implements SimpleNetworkItemProcessor<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String id = arg.toString();
return new ItemModelProcessor<>(Key.of(id));
}

View File

@@ -47,7 +47,7 @@ public class ItemNameProcessor<I> implements SimpleNetworkItemProcessor<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String name = arg.toString();
return new ItemNameProcessor<>(name);
}

View File

@@ -4,11 +4,11 @@ import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.sparrow.nbt.CompoundTag;
public interface ItemProcessor {
public interface ItemProcessor<I> {
Item<?> apply(Item<?> item, ItemBuildContext context);
Item<I> apply(Item<I> item, ItemBuildContext context);
default Item<?> prepareNetworkItem(Item<?> item, ItemBuildContext context, CompoundTag networkData) {
default Item<I> prepareNetworkItem(Item<I> item, ItemBuildContext context, CompoundTag networkData) {
return item;
}
}

View File

@@ -3,5 +3,5 @@ package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
public record ItemProcessorType<T extends ItemProcessor>(Key id, ItemProcessorFactory<T> factory) {
public record ItemProcessorType<T>(Key id, ItemProcessorFactory<T> factory) {
}

View File

@@ -71,7 +71,7 @@ public final class ItemProcessors {
}
@SuppressWarnings("unchecked")
public static <I> void applyDataModifiers(Map<String, Object> dataSection, Consumer<ItemProcessor> callback) {
public static <I> void applyDataModifiers(Map<String, Object> dataSection, Consumer<ItemProcessor<I>> callback) {
ExceptionCollector<LocalizedResourceConfigException> errorCollector = new ExceptionCollector<>();
if (dataSection != null) {
for (Map.Entry<String, Object> dataEntry : dataSection.entrySet()) {
@@ -82,7 +82,7 @@ public final class ItemProcessors {
try {
ItemProcessorFactory<?> factory = processorType.factory();
if (factory != null) {
callback.accept((ItemProcessor) factory.create(value));
callback.accept((ItemProcessor<I>) factory.create(value));
}
} catch (LocalizedResourceConfigException e) {
errorCollector.add(e);

View File

@@ -8,7 +8,7 @@ import net.momirealms.sparrow.nbt.CompoundTag;
import java.util.Optional;
public class ItemVersionProcessor<I> implements ItemProcessor {
public class ItemVersionProcessor<I> implements ItemProcessor<I> {
public static final String VERSION_TAG = "craftengine:version";
private final int version;

View File

@@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.data.JukeboxPlayable;
public class JukeboxSongProcessor<I> implements ItemProcessor {
public class JukeboxSongProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final JukeboxPlayable song;
@@ -26,7 +26,7 @@ public class JukeboxSongProcessor<I> implements ItemProcessor {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String song = arg.toString();
return new JukeboxSongProcessor<>(new JukeboxPlayable(song, true));
}

View File

@@ -31,7 +31,7 @@ public class MaxDamageProcessor<I> implements SimpleNetworkItemProcessor<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
NumberProvider numberProvider = NumberProviders.fromObject(arg);
return new MaxDamageProcessor<>(numberProvider);
}

View File

@@ -45,7 +45,7 @@ public class OverwritableCustomModelDataProcessor<I> implements SimpleNetworkIte
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
int customModelData = ResourceConfigUtils.getAsInt(arg, "custom-model-data");
return new OverwritableCustomModelDataProcessor<>(customModelData);
}

View File

@@ -33,7 +33,7 @@ public class OverwritableItemModelProcessor<I> implements SimpleNetworkItemProce
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String id = arg.toString();
return new OverwritableItemModelProcessor<>(Key.of(id));
}

View File

@@ -48,7 +48,7 @@ public class OverwritableItemNameProcessor<I> implements SimpleNetworkItemProces
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
return new OverwritableItemNameProcessor<>(arg.toString());
}
}

View File

@@ -12,7 +12,7 @@ import net.momirealms.sparrow.nbt.CompoundTag;
import java.util.Map;
import java.util.Optional;
public class PDCProcessor<I> implements ItemProcessor {
public class PDCProcessor<I> implements ItemProcessor<I> {
public static final String BUKKIT_PDC = "PublicBukkitValues";
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final CompoundTag data;
@@ -36,7 +36,7 @@ public class PDCProcessor<I> implements ItemProcessor {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "pdc");
CompoundTag tag = (CompoundTag) CraftEngine.instance().platform().javaToSparrowNBT(data);
return new PDCProcessor<>(tag);

View File

@@ -11,7 +11,7 @@ import net.momirealms.sparrow.nbt.Tag;
import java.util.Collections;
import java.util.List;
public class RemoveComponentProcessor<I> implements ItemProcessor {
public class RemoveComponentProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final List<String> arguments;
@@ -45,7 +45,7 @@ public class RemoveComponentProcessor<I> implements ItemProcessor {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
List<String> data = MiscUtils.getAsStringList(arg);
return new RemoveComponentProcessor<>(data);
}

View File

@@ -9,7 +9,7 @@ import net.momirealms.sparrow.nbt.CompoundTag;
import net.momirealms.sparrow.nbt.Tag;
import org.jetbrains.annotations.Nullable;
public interface SimpleNetworkItemProcessor<I> extends ItemProcessor {
public interface SimpleNetworkItemProcessor<I> extends ItemProcessor<I> {
@Override
default Item<I> prepareNetworkItem(Item<I> item, ItemBuildContext context, CompoundTag networkData) {

View File

@@ -11,7 +11,7 @@ import net.momirealms.sparrow.nbt.Tag;
import java.util.LinkedHashMap;
import java.util.Map;
public class TagsProcessor<I> implements ItemProcessor {
public class TagsProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final Map<String, Object> arguments;
@@ -132,7 +132,7 @@ public class TagsProcessor<I> implements ItemProcessor {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "nbt");
return new TagsProcessor<>(data);
}

View File

@@ -33,7 +33,7 @@ public class TooltipStyleProcessor<I> implements SimpleNetworkItemProcessor<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String id = arg.toString();
return new TooltipStyleProcessor<>(Key.of(id));
}

View File

@@ -54,7 +54,7 @@ public class TrimProcessor<I> implements SimpleNetworkItemProcessor<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "trim");
String material = data.get("material").toString().toLowerCase(Locale.ENGLISH);
String pattern = data.get("pattern").toString().toLowerCase(Locale.ENGLISH);

View File

@@ -45,7 +45,7 @@ public class UnbreakableProcessor<I> implements SimpleNetworkItemProcessor<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
boolean value = ResourceConfigUtils.getAsBoolean(arg, "unbreakable");
return new UnbreakableProcessor<>(value);
}

View File

@@ -54,7 +54,7 @@ public final class DynamicLoreProcessor<I> implements SimpleNetworkItemProcessor
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, LoreProcessor<I>> dynamicLore = new LinkedHashMap<>();
if (arg instanceof Map<?, ?> map) {
for (Map.Entry<?, ?> entry : map.entrySet()) {

View File

@@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.processor.ItemProcessor;
class LoreFactory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
return LoreProcessor.createLoreModifier(arg);
}
}

View File

@@ -49,7 +49,7 @@ public final class OverwritableLoreProcessor<I> implements SimpleNetworkItemProc
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor create(Object arg) {
public ItemProcessor<I> create(Object arg) {
LoreProcessor<I> lore = LoreProcessor.createLoreModifier(arg);
return new OverwritableLoreProcessor<>(lore);
}

View File

@@ -12,15 +12,15 @@ import java.util.Map;
public class ApplyItemDataPostProcessor<T> implements PostProcessor<T> {
public static final PostProcessorFactory<?> FACTORY = new Factory<>();
private final ItemProcessor[] modifiers;
private final ItemProcessor<T>[] modifiers;
public ApplyItemDataPostProcessor(ItemProcessor[] modifiers) {
public ApplyItemDataPostProcessor(ItemProcessor<T>[] modifiers) {
this.modifiers = modifiers;
}
@Override
public Item<T> process(Item<T> item, ItemBuildContext context) {
for (ItemProcessor modifier : this.modifiers) {
for (ItemProcessor<T> modifier : this.modifiers) {
item.apply(modifier, context);
}
return item;
@@ -31,7 +31,7 @@ public class ApplyItemDataPostProcessor<T> implements PostProcessor<T> {
@SuppressWarnings("unchecked")
@Override
public PostProcessor<A> create(Map<String, Object> args) {
List<ItemProcessor> modifiers = new ArrayList<>();
List<ItemProcessor<?>> modifiers = new ArrayList<>();
Map<String, Object> data = ResourceConfigUtils.getAsMap(args.get("data"), "data");
ItemProcessors.applyDataModifiers(data, modifiers::add);
return new ApplyItemDataPostProcessor<>(modifiers.toArray(new ItemProcessor[0]));

View File

@@ -15,16 +15,16 @@ import java.util.Map;
public final class ApplyDataOperation<I> implements ItemUpdater<I> {
public static final ItemUpdaterFactory<?> FACTORY = new Factory<>();
private final List<ItemProcessor> modifiers;
private final List<ItemProcessor<I>> modifiers;
public ApplyDataOperation(List<ItemProcessor> modifiers) {
public ApplyDataOperation(List<ItemProcessor<I>> modifiers) {
this.modifiers = modifiers;
}
@Override
public Item<I> update(Item<I> item, ItemBuildContext context) {
if (this.modifiers != null) {
for (ItemProcessor modifier : this.modifiers) {
for (ItemProcessor<I> modifier : this.modifiers) {
modifier.apply(item, context);
}
}
@@ -36,10 +36,10 @@ public final class ApplyDataOperation<I> implements ItemUpdater<I> {
@SuppressWarnings("unchecked")
@Override
public ItemUpdater<I> create(Key item, Map<String, Object> args) {
List<ItemProcessor> modifiers = new ArrayList<>();
List<ItemProcessor<I>> modifiers = new ArrayList<>();
Map<String, Object> data = ResourceConfigUtils.getAsMap(args.get("data"), "data");
ItemProcessors.applyDataModifiers(data, m -> {
modifiers.add((ItemProcessor) m);
modifiers.add((ItemProcessor<I>) m);
});
return new ApplyDataOperation<>(modifiers);
}

View File

@@ -15,9 +15,9 @@ import java.util.Map;
public final class ApplyDataFunction<T> extends AbstractLootConditionalFunction<T> {
public static final LootFunctionFactory<?> FACTORY = new Factory<>();
private final ItemProcessor[] modifiers;
private final ItemProcessor<?>[] modifiers;
public ApplyDataFunction(List<Condition<LootContext>> conditions, ItemProcessor[] modifiers) {
public ApplyDataFunction(List<Condition<LootContext>> conditions, ItemProcessor<?>[] modifiers) {
super(conditions);
this.modifiers = modifiers;
}
@@ -36,7 +36,7 @@ public final class ApplyDataFunction<T> extends AbstractLootConditionalFunction<
@Override
public LootFunction<A> create(Map<String, Object> arguments) {
List<ItemProcessor> modifiers = new ArrayList<>();
List<ItemProcessor<?>> modifiers = new ArrayList<>();
Map<String, Object> data = ResourceConfigUtils.getAsMap(ResourceConfigUtils.requireNonNullOrThrow(arguments.get("data"), "warning.config.loot_table.function.apply_data.missing_data"), "data");
ItemProcessors.applyDataModifiers(data, modifiers::add);
List<Condition<LootContext>> conditions = ResourceConfigUtils.parseConfigAsList(arguments.get("conditions"), CommonConditions::fromMap);

View File

@@ -18,7 +18,6 @@ import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorType;
import net.momirealms.craftengine.core.item.equipment.Equipment;
import net.momirealms.craftengine.core.item.equipment.EquipmentType;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessorType;
import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe;
import net.momirealms.craftengine.core.item.recipe.Recipe;
@@ -66,7 +65,7 @@ import net.momirealms.craftengine.core.util.ResourceKey;
public final class BuiltInRegistries {
public static final Registry<CustomBlock> BLOCK = createDynamicBoundRegistry(Registries.BLOCK, 512);
public static final Registry<BlockBehaviorType<? extends BlockBehavior>> BLOCK_BEHAVIOR_TYPE = createConstantBoundRegistry(Registries.BLOCK_BEHAVIOR_TYPE, 64);
public static final Registry<ItemProcessorType<? extends ItemProcessor>> ITEM_PROCESSOR_TYPE = createConstantBoundRegistry(Registries.ITEM_PROCESSOR_TYPE, 64);
public static final Registry<ItemProcessorType<?>> ITEM_PROCESSOR_TYPE = createConstantBoundRegistry(Registries.ITEM_PROCESSOR_TYPE, 64);
public static final Registry<ItemBehaviorType<? extends ItemBehavior>> ITEM_BEHAVIOR_TYPE = createConstantBoundRegistry(Registries.ITEM_BEHAVIOR_TYPE, 64);
public static final Registry<PropertyType<? extends Comparable<?>>> PROPERTY_TYPE = createConstantBoundRegistry(Registries.PROPERTY_TYPE, 16);
public static final Registry<LootFunctionType<?>> LOOT_FUNCTION_TYPE = createConstantBoundRegistry(Registries.LOOT_FUNCTION_TYPE, 32);

View File

@@ -18,7 +18,6 @@ import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorType;
import net.momirealms.craftengine.core.item.equipment.Equipment;
import net.momirealms.craftengine.core.item.equipment.EquipmentType;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessorType;
import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe;
import net.momirealms.craftengine.core.item.recipe.Recipe;
@@ -69,7 +68,7 @@ public final class Registries {
public static final Key ROOT_REGISTRY = Key.withDefaultNamespace("root");
public static final ResourceKey<Registry<CustomBlock>> BLOCK = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block"));
public static final ResourceKey<Registry<ItemProcessorType<? extends ItemProcessor>>> ITEM_PROCESSOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_processor_type"));
public static final ResourceKey<Registry<ItemProcessorType<?>>> ITEM_PROCESSOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_processor_type"));
public static final ResourceKey<Registry<PropertyType<? extends Comparable<?>>>> PROPERTY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("property_type"));
public static final ResourceKey<Registry<BlockBehaviorType<? extends BlockBehavior>>> BLOCK_BEHAVIOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block_behavior_type"));
public static final ResourceKey<Registry<ItemBehaviorType<? extends ItemBehavior>>> ITEM_BEHAVIOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_behavior_type"));