9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2026-01-04 15:41:38 +00:00

将方块行为id转至各个实现内

This commit is contained in:
XiaoMoMi
2025-12-26 20:17:23 +08:00
parent 4420e4ceae
commit b51ee588a8
123 changed files with 756 additions and 910 deletions

View File

@@ -18,6 +18,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.Optional;
import java.util.concurrent.Callable;
// todo move the package on 1.0
public abstract class BlockBehavior {
@SuppressWarnings("unchecked")

View File

@@ -0,0 +1,6 @@
package net.momirealms.craftengine.core.block.behavior;
import net.momirealms.craftengine.core.util.Key;
public record BlockBehaviorType(Key id, BlockBehaviorFactory factory) {
}

View File

@@ -14,21 +14,26 @@ import org.jetbrains.annotations.Nullable;
import java.util.Map;
public class BlockBehaviors {
public static final Key EMPTY = Key.from("craftengine:empty");
public static final BlockBehaviorType EMPTY = register(Key.from("craftengine:empty"), (block, args) -> EmptyBlockBehavior.INSTANCE);
public static void register(Key key, BlockBehaviorFactory factory) {
((WritableRegistry<BlockBehaviorFactory>) BuiltInRegistries.BLOCK_BEHAVIOR_FACTORY)
.register(ResourceKey.create(Registries.BLOCK_BEHAVIOR_FACTORY.location(), key), factory);
protected BlockBehaviors() {
}
public static BlockBehaviorType register(Key key, BlockBehaviorFactory factory) {
BlockBehaviorType type = new BlockBehaviorType(key, factory);
((WritableRegistry<BlockBehaviorType>) BuiltInRegistries.BLOCK_BEHAVIOR_TYPE)
.register(ResourceKey.create(Registries.BLOCK_BEHAVIOR_TYPE.location(), key), type);
return type;
}
public static BlockBehavior fromMap(CustomBlock block, @Nullable Map<String, Object> map) {
if (map == null || map.isEmpty()) return EmptyBlockBehavior.INSTANCE;
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.block.behavior.missing_type");
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
BlockBehaviorFactory factory = BuiltInRegistries.BLOCK_BEHAVIOR_FACTORY.getValue(key);
BlockBehaviorType factory = BuiltInRegistries.BLOCK_BEHAVIOR_TYPE.getValue(key);
if (factory == null) {
throw new LocalizedResourceConfigException("warning.config.block.behavior.invalid_type", type);
}
return factory.create(block, map);
return factory.factory().create(block, map);
}
}

View File

@@ -29,7 +29,7 @@ public class FurnitureBehaviorTypes {
public static <T extends FurnitureBehavior> FurnitureBehaviorType<T> register(Key id, FurnitureBehaviorFactory<T> factory) {
FurnitureBehaviorType<T> type = new FurnitureBehaviorType<>(id, factory);
((WritableRegistry<FurnitureBehaviorType<?>>) BuiltInRegistries.FURNITURE_BEHAVIOR_TYPE)
.register(ResourceKey.create(Registries.BLOCK_BEHAVIOR_FACTORY.location(), id), type);
.register(ResourceKey.create(Registries.BLOCK_BEHAVIOR_TYPE.location(), id), type);
return type;
}
}

View File

@@ -1,7 +1,7 @@
package net.momirealms.craftengine.core.item;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig;
import net.momirealms.craftengine.core.plugin.context.Context;
import net.momirealms.craftengine.core.plugin.context.event.EventTrigger;
@@ -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 ItemDataModifier<I>[] modifiers;
protected final ItemDataModifier<I>[] 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<ItemDataModifier<I>> modifiers,
List<ItemDataModifier<I>> clientBoundModifiers,
List<ItemProcessor<I>> modifiers,
List<ItemProcessor<I>> clientBoundModifiers,
ItemSettings settings,
Map<EventTrigger, List<Function<Context>>> events,
ItemUpdateConfig updater) {
@@ -41,9 +41,9 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
this.clientBoundMaterial = clientBoundMaterial;
this.events = events;
// unchecked cast
this.modifiers = modifiers.toArray(new ItemDataModifier[0]);
this.modifiers = modifiers.toArray(new ItemProcessor[0]);
// unchecked cast
this.clientBoundModifiers = clientBoundModifiers.toArray(new ItemDataModifier[0]);
this.clientBoundModifiers = clientBoundModifiers.toArray(new ItemProcessor[0]);
this.behaviors = List.copyOf(behaviors);
this.settings = settings;
this.updater = updater;
@@ -82,7 +82,7 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
}
@Override
public ItemDataModifier<I>[] dataModifiers() {
public ItemProcessor<I>[] dataModifiers() {
return this.modifiers;
}
@@ -97,7 +97,7 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
}
@Override
public ItemDataModifier<I>[] clientBoundDataModifiers() {
public ItemProcessor<I>[] clientBoundDataModifiers() {
return this.clientBoundModifiers;
}

View File

@@ -5,7 +5,7 @@ import com.google.gson.JsonPrimitive;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviors;
import net.momirealms.craftengine.core.item.equipment.*;
import net.momirealms.craftengine.core.item.modifier.*;
import net.momirealms.craftengine.core.item.processor.*;
import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig;
import net.momirealms.craftengine.core.item.updater.ItemUpdateResult;
import net.momirealms.craftengine.core.item.updater.ItemUpdater;
@@ -70,7 +70,7 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
super(plugin);
this.itemParser = new ItemParser();
this.equipmentParser = new EquipmentParser();
ItemDataModifiers.init();
ItemProcessors.init();
}
public ItemParser itemParser() {
@@ -574,17 +574,17 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
}
if (customModelData > 0 && (hasModelSection || forceCustomModelData)) {
if (clientBoundModel) itemBuilder.clientBoundDataModifier(new OverwritableCustomModelDataModifier<>(customModelData));
else itemBuilder.dataModifier(new CustomModelDataModifier<>(customModelData));
if (clientBoundModel) itemBuilder.clientBoundDataModifier(new OverwritableCustomModelDataProcessor<>(customModelData));
else itemBuilder.dataModifier(new CustomModelDataProcessor<>(customModelData));
}
if (itemModel != null && (hasModelSection || forceItemModel)) {
if (clientBoundModel) itemBuilder.clientBoundDataModifier(new OverwritableItemModelModifier<>(itemModel));
else itemBuilder.dataModifier(new ItemModelModifier<>(itemModel));
if (clientBoundModel) itemBuilder.clientBoundDataModifier(new OverwritableItemModelProcessor<>(itemModel));
else itemBuilder.dataModifier(new ItemModelProcessor<>(itemModel));
}
// 应用物品数据
try {
ItemDataModifiers.applyDataModifiers(MiscUtils.castToMap(section.get("data"), true), itemBuilder::dataModifier);
ItemProcessors.applyDataModifiers(MiscUtils.castToMap(section.get("data"), true), itemBuilder::dataModifier);
} catch (LocalizedResourceConfigException e) {
collector.add(e);
}
@@ -592,7 +592,7 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
// 应用客户端侧数据
try {
if (VersionHelper.PREMIUM) {
ItemDataModifiers.applyDataModifiers(MiscUtils.castToMap(section.get("client-bound-data"), true), itemBuilder::clientBoundDataModifier);
ItemProcessors.applyDataModifiers(MiscUtils.castToMap(section.get("client-bound-data"), true), itemBuilder::clientBoundDataModifier);
}
} catch (LocalizedResourceConfigException e) {
collector.add(e);
@@ -600,7 +600,7 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
// 如果不是原版物品那么加入ce的标识符
if (!isVanillaItem)
itemBuilder.dataModifier(new IdModifier<>(id));
itemBuilder.dataModifier(new IdProcessor<>(id));
// 事件
Map<EventTrigger, List<net.momirealms.craftengine.core.plugin.context.function.Function<Context>>> eventTriggerListMap;
@@ -648,7 +648,7 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
}
ItemUpdateConfig config = new ItemUpdateConfig(versions);
itemBuilder.updater(config);
itemBuilder.dataModifier(new ItemVersionModifier<>(config.maxVersion()));
itemBuilder.dataModifier(new ItemVersionProcessor<>(config.maxVersion()));
}
// 构建自定义物品

View File

@@ -1,7 +1,7 @@
package net.momirealms.craftengine.core.item;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig;
import net.momirealms.craftengine.core.plugin.context.Context;
import net.momirealms.craftengine.core.plugin.context.event.EventTrigger;
@@ -35,11 +35,11 @@ public interface CustomItem<I> extends BuildableItem<I> {
Key clientBoundMaterial();
ItemDataModifier<I>[] dataModifiers();
ItemProcessor<I>[] dataModifiers();
boolean hasClientBoundDataModifier();
ItemDataModifier<I>[] 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(ItemDataModifier<I> modifier);
Builder<I> dataModifier(ItemProcessor<I> modifier);
Builder<I> dataModifiers(List<ItemDataModifier<I>> modifiers);
Builder<I> dataModifiers(List<ItemProcessor<I>> modifiers);
Builder<I> clientBoundDataModifier(ItemDataModifier<I> modifier);
Builder<I> clientBoundDataModifier(ItemProcessor<I> modifier);
Builder<I> clientBoundDataModifiers(List<ItemDataModifier<I>> modifiers);
Builder<I> clientBoundDataModifiers(List<ItemProcessor<I>> modifiers);
Builder<I> behavior(ItemBehavior behavior);

View File

@@ -10,7 +10,7 @@ import net.momirealms.craftengine.core.item.data.Enchantment;
import net.momirealms.craftengine.core.item.data.FireworkExplosion;
import net.momirealms.craftengine.core.item.data.JukeboxPlayable;
import net.momirealms.craftengine.core.item.data.Trim;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.setting.EquipmentData;
import net.momirealms.craftengine.core.util.Color;
import net.momirealms.craftengine.core.util.Key;
@@ -228,7 +228,7 @@ public interface Item<I> {
void merge(Item<I> another);
default Item<I> apply(ItemDataModifier<I> modifier, ItemBuildContext context) {
default Item<I> apply(ItemProcessor<I> modifier, ItemBuildContext context) {
return modifier.apply(this, context);
}

View File

@@ -1,8 +0,0 @@
package net.momirealms.craftengine.core.item;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
public interface ItemDataModifierFactory<I> {
ItemDataModifier<I> create(Object arg);
}

View File

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

View File

@@ -5,9 +5,9 @@ import net.momirealms.craftengine.core.entity.display.ItemDisplayContext;
import net.momirealms.craftengine.core.entity.projectile.ProjectileMeta;
import net.momirealms.craftengine.core.item.equipment.ComponentBasedEquipment;
import net.momirealms.craftengine.core.item.equipment.Equipment;
import net.momirealms.craftengine.core.item.modifier.EquippableModifier;
import net.momirealms.craftengine.core.item.modifier.FoodModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.EquippableProcessor;
import net.momirealms.craftengine.core.item.processor.FoodProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.recipe.remainder.CraftRemainder;
import net.momirealms.craftengine.core.item.recipe.remainder.CraftRemainders;
import net.momirealms.craftengine.core.item.setting.*;
@@ -57,25 +57,25 @@ public class ItemSettings {
private ItemSettings() {}
public <I> List<ItemDataModifier<I>> modifiers() {
ArrayList<ItemDataModifier<I>> 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) {
modifiers.add(new EquippableModifier<>(data));
modifiers.add(new EquippableProcessor<>(data));
}
if (!this.equipment.clientBoundModel().asBoolean(Config.globalClientboundModel())) {
modifiers.addAll(this.equipment.equipment().modifiers());
}
}
if (VersionHelper.isOrAbove1_20_5() && this.foodData != null) {
modifiers.add(new FoodModifier<>(this.foodData.nutrition(), this.foodData.saturation(), false));
modifiers.add(new FoodProcessor<>(this.foodData.nutrition(), this.foodData.saturation(), false));
}
return modifiers;
}
public <I> List<ItemDataModifier<I>> clientBoundModifiers() {
ArrayList<ItemDataModifier<I>> 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

@@ -2,8 +2,8 @@ package net.momirealms.craftengine.core.item.equipment;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.item.modifier.EquippableAssetIdModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.EquippableAssetIdProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -31,8 +31,8 @@ public class ComponentBasedEquipment extends AbstractEquipment implements Suppli
}
@Override
public <I> List<ItemDataModifier<I>> modifiers() {
return List.of(new EquippableAssetIdModifier<>(this.assetId));
public <I> List<ItemProcessor<I>> modifiers() {
return List.of(new EquippableAssetIdProcessor<>(this.assetId));
}
public EnumMap<EquipmentLayerType, List<Layer>> layers() {

View File

@@ -1,6 +1,6 @@
package net.momirealms.craftengine.core.item.equipment;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.util.Key;
import java.util.List;
@@ -11,5 +11,5 @@ public interface Equipment {
Key type();
<I> List<ItemDataModifier<I>> modifiers();
<I> List<ItemProcessor<I>> modifiers();
}

View File

@@ -1,9 +1,9 @@
package net.momirealms.craftengine.core.item.equipment;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.modifier.HideTooltipModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.modifier.TrimModifier;
import net.momirealms.craftengine.core.item.processor.HideTooltipProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.processor.TrimProcessor;
import net.momirealms.craftengine.core.pack.AbstractPackManager;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
@@ -39,10 +39,10 @@ public class TrimBasedEquipment extends AbstractEquipment {
}
@Override
public <I> List<ItemDataModifier<I>> modifiers() {
public <I> List<ItemProcessor<I>> modifiers() {
return List.of(
new TrimModifier<>(Key.of(AbstractPackManager.NEW_TRIM_MATERIAL), this.assetId),
new HideTooltipModifier<>(List.of(DataComponentKeys.TRIM))
new TrimProcessor<>(Key.of(AbstractPackManager.NEW_TRIM_MATERIAL), this.assetId),
new HideTooltipProcessor<>(List.of(DataComponentKeys.TRIM))
);
}

View File

@@ -1,40 +0,0 @@
package net.momirealms.craftengine.core.item.modifier;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.data.JukeboxPlayable;
import net.momirealms.craftengine.core.util.Key;
public class JukeboxSongModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
private final JukeboxPlayable song;
public JukeboxSongModifier(JukeboxPlayable song) {
this.song = song;
}
public JukeboxPlayable song() {
return song;
}
@Override
public Key type() {
return ItemDataModifiers.JUKEBOX_PLAYABLE;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.jukeboxSong(this.song);
return item;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
String song = arg.toString();
return new JukeboxSongModifier<>(new JukeboxPlayable(song, true));
}
}
}

View File

@@ -1,9 +1,9 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.context.text.TextProvider;
import net.momirealms.craftengine.core.plugin.context.text.TextProviders;
import net.momirealms.craftengine.core.util.Key;
@@ -16,12 +16,12 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
public class ArgumentsModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
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;
public ArgumentsModifier(Map<String, TextProvider> arguments) {
public ArgumentsProcessor(Map<String, TextProvider> arguments) {
this.arguments = arguments;
}
@@ -29,11 +29,6 @@ public class ArgumentsModifier<I> implements ItemDataModifier<I> {
return arguments;
}
@Override
public Key type() {
return ItemDataModifiers.ARGUMENTS;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (VersionHelper.isOrAbove1_20_5()) {
@@ -54,16 +49,16 @@ public class ArgumentsModifier<I> implements ItemDataModifier<I> {
return item;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> 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()) {
arguments.put(entry.getKey(), TextProviders.fromString(entry.getValue().toString()));
}
return new ArgumentsModifier<>(arguments);
return new ArgumentsProcessor<>(arguments);
}
}
}

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.attribute.AttributeModifier;
import net.momirealms.craftengine.core.attribute.Attributes;
@@ -6,7 +6,7 @@ import net.momirealms.craftengine.core.attribute.Attributes1_21;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.context.number.NumberProvider;
import net.momirealms.craftengine.core.plugin.context.number.NumberProviders;
import net.momirealms.craftengine.core.util.*;
@@ -14,8 +14,8 @@ import org.jetbrains.annotations.Nullable;
import java.util.*;
public class AttributeModifiersModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class AttributeModifiersProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
public static final Map<Key, Key> CONVERTOR = new HashMap<>();
private static final Object[] NBT_PATH = new Object[]{"AttributeModifiers"};
@@ -91,7 +91,7 @@ public class AttributeModifiersModifier<I> implements SimpleNetworkItemDataModif
private final List<PreModifier> modifiers;
public AttributeModifiersModifier(List<PreModifier> modifiers) {
public AttributeModifiersProcessor(List<PreModifier> modifiers) {
this.modifiers = modifiers;
}
@@ -99,11 +99,6 @@ public class AttributeModifiersModifier<I> implements SimpleNetworkItemDataModif
return this.modifiers;
}
@Override
public Key type() {
return ItemDataModifiers.ATTRIBUTE_MODIFIERS;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
List<AttributeModifier> results = new ArrayList<>(this.modifiers.size());
@@ -133,7 +128,7 @@ public class AttributeModifiersModifier<I> implements SimpleNetworkItemDataModif
Optional<Key> id,
NumberProvider amount,
AttributeModifier.Operation operation,
AttributeModifiersModifier.PreModifier.@Nullable PreDisplay display) {
AttributeModifiersProcessor.PreModifier.@Nullable PreDisplay display) {
public PreModifier(String type, AttributeModifier.Slot slot, Optional<Key> id, NumberProvider amount, AttributeModifier.Operation operation, @Nullable PreDisplay display) {
this.amount = amount;
@@ -157,13 +152,13 @@ public class AttributeModifiersModifier<I> implements SimpleNetworkItemDataModif
}
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> 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 = AttributeModifiersModifier.getNativeAttributeName(Key.of(type));
Key nativeType = AttributeModifiersProcessor.getNativeAttributeName(Key.of(type));
AttributeModifier.Slot slot = AttributeModifier.Slot.valueOf(map.getOrDefault("slot", "any").toString().toUpperCase(Locale.ENGLISH));
Optional<Key> id = Optional.ofNullable(map.get("id")).map(String::valueOf).map(Key::of);
NumberProvider amount = NumberProviders.fromObject(ResourceConfigUtils.requireNonNullOrThrow(map.get("amount"), "warning.config.item.data.attribute_modifiers.missing_amount"));
@@ -184,7 +179,7 @@ public class AttributeModifiersModifier<I> implements SimpleNetworkItemDataModif
return new PreModifier(nativeType.value(), slot, id,
amount, operation, display);
});
return new AttributeModifiersModifier<>(attributeModifiers);
return new AttributeModifiersProcessor<>(attributeModifiers);
}
}
}

View File

@@ -1,11 +1,11 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.block.BlockStateWrapper;
import net.momirealms.craftengine.core.block.CustomBlockStateWrapper;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.LazyReference;
@@ -16,20 +16,15 @@ import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public class BlockStateModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class BlockStateProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final Object[] NBT_PATH = new Object[]{"BlockStateTag"};
private final LazyReference<Map<String, String>> wrapper;
public BlockStateModifier(LazyReference<Map<String, String>> wrapper) {
public BlockStateProcessor(LazyReference<Map<String, String>> wrapper) {
this.wrapper = wrapper;
}
@Override
public Key type() {
return ItemDataModifiers.BLOCK_STATE;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
return item.blockState(this.wrapper.get());
@@ -50,19 +45,19 @@ public class BlockStateModifier<I> implements SimpleNetworkItemDataModifier<I> {
return DataComponentKeys.BLOCK_STATE;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> 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()) {
properties.put(entry.getKey().toString(), entry.getValue().toString());
}
return new BlockStateModifier<>(LazyReference.lazyReference(() -> properties));
return new BlockStateProcessor<>(LazyReference.lazyReference(() -> properties));
} else {
String stateString = arg.toString();
return new BlockStateModifier<>(LazyReference.lazyReference(() -> {
return new BlockStateProcessor<>(LazyReference.lazyReference(() -> {
BlockStateWrapper blockState = CraftEngine.instance().blockManager().createBlockState(stateString);
if (blockState instanceof CustomBlockStateWrapper customBlockStateWrapper) {
blockState = customBlockStateWrapper.visualBlockState();

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import com.google.gson.JsonElement;
import net.momirealms.craftengine.core.item.*;
@@ -12,12 +12,12 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ComponentsModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
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;
public ComponentsModifier(Map<String, Object> arguments) {
public ComponentsProcessor(Map<String, Object> arguments) {
List<Pair<Key, Tag>> pairs = new ArrayList<>(arguments.size());
for (Map.Entry<String, Object> entry : arguments.entrySet()) {
Key key = Key.of(entry.getKey());
@@ -50,11 +50,6 @@ public class ComponentsModifier<I> implements ItemDataModifier<I> {
return CraftEngine.instance().platform().javaToSparrowNBT(value);
}
@Override
public Key type() {
return ItemDataModifiers.COMPONENTS;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
for (Pair<Key, Tag> entry : this.arguments) {
@@ -87,12 +82,12 @@ public class ComponentsModifier<I> implements ItemDataModifier<I> {
return item;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "components");
return new ComponentsModifier<>(data);
return new ComponentsProcessor<>(data);
}
}
}

View File

@@ -1,8 +1,8 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.context.Condition;
import net.momirealms.craftengine.core.plugin.context.Context;
import net.momirealms.craftengine.core.plugin.context.event.EventConditions;
@@ -16,25 +16,20 @@ import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
public class ConditionalModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class ConditionalProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final Predicate<Context> condition;
private final ItemDataModifier<I>[] modifiers;
private final ItemProcessor<I>[] modifiers;
public ConditionalModifier(Predicate<Context> condition, ItemDataModifier<I>[] modifiers) {
public ConditionalProcessor(Predicate<Context> condition, ItemProcessor<I>[] modifiers) {
this.modifiers = modifiers;
this.condition = condition;
}
@Override
public Key type() {
return ItemDataModifiers.CONDITIONAL;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (this.condition.test(context)) {
for (ItemDataModifier<I> m : this.modifiers) {
for (ItemProcessor<I> m : this.modifiers) {
item = item.apply(m, context);
}
}
@@ -44,23 +39,23 @@ public class ConditionalModifier<I> implements ItemDataModifier<I> {
@Override
public Item<I> prepareNetworkItem(Item<I> item, ItemBuildContext context, CompoundTag networkData) {
if (this.condition.test(context)) {
for (ItemDataModifier<I> m : this.modifiers) {
for (ItemProcessor<I> m : this.modifiers) {
item = m.prepareNetworkItem(item, context, networkData);
}
}
return item;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@SuppressWarnings("unchecked")
@Override
public ItemDataModifier<I> 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"), EventConditions::fromMap);
List<ItemDataModifier<I>> modifiers = new ArrayList<>();
ItemDataModifiers.applyDataModifiers(ResourceConfigUtils.getAsMap(conditionalData.get("data"), "conditional.data"), m -> modifiers.add((ItemDataModifier<I>) m));
return new ConditionalModifier<>(MiscUtils.allOf(conditions), modifiers.toArray(new ItemDataModifier[0]));
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

@@ -1,18 +1,18 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.Nullable;
public class CustomModelDataModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class CustomModelDataProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final int argument;
public CustomModelDataModifier(int argument) {
public CustomModelDataProcessor(int argument) {
this.argument = argument;
}
@@ -20,11 +20,6 @@ public class CustomModelDataModifier<I> implements SimpleNetworkItemDataModifier
return this.argument;
}
@Override
public Key type() {
return ItemDataModifiers.CUSTOM_MODEL_DATA;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.customModelData(argument);
@@ -46,12 +41,12 @@ public class CustomModelDataModifier<I> implements SimpleNetworkItemDataModifier
return "CustomModelData";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
int customModelData = ResourceConfigUtils.getAsInt(arg, "custom-model-data");
return new CustomModelDataModifier<>(customModelData);
return new CustomModelDataProcessor<>(customModelData);
}
}
}

View File

@@ -1,21 +1,21 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.config.Config;
import net.momirealms.craftengine.core.plugin.text.minimessage.FormattedLine;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
public class CustomNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class CustomNameProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final Object[] NBT_PATH = new Object[]{"display", "Name"};
private final String argument;
private final FormattedLine line;
public CustomNameModifier(String argument) {
public CustomNameProcessor(String argument) {
if (Config.addNonItalicTag()) {
if (argument.startsWith("<!i>")) {
this.argument = argument;
@@ -32,11 +32,6 @@ public class CustomNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
return argument;
}
@Override
public Key type() {
return ItemDataModifiers.CUSTOM_NAME;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.customNameComponent(this.line.parse(context));
@@ -58,12 +53,12 @@ public class CustomNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
return "display.Name";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String name = arg.toString();
return new CustomNameModifier<>(name);
return new CustomNameProcessor<>(name);
}
}
}

View File

@@ -1,21 +1,21 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Color;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.Nullable;
import org.joml.Vector3f;
public class DyedColorModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class DyedColorProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final Object[] NBT_PATH = new Object[]{"display", "color"};
private final Color color;
public DyedColorModifier(Color color) {
public DyedColorProcessor(Color color) {
this.color = color;
}
@@ -23,11 +23,6 @@ public class DyedColorModifier<I> implements SimpleNetworkItemDataModifier<I> {
return color;
}
@Override
public Key type() {
return ItemDataModifiers.DYED_COLOR;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
return item.dyedColor(this.color);
@@ -48,15 +43,15 @@ public class DyedColorModifier<I> implements SimpleNetworkItemDataModifier<I> {
return "display.color";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
if (arg instanceof Integer integer) {
return new DyedColorModifier<>(Color.fromDecimal(integer));
return new DyedColorProcessor<>(Color.fromDecimal(integer));
} else {
Vector3f vector3f = ResourceConfigUtils.getAsVector3f(arg, "dyed-color");
return new DyedColorModifier<>(Color.fromVector3f(vector3f));
return new DyedColorProcessor<>(Color.fromVector3f(vector3f));
}
}
}

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.*;
import net.momirealms.craftengine.core.item.data.Enchantment;
@@ -13,14 +13,14 @@ import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class EnchantmentsModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class EnchantmentsProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final Object[] STORED_ENCHANTMENTS = new Object[] {"StoredEnchantments"};
private static final Object[] ENCHANTMENTS = new Object[] {"Enchantments"};
private final List<Enchantment> enchantments;
private final boolean merge;
public EnchantmentsModifier(List<Enchantment> enchantments, boolean merge) {
public EnchantmentsProcessor(List<Enchantment> enchantments, boolean merge) {
this.enchantments = enchantments;
this.merge = merge;
}
@@ -33,11 +33,6 @@ public class EnchantmentsModifier<I> implements SimpleNetworkItemDataModifier<I>
return enchantments;
}
@Override
public Key type() {
return ItemDataModifiers.ENCHANTMENTS;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (item.vanillaId().equals(ItemKeys.ENCHANTED_BOOK)) {
@@ -92,10 +87,10 @@ public class EnchantmentsModifier<I> implements SimpleNetworkItemDataModifier<I>
return item.vanillaId().equals(ItemKeys.ENCHANTED_BOOK) ? "StoredEnchantments" : "Enchantments";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> 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;
@@ -108,7 +103,7 @@ public class EnchantmentsModifier<I> implements SimpleNetworkItemDataModifier<I>
enchantments.add(new Enchantment(Key.of(e.getKey()), number.intValue()));
}
}
return new EnchantmentsModifier<>(enchantments, merge);
return new EnchantmentsProcessor<>(enchantments, merge);
}
}
}

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
@@ -9,10 +9,10 @@ import org.jetbrains.annotations.Nullable;
import java.util.Optional;
public class EquippableAssetIdModifier<I> implements SimpleNetworkItemDataModifier<I> {
public class EquippableAssetIdProcessor<I> implements SimpleNetworkItemProcessor<I> {
private final Key assetId;
public EquippableAssetIdModifier(Key assetsId) {
public EquippableAssetIdProcessor(Key assetsId) {
this.assetId = assetsId;
}
@@ -20,11 +20,6 @@ public class EquippableAssetIdModifier<I> implements SimpleNetworkItemDataModifi
return assetId;
}
@Override
public Key type() {
return ItemDataModifiers.EQUIPPABLE_ASSET_ID;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
Optional<EquipmentData> optionalData = item.equippable();

View File

@@ -1,9 +1,9 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.setting.EquipmentData;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -11,11 +11,11 @@ import org.jetbrains.annotations.Nullable;
import java.util.Map;
public class EquippableModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class EquippableProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final EquipmentData data;
public EquippableModifier(EquipmentData data) {
public EquippableProcessor(EquipmentData data) {
this.data = data;
}
@@ -23,11 +23,6 @@ public class EquippableModifier<I> implements SimpleNetworkItemDataModifier<I> {
return data;
}
@Override
public Key type() {
return ItemDataModifiers.EQUIPPABLE;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
return item.equippable(this.data);
@@ -38,12 +33,12 @@ public class EquippableModifier<I> implements SimpleNetworkItemDataModifier<I> {
return DataComponentKeys.EQUIPPABLE;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "equippable");
return new EquippableModifier<>(EquipmentData.fromMap(data));
return new EquippableProcessor<>(EquipmentData.fromMap(data));
}
}
}

View File

@@ -1,8 +1,8 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.compatibility.ItemSource;
import net.momirealms.craftengine.core.util.Key;
@@ -12,13 +12,13 @@ import org.jetbrains.annotations.NotNull;
import java.util.*;
public class ExternalModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
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;
private final LazyReference<ItemSource<I>> provider;
public ExternalModifier(String id, LazyReference<ItemSource<I>> provider) {
public ExternalSourceProcessor(String id, LazyReference<ItemSource<I>> provider) {
this.id = id;
this.provider = provider;
}
@@ -27,11 +27,6 @@ public class ExternalModifier<I> implements ItemDataModifier<I> {
return id;
}
@Override
public Key type() {
return ItemDataModifiers.EXTERNAL;
}
@SuppressWarnings("unchecked")
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
@@ -70,15 +65,15 @@ public class ExternalModifier<I> implements ItemDataModifier<I> {
}
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@SuppressWarnings("unchecked")
@Override
public ItemDataModifier<I> 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");
return new ExternalModifier<>(id, LazyReference.lazyReference(() -> {
return new ExternalSourceProcessor<>(id, LazyReference.lazyReference(() -> {
ItemSource<?> itemSource = CraftEngine.instance().compatibilityManager().getItemSource(plugin.toLowerCase(Locale.ENGLISH));
if (itemSource == null) {
CraftEngine.instance().logger().warn("Item source '" + plugin + "' not found for item '" + id + "'");

View File

@@ -1,22 +1,22 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
public class FoodModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class FoodProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final int nutrition;
private final float saturation;
private final boolean canAlwaysEat;
public FoodModifier(int nutrition, float saturation, boolean canAlwaysEat) {
public FoodProcessor(int nutrition, float saturation, boolean canAlwaysEat) {
this.canAlwaysEat = canAlwaysEat;
this.nutrition = nutrition;
this.saturation = saturation;
@@ -34,11 +34,6 @@ public class FoodModifier<I> implements SimpleNetworkItemDataModifier<I> {
return saturation;
}
@Override
public Key type() {
return ItemDataModifiers.FOOD;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.setJavaComponent(DataComponentKeys.FOOD, Map.of(
@@ -54,14 +49,14 @@ public class FoodModifier<I> implements SimpleNetworkItemDataModifier<I> {
return DataComponentKeys.FOOD;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> 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");
return new FoodModifier<>(nutrition, saturation, ResourceConfigUtils.getAsBoolean(data.getOrDefault("can-always-eat", false), "can-always-eat"));
return new FoodProcessor<>(nutrition, saturation, ResourceConfigUtils.getAsBoolean(data.getOrDefault("can-always-eat", false), "can-always-eat"));
}
}
}

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import com.google.common.collect.ImmutableMap;
import net.momirealms.craftengine.core.item.*;
@@ -15,8 +15,8 @@ import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class HideTooltipModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
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(
DataComponentKeys.UNBREAKABLE,
@@ -53,7 +53,7 @@ public class HideTooltipModifier<I> implements ItemDataModifier<I> {
private final List<Key> components;
private final Applier<I> applier;
public HideTooltipModifier(List<Key> components) {
public HideTooltipProcessor(List<Key> components) {
this.components = components;
if (VersionHelper.isOrAbove1_21_5()) {
this.applier = new ModernApplier<>(components);
@@ -124,11 +124,6 @@ public class HideTooltipModifier<I> implements ItemDataModifier<I> {
return item;
}
@Override
public Key type() {
return ItemDataModifiers.HIDE_TOOLTIP;
}
public interface Applier<I> {
void apply(Item<I> item);
@@ -232,12 +227,12 @@ public class HideTooltipModifier<I> implements ItemDataModifier<I> {
}
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
List<Key> components = MiscUtils.getAsStringList(arg).stream().map(Key::of).toList();
return new HideTooltipModifier<>(components);
return new HideTooltipProcessor<>(components);
}
}
}

View File

@@ -1,14 +1,14 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.util.Key;
public class IdModifier<I> implements ItemDataModifier<I> {
public class IdProcessor<I> implements ItemProcessor<I> {
public static final String CRAFT_ENGINE_ID = "craftengine:id";
private final Key argument;
public IdModifier(Key argument) {
public IdProcessor(Key argument) {
this.argument = argument;
}
@@ -16,11 +16,6 @@ public class IdModifier<I> implements ItemDataModifier<I> {
return this.argument;
}
@Override
public Key type() {
return ItemDataModifiers.ID;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.customId(this.argument);

View File

@@ -1,17 +1,17 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
public class ItemModelModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class ItemModelProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final Key data;
public ItemModelModifier(Key data) {
public ItemModelProcessor(Key data) {
this.data = data;
}
@@ -19,11 +19,6 @@ public class ItemModelModifier<I> implements SimpleNetworkItemDataModifier<I> {
return data;
}
@Override
public Key type() {
return ItemDataModifiers.ITEM_MODEL;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
return item.itemModel(this.data.asString());
@@ -34,12 +29,12 @@ public class ItemModelModifier<I> implements SimpleNetworkItemDataModifier<I> {
return DataComponentKeys.ITEM_MODEL;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String id = arg.toString();
return new ItemModelModifier<>(Key.of(id));
return new ItemModelProcessor<>(Key.of(id));
}
}
}

View File

@@ -1,20 +1,20 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.text.minimessage.FormattedLine;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
public class ItemNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class ItemNameProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final Object[] NBT_PATH = new Object[]{"display", "Name"};
private final String argument;
private final FormattedLine line;
public ItemNameModifier(String argument) {
public ItemNameProcessor(String argument) {
this.argument = argument;
this.line = FormattedLine.create(argument);
}
@@ -23,11 +23,6 @@ public class ItemNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
return argument;
}
@Override
public Key type() {
return ItemDataModifiers.ITEM_NAME;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.itemNameComponent(this.line.parse(context));
@@ -49,12 +44,12 @@ public class ItemNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
return "display.Name";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String name = arg.toString();
return new ItemNameModifier<>(name);
return new ItemNameProcessor<>(name);
}
}
}

View File

@@ -1,13 +1,11 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.sparrow.nbt.CompoundTag;
public interface ItemDataModifier<I> {
Key type();
public interface ItemProcessor<I> {
Item<I> apply(Item<I> item, ItemBuildContext context);

View File

@@ -0,0 +1,7 @@
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>(Key id, ItemProcessorFactory<T> factory) {
}

View File

@@ -1,9 +1,9 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.modifier.lore.DynamicLoreModifier;
import net.momirealms.craftengine.core.item.modifier.lore.LoreModifier;
import net.momirealms.craftengine.core.item.modifier.lore.OverwritableLoreModifier;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.processor.lore.DynamicLoreProcessor;
import net.momirealms.craftengine.core.item.processor.lore.LoreProcessor;
import net.momirealms.craftengine.core.item.processor.lore.OverwritableLoreProcessor;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.registry.BuiltInRegistries;
import net.momirealms.craftengine.core.registry.Registries;
@@ -17,60 +17,58 @@ import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;
public final class ItemDataModifiers {
private ItemDataModifiers() {}
public final class ItemProcessors {
private ItemProcessors() {}
public static final Key ITEM_MODEL = Key.of("craftengine:item-model");
public static final Key OVERWRITABLE_ITEM_MODEL = Key.of("craftengine:overwritable-item-model");
public static final Key ITEM_MODEL = Key.of("craftengine:item_model");
public static final Key OVERWRITABLE_ITEM_MODEL = Key.of("craftengine:overwritable_item_model");
public static final Key ID = Key.of("craftengine:id");
public static final Key HIDE_TOOLTIP = Key.of("craftengine:hide-tooltip");
public static final Key HIDE_TOOLTIP = Key.of("craftengine:hide_tooltip");
public static final Key FOOD = Key.of("craftengine:food");
public static final Key EXTERNAL = Key.of("craftengine:external");
public static final Key EQUIPPABLE = Key.of("craftengine:equippable");
public static final Key EQUIPPABLE_ASSET_ID = Key.of("craftengine:equippable-asset-id");
public static final Key EQUIPPABLE_ASSET_ID = Key.of("craftengine:equippable_asset_id");
public static final Key ENCHANTMENT = Key.of("craftengine:enchantment");
public static final Key ENCHANTMENTS = Key.of("craftengine:enchantments");
public static final Key DYED_COLOR = Key.of("craftengine:dyed-color");
public static final Key DISPLAY_NAME = Key.of("craftengine:display-name");
public static final Key CUSTOM_NAME = Key.of("craftengine:custom-name");
public static final Key CUSTOM_MODEL_DATA = Key.of("craftengine:custom-model-data");
public static final Key OVERWRITABLE_CUSTOM_MODEL_DATA = Key.of("craftengine:overwritable-custom-model-data");
public static final Key DYED_COLOR = Key.of("craftengine:dyed_color");
public static final Key DISPLAY_NAME = Key.of("craftengine:display_name");
public static final Key CUSTOM_NAME = Key.of("craftengine:custom_name");
public static final Key CUSTOM_MODEL_DATA = Key.of("craftengine:custom_model_data");
public static final Key OVERWRITABLE_CUSTOM_MODEL_DATA = Key.of("craftengine:overwritable_custom_model_data");
public static final Key COMPONENTS = Key.of("craftengine:components");
public static final Key COMPONENT = Key.of("craftengine:component");
public static final Key ATTRIBUTE_MODIFIERS = Key.of("craftengine:attribute-modifiers");
public static final Key ATTRIBUTE_MODIFIERS = Key.of("craftengine:attribute_modifiers");
public static final Key ATTRIBUTES = Key.of("craftengine:attributes");
public static final Key ARGUMENTS = Key.of("craftengine:arguments");
public static final Key VERSION = Key.of("craftengine:version");
public static final Key PDC = Key.of("craftengine:pdc");
public static final Key ITEM_NAME = Key.of("craftengine:item-name");
public static final Key OVERWRITABLE_ITEM_NAME = Key.of("craftengine:overwritable-item-name");
public static final Key JUKEBOX_PLAYABLE = Key.of("craftengine:jukebox-playable");
public static final Key REMOVE_COMPONENTS = Key.of("craftengine:remove-components");
public static final Key REMOVE_COMPONENT = Key.of("craftengine:remove-component");
public static final Key ITEM_NAME = Key.of("craftengine:item_name");
public static final Key OVERWRITABLE_ITEM_NAME = Key.of("craftengine:overwritable_item_name");
public static final Key JUKEBOX_PLAYABLE = Key.of("craftengine:jukebox_playable");
public static final Key REMOVE_COMPONENTS = Key.of("craftengine:remove_components");
public static final Key REMOVE_COMPONENT = Key.of("craftengine:remove_component");
public static final Key TAGS = Key.of("craftengine:tags");
public static final Key NBT = Key.of("craftengine:nbt");
public static final Key TOOLTIP_STYLE = Key.of("craftengine:tooltip-style");
public static final Key TOOLTIP_STYLE = Key.of("craftengine:tooltip_style");
public static final Key TRIM = Key.of("craftengine:trim");
public static final Key LORE = Key.of("craftengine:lore");
public static final Key UNBREAKABLE = Key.of("craftengine:unbreakable");
public static final Key DYNAMIC_LORE = Key.of("craftengine:dynamic-lore");
public static final Key OVERWRITABLE_LORE = Key.of("craftengine:overwritable-lore");
public static final Key MAX_DAMAGE = Key.of("craftengine:max-damage");
public static final Key BLOCK_STATE = Key.of("craftengine:block-state");
public static final Key DYNAMIC_LORE = Key.of("craftengine:dynamic_lore");
public static final Key OVERWRITABLE_LORE = Key.of("craftengine:overwritable_lore");
public static final Key MAX_DAMAGE = Key.of("craftengine:max_damage");
public static final Key BLOCK_STATE = Key.of("craftengine:block_state");
public static final Key CONDITIONAL = Key.of("craftengine:conditional");
public static final Key CONDITION = Key.of("craftengine:condition");
public static <T> void register(Key key, ItemDataModifierFactory<T> factory) {
((WritableRegistry<ItemDataModifierFactory<?>>) BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY)
public static <T> ItemProcessorType<T> register(Key key, ItemProcessorFactory<T> factory) {
ItemProcessorType<T> type = new ItemProcessorType<>(key, factory);
((WritableRegistry<ItemProcessorFactory<?>>) BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY)
.register(ResourceKey.create(Registries.ITEM_DATA_MODIFIER_FACTORY.location(), key), factory);
if (key.value().contains("-")) {
((WritableRegistry<ItemDataModifierFactory<?>>) BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY)
.register(ResourceKey.create(Registries.ITEM_DATA_MODIFIER_FACTORY.location(), new Key(key.namespace(), key.value().replace("-", "_"))), factory);
}
return type;
}
@SuppressWarnings("unchecked")
public static <I> void applyDataModifiers(Map<String, Object> dataSection, Consumer<ItemDataModifier<I>> 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()) {
@@ -78,12 +76,13 @@ public final class ItemDataModifiers {
if (value == null) continue;
String key = dataEntry.getKey();
int idIndex = key.indexOf('#');
if (idIndex != -1) {
if (idIndex != -1)
key = key.substring(0, idIndex);
}
if (key.contains("-"))
key = key.replace("-", "_");
Optional.ofNullable(BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY.getValue(Key.withDefaultNamespace(key, Key.DEFAULT_NAMESPACE))).ifPresent(factory -> {
try {
callback.accept((ItemDataModifier<I>) factory.create(value));
callback.accept((ItemProcessor<I>) factory.create(value));
} catch (LocalizedResourceConfigException e) {
errorCollector.add(e);
}
@@ -96,51 +95,51 @@ public final class ItemDataModifiers {
public static void init() {}
static {
register(EXTERNAL, ExternalModifier.FACTORY);
register(LORE, LoreModifier.FACTORY);
register(DYNAMIC_LORE, DynamicLoreModifier.FACTORY);
register(OVERWRITABLE_LORE, OverwritableLoreModifier.FACTORY);
register(DYED_COLOR, DyedColorModifier.FACTORY);
register(TAGS, TagsModifier.FACTORY);
register(NBT, TagsModifier.FACTORY);
register(ATTRIBUTE_MODIFIERS, AttributeModifiersModifier.FACTORY);
register(ATTRIBUTES, AttributeModifiersModifier.FACTORY);
register(CUSTOM_MODEL_DATA, CustomModelDataModifier.FACTORY);
register(UNBREAKABLE, UnbreakableModifier.FACTORY);
register(ENCHANTMENT, EnchantmentsModifier.FACTORY);
register(ENCHANTMENTS, EnchantmentsModifier.FACTORY);
register(TRIM, TrimModifier.FACTORY);
register(HIDE_TOOLTIP, HideTooltipModifier.FACTORY);
register(ARGUMENTS, ArgumentsModifier.FACTORY);
register(OVERWRITABLE_ITEM_NAME, OverwritableItemNameModifier.FACTORY);
register(PDC, PDCModifier.FACTORY);
register(BLOCK_STATE, BlockStateModifier.FACTORY);
register(EXTERNAL, ExternalSourceProcessor.FACTORY);
register(LORE, LoreProcessor.FACTORY);
register(DYNAMIC_LORE, DynamicLoreProcessor.FACTORY);
register(OVERWRITABLE_LORE, OverwritableLoreProcessor.FACTORY);
register(DYED_COLOR, DyedColorProcessor.FACTORY);
register(TAGS, TagsProcessor.FACTORY);
register(NBT, TagsProcessor.FACTORY);
register(ATTRIBUTE_MODIFIERS, AttributeModifiersProcessor.FACTORY);
register(ATTRIBUTES, AttributeModifiersProcessor.FACTORY);
register(CUSTOM_MODEL_DATA, CustomModelDataProcessor.FACTORY);
register(UNBREAKABLE, UnbreakableProcessor.FACTORY);
register(ENCHANTMENT, EnchantmentsProcessor.FACTORY);
register(ENCHANTMENTS, EnchantmentsProcessor.FACTORY);
register(TRIM, TrimProcessor.FACTORY);
register(HIDE_TOOLTIP, HideTooltipProcessor.FACTORY);
register(ARGUMENTS, ArgumentsProcessor.FACTORY);
register(OVERWRITABLE_ITEM_NAME, OverwritableItemNameProcessor.FACTORY);
register(PDC, PDCProcessor.FACTORY);
register(BLOCK_STATE, BlockStateProcessor.FACTORY);
if (VersionHelper.isOrAbove1_20_5()) {
register(CUSTOM_NAME, CustomNameModifier.FACTORY);
register(ITEM_NAME, ItemNameModifier.FACTORY);
register(DISPLAY_NAME, ItemNameModifier.FACTORY);
register(COMPONENTS, ComponentsModifier.FACTORY);
register(COMPONENT, ComponentsModifier.FACTORY);
register(REMOVE_COMPONENTS, RemoveComponentModifier.FACTORY);
register(REMOVE_COMPONENT, RemoveComponentModifier.FACTORY);
register(FOOD, FoodModifier.FACTORY);
register(MAX_DAMAGE, MaxDamageModifier.FACTORY);
register(CUSTOM_NAME, CustomNameProcessor.FACTORY);
register(ITEM_NAME, ItemNameProcessor.FACTORY);
register(DISPLAY_NAME, ItemNameProcessor.FACTORY);
register(COMPONENTS, ComponentsProcessor.FACTORY);
register(COMPONENT, ComponentsProcessor.FACTORY);
register(REMOVE_COMPONENTS, RemoveComponentProcessor.FACTORY);
register(REMOVE_COMPONENT, RemoveComponentProcessor.FACTORY);
register(FOOD, FoodProcessor.FACTORY);
register(MAX_DAMAGE, MaxDamageProcessor.FACTORY);
} else {
register(CUSTOM_NAME, CustomNameModifier.FACTORY);
register(ITEM_NAME, CustomNameModifier.FACTORY);
register(DISPLAY_NAME, CustomNameModifier.FACTORY);
register(CUSTOM_NAME, CustomNameProcessor.FACTORY);
register(ITEM_NAME, CustomNameProcessor.FACTORY);
register(DISPLAY_NAME, CustomNameProcessor.FACTORY);
}
if (VersionHelper.isOrAbove1_21()) {
register(JUKEBOX_PLAYABLE, JukeboxSongModifier.FACTORY);
register(JUKEBOX_PLAYABLE, JukeboxSongProcessor.FACTORY);
}
if (VersionHelper.isOrAbove1_21_2()) {
register(TOOLTIP_STYLE, TooltipStyleModifier.FACTORY);
register(ITEM_MODEL, ItemModelModifier.FACTORY);
register(EQUIPPABLE, EquippableModifier.FACTORY);
register(TOOLTIP_STYLE, TooltipStyleProcessor.FACTORY);
register(ITEM_MODEL, ItemModelProcessor.FACTORY);
register(EQUIPPABLE, EquippableProcessor.FACTORY);
}
if (VersionHelper.PREMIUM) {
register(CONDITIONAL, ConditionalModifier.FACTORY);
register(CONDITION, ConditionalModifier.FACTORY);
register(CONDITIONAL, ConditionalProcessor.FACTORY);
register(CONDITION, ConditionalProcessor.FACTORY);
}
}
}

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
@@ -9,11 +9,11 @@ import net.momirealms.sparrow.nbt.CompoundTag;
import java.util.Optional;
public class ItemVersionModifier<I> implements ItemDataModifier<I> {
public class ItemVersionProcessor<I> implements ItemProcessor<I> {
public static final String VERSION_TAG = "craftengine:version";
private final int version;
public ItemVersionModifier(int version) {
public ItemVersionProcessor(int version) {
this.version = version;
}
@@ -21,11 +21,6 @@ public class ItemVersionModifier<I> implements ItemDataModifier<I> {
return this.version;
}
@Override
public Key type() {
return ItemDataModifiers.VERSION;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (VersionHelper.isOrAbove1_20_5()) {

View File

@@ -0,0 +1,35 @@
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.data.JukeboxPlayable;
import net.momirealms.craftengine.core.util.Key;
public class JukeboxSongProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final JukeboxPlayable song;
public JukeboxSongProcessor(JukeboxPlayable song) {
this.song = song;
}
public JukeboxPlayable song() {
return song;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.jukeboxSong(this.song);
return item;
}
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor<I> create(Object arg) {
String song = arg.toString();
return new JukeboxSongProcessor<>(new JukeboxPlayable(song, true));
}
}
}

View File

@@ -1,27 +1,22 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.context.number.NumberProvider;
import net.momirealms.craftengine.core.plugin.context.number.NumberProviders;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
public class MaxDamageModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class MaxDamageProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final NumberProvider argument;
public MaxDamageModifier(NumberProvider argument) {
public MaxDamageProcessor(NumberProvider argument) {
this.argument = argument;
}
@Override
public Key type() {
return ItemDataModifiers.MAX_DAMAGE;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.maxDamage(argument.getInt(context));
@@ -33,12 +28,12 @@ public class MaxDamageModifier<I> implements SimpleNetworkItemDataModifier<I> {
return DataComponentKeys.MAX_DAMAGE;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
NumberProvider numberProvider = NumberProviders.fromObject(arg);
return new MaxDamageModifier<>(numberProvider);
return new MaxDamageProcessor<>(numberProvider);
}
}
}

View File

@@ -1,18 +1,18 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.Nullable;
public class OverwritableCustomModelDataModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class OverwritableCustomModelDataProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final int argument;
public OverwritableCustomModelDataModifier(int argument) {
public OverwritableCustomModelDataProcessor(int argument) {
this.argument = argument;
}
@@ -20,11 +20,6 @@ public class OverwritableCustomModelDataModifier<I> implements SimpleNetworkItem
return this.argument;
}
@Override
public Key type() {
return ItemDataModifiers.OVERWRITABLE_CUSTOM_MODEL_DATA;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (item.customModelData().isPresent()) return item;
@@ -47,12 +42,12 @@ public class OverwritableCustomModelDataModifier<I> implements SimpleNetworkItem
return "CustomModelData";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
int customModelData = ResourceConfigUtils.getAsInt(arg, "custom-model-data");
return new OverwritableCustomModelDataModifier<>(customModelData);
return new OverwritableCustomModelDataProcessor<>(customModelData);
}
}
}

View File

@@ -1,17 +1,17 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
public class OverwritableItemModelModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class OverwritableItemModelProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final Key data;
public OverwritableItemModelModifier(Key data) {
public OverwritableItemModelProcessor(Key data) {
this.data = data;
}
@@ -19,11 +19,6 @@ public class OverwritableItemModelModifier<I> implements SimpleNetworkItemDataMo
return data;
}
@Override
public Key type() {
return ItemDataModifiers.OVERWRITABLE_ITEM_MODEL;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (item.hasNonDefaultComponent(DataComponentKeys.ITEM_MODEL)) return item;
@@ -35,12 +30,12 @@ public class OverwritableItemModelModifier<I> implements SimpleNetworkItemDataMo
return DataComponentKeys.ITEM_MODEL;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String id = arg.toString();
return new OverwritableItemModelModifier<>(Key.of(id));
return new OverwritableItemModelProcessor<>(Key.of(id));
}
}
}

View File

@@ -1,19 +1,19 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.VersionHelper;
import org.jetbrains.annotations.Nullable;
public class OverwritableItemNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
private final ItemNameModifier<I> modifier;
public class OverwritableItemNameProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final ItemNameProcessor<I> modifier;
public OverwritableItemNameModifier(String argument) {
this.modifier = new ItemNameModifier<>(argument);
public OverwritableItemNameProcessor(String argument) {
this.modifier = new ItemNameProcessor<>(argument);
}
@Override
@@ -30,11 +30,6 @@ public class OverwritableItemNameModifier<I> implements SimpleNetworkItemDataMod
return this.modifier.apply(item, context);
}
@Override
public Key type() {
return ItemDataModifiers.OVERWRITABLE_ITEM_NAME;
}
@Override
public @Nullable Key componentType(Item<I> item, ItemBuildContext context) {
return DataComponentKeys.ITEM_NAME;
@@ -50,11 +45,11 @@ public class OverwritableItemNameModifier<I> implements SimpleNetworkItemDataMod
return "display.Name";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
return new OverwritableItemNameModifier<>(arg.toString());
public ItemProcessor<I> create(Object arg) {
return new OverwritableItemNameProcessor<>(arg.toString());
}
}
}

View File

@@ -1,9 +1,9 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -13,20 +13,15 @@ import net.momirealms.sparrow.nbt.CompoundTag;
import java.util.Map;
import java.util.Optional;
public class PDCModifier<I> implements ItemDataModifier<I> {
public class PDCProcessor<I> implements ItemProcessor<I> {
public static final String BUKKIT_PDC = "PublicBukkitValues";
public static final Factory<?> FACTORY = new Factory<>();
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final CompoundTag data;
public PDCModifier(CompoundTag data) {
public PDCProcessor(CompoundTag data) {
this.data = data;
}
@Override
public Key type() {
return ItemDataModifiers.PDC;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (VersionHelper.isOrAbove1_20_5()) {
@@ -39,13 +34,13 @@ public class PDCModifier<I> implements ItemDataModifier<I> {
return item;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> 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 PDCModifier<>(tag);
return new PDCProcessor<>(tag);
}
}
}

View File

@@ -1,8 +1,8 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.NetworkItemHandler;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
@@ -12,11 +12,11 @@ import net.momirealms.sparrow.nbt.Tag;
import java.util.Collections;
import java.util.List;
public class RemoveComponentModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class RemoveComponentProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final List<String> arguments;
public RemoveComponentModifier(List<String> arguments) {
public RemoveComponentProcessor(List<String> arguments) {
this.arguments = arguments;
}
@@ -24,11 +24,6 @@ public class RemoveComponentModifier<I> implements ItemDataModifier<I> {
return Collections.unmodifiableList(this.arguments);
}
@Override
public Key type() {
return ItemDataModifiers.REMOVE_COMPONENTS;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
for (String argument : this.arguments) {
@@ -48,12 +43,12 @@ public class RemoveComponentModifier<I> implements ItemDataModifier<I> {
return item;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
List<String> data = MiscUtils.getAsStringList(arg);
return new RemoveComponentModifier<>(data);
return new RemoveComponentProcessor<>(data);
}
}
}

View File

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

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.*;
import net.momirealms.craftengine.core.util.*;
@@ -8,11 +8,11 @@ import net.momirealms.sparrow.nbt.Tag;
import java.util.LinkedHashMap;
import java.util.Map;
public class TagsModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class TagsProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final Map<String, Object> arguments;
public TagsModifier(Map<String, Object> arguments) {
public TagsProcessor(Map<String, Object> arguments) {
this.arguments = mapToMap(arguments);
}
@@ -20,11 +20,6 @@ public class TagsModifier<I> implements ItemDataModifier<I> {
return arguments;
}
@Override
public Key type() {
return ItemDataModifiers.TAGS;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
for (Map.Entry<String, Object> entry : this.arguments.entrySet()) {
@@ -132,11 +127,11 @@ public class TagsModifier<I> implements ItemDataModifier<I> {
static final ParsedValue FAILURE = new ParsedValue(false, null);
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "nbt");
return new TagsModifier<>(data);
return new TagsProcessor<>(data);
}
}
}

View File

@@ -1,17 +1,17 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
public class TooltipStyleModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class TooltipStyleProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final Key argument;
public TooltipStyleModifier(Key argument) {
public TooltipStyleProcessor(Key argument) {
this.argument = argument;
}
@@ -19,11 +19,6 @@ public class TooltipStyleModifier<I> implements SimpleNetworkItemDataModifier<I>
return this.argument;
}
@Override
public Key type() {
return ItemDataModifiers.TOOLTIP_STYLE;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.tooltipStyle(argument.toString());
@@ -35,12 +30,12 @@ public class TooltipStyleModifier<I> implements SimpleNetworkItemDataModifier<I>
return DataComponentKeys.TOOLTIP_STYLE;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String id = arg.toString();
return new TooltipStyleModifier<>(Key.of(id));
return new TooltipStyleProcessor<>(Key.of(id));
}
}
}

View File

@@ -1,9 +1,9 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.data.Trim;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -12,13 +12,13 @@ import org.jetbrains.annotations.Nullable;
import java.util.Locale;
import java.util.Map;
public class TrimModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class TrimProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final Object[] NBT_PATH = new Object[] {"Trim"};
private final Key material;
private final Key pattern;
public TrimModifier(Key material, Key pattern) {
public TrimProcessor(Key material, Key pattern) {
this.material = material;
this.pattern = pattern;
}
@@ -31,11 +31,6 @@ public class TrimModifier<I> implements SimpleNetworkItemDataModifier<I> {
return pattern;
}
@Override
public Key type() {
return ItemDataModifiers.TRIM;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
return item.trim(new Trim(this.pattern, this.material));
@@ -56,14 +51,14 @@ public class TrimModifier<I> implements SimpleNetworkItemDataModifier<I> {
return "Trim";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> 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);
return new TrimModifier<>(Key.of(material), Key.of(pattern));
return new TrimProcessor<>(Key.of(material), Key.of(pattern));
}
}
}

View File

@@ -1,19 +1,19 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.Nullable;
public class UnbreakableModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class UnbreakableProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final Object[] NBT_PATH = new Object[]{"Unbreakable"};
private final boolean argument;
public UnbreakableModifier(boolean argument) {
public UnbreakableProcessor(boolean argument) {
this.argument = argument;
}
@@ -21,11 +21,6 @@ public class UnbreakableModifier<I> implements SimpleNetworkItemDataModifier<I>
return argument;
}
@Override
public Key type() {
return ItemDataModifiers.UNBREAKABLE;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.unbreakable(this.argument);
@@ -47,12 +42,12 @@ public class UnbreakableModifier<I> implements SimpleNetworkItemDataModifier<I>
return "Unbreakable";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
boolean value = ResourceConfigUtils.getAsBoolean(arg, "unbreakable");
return new UnbreakableModifier<>(value);
return new UnbreakableProcessor<>(value);
}
}
}

View File

@@ -1,42 +1,37 @@
package net.momirealms.craftengine.core.item.modifier.lore;
package net.momirealms.craftengine.core.item.processor.lore;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifiers;
import net.momirealms.craftengine.core.item.modifier.SimpleNetworkItemDataModifier;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessors;
import net.momirealms.craftengine.core.item.processor.SimpleNetworkItemProcessor;
import net.momirealms.craftengine.core.util.Key;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Optional;
public final class DynamicLoreModifier<I> implements SimpleNetworkItemDataModifier<I> {
public final class DynamicLoreProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final Factory<?> FACTORY = new Factory<>();
public static final String CONTEXT_TAG_KEY = "craftengine:display_context";
private final Map<String, LoreModifier<I>> displayContexts;
private final LoreModifier<I> defaultModifier;
private final Map<String, LoreProcessor<I>> displayContexts;
private final LoreProcessor<I> defaultModifier;
public DynamicLoreModifier(Map<String, LoreModifier<I>> displayContexts) {
public DynamicLoreProcessor(Map<String, LoreProcessor<I>> displayContexts) {
this.displayContexts = displayContexts;
this.defaultModifier = displayContexts.values().iterator().next();
}
public Map<String, LoreModifier<I>> displayContexts() {
public Map<String, LoreProcessor<I>> displayContexts() {
return displayContexts;
}
@Override
public Key type() {
return ItemDataModifiers.DYNAMIC_LORE;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
String displayContext = Optional.ofNullable(item.getJavaTag(CONTEXT_TAG_KEY)).orElse(this.defaultModifier).toString();
LoreModifier<I> lore = this.displayContexts.get(displayContext);
LoreProcessor<I> lore = this.displayContexts.get(displayContext);
if (lore == null) {
lore = this.defaultModifier;
}
@@ -58,16 +53,16 @@ public final class DynamicLoreModifier<I> implements SimpleNetworkItemDataModifi
return "display.Lore";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
public static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
Map<String, LoreModifier<I>> dynamicLore = new LinkedHashMap<>();
public ItemProcessor<I> create(Object arg) {
Map<String, LoreProcessor<I>> dynamicLore = new LinkedHashMap<>();
if (arg instanceof Map<?, ?> map) {
for (Map.Entry<?, ?> entry : map.entrySet()) {
dynamicLore.put(entry.getKey().toString(), LoreModifier.createLoreModifier(entry.getValue()));
dynamicLore.put(entry.getKey().toString(), LoreProcessor.createLoreModifier(entry.getValue()));
}
}
return new DynamicLoreModifier<>(dynamicLore);
return new DynamicLoreProcessor<>(dynamicLore);
}
}
}

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier.lore;
package net.momirealms.craftengine.core.item.processor.lore;
import net.kyori.adventure.text.Component;
import net.momirealms.craftengine.core.item.ItemBuildContext;

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier.lore;
package net.momirealms.craftengine.core.item.processor.lore;
import org.jetbrains.annotations.NotNull;

View File

@@ -1,13 +1,13 @@
package net.momirealms.craftengine.core.item.modifier.lore;
package net.momirealms.craftengine.core.item.processor.lore;
import net.kyori.adventure.text.Component;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifiers;
import net.momirealms.craftengine.core.item.modifier.SimpleNetworkItemDataModifier;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessors;
import net.momirealms.craftengine.core.item.processor.SimpleNetworkItemProcessor;
import net.momirealms.craftengine.core.plugin.config.Config;
import net.momirealms.craftengine.core.plugin.text.minimessage.FormattedLine;
import net.momirealms.craftengine.core.util.Key;
@@ -18,15 +18,10 @@ import org.jetbrains.annotations.Nullable;
import java.util.*;
import java.util.stream.Stream;
public sealed interface LoreModifier<I> extends SimpleNetworkItemDataModifier<I>
permits LoreModifier.EmptyLoreModifier, LoreModifier.CompositeLoreModifier, LoreModifier.DoubleLoreModifier, LoreModifier.SingleLoreModifier {
public sealed interface LoreProcessor<I> extends SimpleNetworkItemProcessor<I>
permits LoreProcessor.EmptyLoreProcessor, LoreProcessor.CompositeLoreProcessor, LoreProcessor.DoubleLoreProcessor, LoreProcessor.SingleLoreProcessor {
Factory<?> FACTORY = new Factory<>();
@Override
default Key type() {
return ItemDataModifiers.LORE;
}
@Override
@Nullable
default Key componentType(Item<I> item, ItemBuildContext context) {
@@ -46,14 +41,14 @@ public sealed interface LoreModifier<I> extends SimpleNetworkItemDataModifier<I>
List<LoreModification> lore();
class Factory<I> implements ItemDataModifierFactory<I> {
class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
return createLoreModifier(arg);
}
}
static <I> LoreModifier<I> createLoreModifier(Object arg) {
static <I> LoreProcessor<I> createLoreModifier(Object arg) {
List<Object> rawLoreData = MiscUtils.getAsList(arg, Object.class);
String[] rawLore = new String[rawLoreData.size()];
label_all_string_check: {
@@ -65,7 +60,7 @@ public sealed interface LoreModifier<I> extends SimpleNetworkItemDataModifier<I>
rawLore[i] = o.toString();
}
}
return new SingleLoreModifier<>(new LoreModification(LoreModification.Operation.APPEND, false,
return new SingleLoreProcessor<>(new LoreModification(LoreModification.Operation.APPEND, false,
Arrays.stream(rawLore).map(line -> Config.addNonItalicTag() && !line.startsWith("<!i>") ? FormattedLine.create("<!i>" + line) : FormattedLine.create(line))
.toArray(FormattedLine[]::new)));
}
@@ -85,14 +80,14 @@ public sealed interface LoreModifier<I> extends SimpleNetworkItemDataModifier<I>
}
modifications.sort(LoreModificationHolder::compareTo);
return switch (modifications.size()) {
case 0 -> new EmptyLoreModifier<>();
case 1 -> new SingleLoreModifier<>(modifications.get(0).modification());
case 2 -> new DoubleLoreModifier<>(modifications.get(0).modification(), modifications.get(1).modification());
default -> new CompositeLoreModifier<>(modifications.stream().map(LoreModificationHolder::modification).toArray(LoreModification[]::new));
case 0 -> new EmptyLoreProcessor<>();
case 1 -> new SingleLoreProcessor<>(modifications.get(0).modification());
case 2 -> new DoubleLoreProcessor<>(modifications.get(0).modification(), modifications.get(1).modification());
default -> new CompositeLoreProcessor<>(modifications.stream().map(LoreModificationHolder::modification).toArray(LoreModification[]::new));
};
}
non-sealed class EmptyLoreModifier<I> implements LoreModifier<I> {
non-sealed class EmptyLoreProcessor<I> implements LoreProcessor<I> {
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
@@ -105,10 +100,10 @@ public sealed interface LoreModifier<I> extends SimpleNetworkItemDataModifier<I>
}
}
non-sealed class SingleLoreModifier<I> implements LoreModifier<I> {
non-sealed class SingleLoreProcessor<I> implements LoreProcessor<I> {
private final LoreModification modification;
public SingleLoreModifier(LoreModification modification) {
public SingleLoreProcessor(LoreModification modification) {
this.modification = modification;
}
@@ -124,11 +119,11 @@ public sealed interface LoreModifier<I> extends SimpleNetworkItemDataModifier<I>
}
}
non-sealed class DoubleLoreModifier<I> implements LoreModifier<I> {
non-sealed class DoubleLoreProcessor<I> implements LoreProcessor<I> {
private final LoreModification modification1;
private final LoreModification modification2;
public DoubleLoreModifier(LoreModification m1, LoreModification m2) {
public DoubleLoreProcessor(LoreModification m1, LoreModification m2) {
this.modification1 = m1;
this.modification2 = m2;
}
@@ -145,10 +140,10 @@ public sealed interface LoreModifier<I> extends SimpleNetworkItemDataModifier<I>
}
}
non-sealed class CompositeLoreModifier<I> implements LoreModifier<I> {
non-sealed class CompositeLoreProcessor<I> implements LoreProcessor<I> {
private final LoreModification[] modifications;
public CompositeLoreModifier(LoreModification... modifications) {
public CompositeLoreProcessor(LoreModification... modifications) {
this.modifications = modifications;
}

View File

@@ -1,27 +1,22 @@
package net.momirealms.craftengine.core.item.modifier.lore;
package net.momirealms.craftengine.core.item.processor.lore;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifiers;
import net.momirealms.craftengine.core.item.modifier.SimpleNetworkItemDataModifier;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessors;
import net.momirealms.craftengine.core.item.processor.SimpleNetworkItemProcessor;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.sparrow.nbt.CompoundTag;
public final class OverwritableLoreModifier<I> implements SimpleNetworkItemDataModifier<I> {
public final class OverwritableLoreProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final Factory<?> FACTORY = new Factory<>();
private final LoreModifier<I> loreModifier;
private final LoreProcessor<I> loreProcessor;
public OverwritableLoreModifier(LoreModifier<I> loreModifier) {
this.loreModifier = loreModifier;
}
@Override
public Key type() {
return ItemDataModifiers.OVERWRITABLE_LORE;
public OverwritableLoreProcessor(LoreProcessor<I> loreProcessor) {
this.loreProcessor = loreProcessor;
}
@Override
@@ -35,7 +30,7 @@ public final class OverwritableLoreModifier<I> implements SimpleNetworkItemDataM
return item;
}
}
return this.loreModifier.apply(item, context);
return this.loreProcessor.apply(item, context);
}
@Override
@@ -53,11 +48,11 @@ public final class OverwritableLoreModifier<I> implements SimpleNetworkItemDataM
return "display.Lore";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
public static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
LoreModifier<I> lore = LoreModifier.createLoreModifier(arg);
return new OverwritableLoreModifier<>(lore);
public ItemProcessor<I> create(Object arg) {
LoreProcessor<I> lore = LoreProcessor.createLoreModifier(arg);
return new OverwritableLoreProcessor<>(lore);
}
}
@@ -72,6 +67,6 @@ public final class OverwritableLoreModifier<I> implements SimpleNetworkItemDataM
return item;
}
}
return SimpleNetworkItemDataModifier.super.prepareNetworkItem(item, context, networkData);
return SimpleNetworkItemProcessor.super.prepareNetworkItem(item, context, networkData);
}
}

View File

@@ -2,18 +2,18 @@ package net.momirealms.craftengine.core.item.recipe.result;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
public class ApplyItemDataPostProcessor<T> implements PostProcessor<T> {
private final ItemDataModifier<T>[] modifiers;
private final ItemProcessor<T>[] modifiers;
public ApplyItemDataPostProcessor(ItemDataModifier<T>[] modifiers) {
public ApplyItemDataPostProcessor(ItemProcessor<T>[] modifiers) {
this.modifiers = modifiers;
}
@Override
public Item<T> process(Item<T> item, ItemBuildContext context) {
for (ItemDataModifier<T> modifier : this.modifiers) {
for (ItemProcessor<T> modifier : this.modifiers) {
item.apply(modifier, context);
}
return item;

View File

@@ -1,7 +1,7 @@
package net.momirealms.craftengine.core.item.recipe.result;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifiers;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessors;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.registry.BuiltInRegistries;
import net.momirealms.craftengine.core.registry.Registries;
@@ -20,10 +20,10 @@ public class PostProcessors {
static {
registerPostProcessorType(APPLY_DATA, args -> {
List<ItemDataModifier<?>> modifiers = new ArrayList<>();
List<ItemProcessor<?>> modifiers = new ArrayList<>();
Map<String, Object> data = ResourceConfigUtils.getAsMap(args.get("data"), "data");
ItemDataModifiers.applyDataModifiers(data, modifiers::add);
return new ApplyItemDataPostProcessor<>(modifiers.toArray(new ItemDataModifier[0]));
ItemProcessors.applyDataModifiers(data, modifiers::add);
return new ApplyItemDataPostProcessor<>(modifiers.toArray(new ItemProcessor[0]));
});
}

View File

@@ -2,7 +2,7 @@ package net.momirealms.craftengine.core.item.updater;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.modifier.ItemVersionModifier;
import net.momirealms.craftengine.core.item.processor.ItemVersionProcessor;
import net.momirealms.sparrow.nbt.NumericTag;
import net.momirealms.sparrow.nbt.Tag;
import org.jetbrains.annotations.NotNull;
@@ -30,7 +30,7 @@ public class ItemUpdateConfig {
}
public ItemUpdateResult update(Item<?> item, Supplier<ItemBuildContext> context) {
Tag versionTag = item.getTag(ItemVersionModifier.VERSION_TAG);
Tag versionTag = item.getTag(ItemVersionProcessor.VERSION_TAG);
int currentVersion = 0;
if (versionTag instanceof NumericTag numericTag) {
currentVersion = numericTag.getAsInt();
@@ -45,7 +45,7 @@ public class ItemUpdateConfig {
item = version.apply(item, buildContext);
}
}
item.setTag(this.maxVersion, ItemVersionModifier.VERSION_TAG);
item.setTag(this.maxVersion, ItemVersionProcessor.VERSION_TAG);
return new ItemUpdateResult(item, orginalItem != item, true);
}

View File

@@ -2,8 +2,8 @@ package net.momirealms.craftengine.core.item.updater.impl;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifiers;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessors;
import net.momirealms.craftengine.core.item.updater.ItemUpdater;
import net.momirealms.craftengine.core.item.updater.ItemUpdaterType;
import net.momirealms.craftengine.core.util.Key;
@@ -15,16 +15,16 @@ import java.util.Map;
public class ApplyDataOperation<I> implements ItemUpdater<I> {
public static final Type<?> TYPE = new Type<>();
private final List<ItemDataModifier<I>> modifiers;
private final List<ItemProcessor<I>> modifiers;
public ApplyDataOperation(List<ItemDataModifier<I>> 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 (ItemDataModifier<I> modifier : this.modifiers) {
for (ItemProcessor<I> modifier : this.modifiers) {
modifier.apply(item, context);
}
}
@@ -36,10 +36,10 @@ public class ApplyDataOperation<I> implements ItemUpdater<I> {
@SuppressWarnings("unchecked")
@Override
public ItemUpdater<I> create(Key item, Map<String, Object> args) {
List<ItemDataModifier<I>> modifiers = new ArrayList<>();
List<ItemProcessor<I>> modifiers = new ArrayList<>();
Map<String, Object> data = ResourceConfigUtils.getAsMap(args.get("data"), "data");
ItemDataModifiers.applyDataModifiers(data, m -> {
modifiers.add((ItemDataModifier<I>) m);
ItemProcessors.applyDataModifiers(data, m -> {
modifiers.add((ItemProcessor<I>) m);
});
return new ApplyDataOperation<>(modifiers);
}

View File

@@ -2,8 +2,8 @@ package net.momirealms.craftengine.core.loot.function;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifiers;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessors;
import net.momirealms.craftengine.core.loot.LootConditions;
import net.momirealms.craftengine.core.loot.LootContext;
import net.momirealms.craftengine.core.plugin.context.Condition;
@@ -14,9 +14,9 @@ import java.util.*;
public class ApplyDataFunction<T> extends AbstractLootConditionalFunction<T> {
public static final Factory<?> FACTORY = new Factory<>();
private final ItemDataModifier<?>[] modifiers;
private final ItemProcessor<?>[] modifiers;
public ApplyDataFunction(List<Condition<LootContext>> conditions, ItemDataModifier<?>[] modifiers) {
public ApplyDataFunction(List<Condition<LootContext>> conditions, ItemProcessor<?>[] modifiers) {
super(conditions);
this.modifiers = modifiers;
}
@@ -30,7 +30,7 @@ public class ApplyDataFunction<T> extends AbstractLootConditionalFunction<T> {
@Override
protected Item<T> applyInternal(Item<T> item, LootContext context) {
ItemBuildContext ctx = ItemBuildContext.of(context.player());
for (ItemDataModifier modifier : this.modifiers) {
for (ItemProcessor modifier : this.modifiers) {
item = modifier.apply(item, ctx);
}
return item;
@@ -40,13 +40,13 @@ public class ApplyDataFunction<T> extends AbstractLootConditionalFunction<T> {
@SuppressWarnings("unchecked")
@Override
public LootFunction<A> create(Map<String, Object> arguments) {
List<ItemDataModifier<?>> 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");
ItemDataModifiers.applyDataModifiers(data, modifiers::add);
ItemProcessors.applyDataModifiers(data, modifiers::add);
List<Condition<LootContext>> conditions = Optional.ofNullable(arguments.get("conditions"))
.map(it -> LootConditions.fromMapList((List<Map<String, Object>>) it))
.orElse(Collections.emptyList());
return new ApplyDataFunction<>(conditions, modifiers.toArray(new ItemDataModifier[0]));
return new ApplyDataFunction<>(conditions, modifiers.toArray(new ItemProcessor[0]));
}
}
}

View File

@@ -6,8 +6,8 @@ import net.momirealms.craftengine.core.entity.player.Player;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemKeys;
import net.momirealms.craftengine.core.item.modifier.ComponentsModifier;
import net.momirealms.craftengine.core.item.modifier.TagsModifier;
import net.momirealms.craftengine.core.item.processor.ComponentsProcessor;
import net.momirealms.craftengine.core.item.processor.TagsProcessor;
import net.momirealms.craftengine.core.item.trade.MerchantOffer;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.context.*;
@@ -96,10 +96,10 @@ public class MerchantTradeFunction<CTX extends Context> extends AbstractConditio
item.count(ResourceConfigUtils.getAsInt(args.get("count"), "count"));
}
if (VersionHelper.isOrAbove1_20_5() && args.containsKey("components")) {
item = new ComponentsModifier<>(MiscUtils.castToMap(args.get("components"), false)).apply(item, ItemBuildContext.empty());
item = new ComponentsProcessor<>(MiscUtils.castToMap(args.get("components"), false)).apply(item, ItemBuildContext.empty());
}
if (!VersionHelper.isOrAbove1_20_5() && args.containsKey("nbt")) {
item = new TagsModifier<>(MiscUtils.castToMap(args.get("nbt"), false)).apply(item, ItemBuildContext.empty());
item = new TagsProcessor<>(MiscUtils.castToMap(args.get("nbt"), false)).apply(item, ItemBuildContext.empty());
}
return item;
} else {

View File

@@ -1,14 +1,14 @@
package net.momirealms.craftengine.core.registry;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorType;
import net.momirealms.craftengine.core.block.entity.BlockEntityType;
import net.momirealms.craftengine.core.block.entity.render.element.BlockEntityElementConfigFactory;
import net.momirealms.craftengine.core.block.properties.PropertyFactory;
import net.momirealms.craftengine.core.entity.furniture.behavior.FurnitureBehaviorType;
import net.momirealms.craftengine.core.entity.furniture.element.FurnitureElementConfigFactory;
import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitBoxConfigFactory;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory;
import net.momirealms.craftengine.core.item.equipment.EquipmentFactory;
import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe;
@@ -52,8 +52,8 @@ import net.momirealms.craftengine.core.util.ResourceKey;
public class BuiltInRegistries {
public static final Registry<CustomBlock> BLOCK = createDynamicBoundRegistry(Registries.BLOCK, 512);
public static final Registry<BlockBehaviorFactory> BLOCK_BEHAVIOR_FACTORY = createConstantBoundRegistry(Registries.BLOCK_BEHAVIOR_FACTORY, 64);
public static final Registry<ItemDataModifierFactory<?>> ITEM_DATA_MODIFIER_FACTORY = createConstantBoundRegistry(Registries.ITEM_DATA_MODIFIER_FACTORY, 64);
public static final Registry<BlockBehaviorType> BLOCK_BEHAVIOR_TYPE = createConstantBoundRegistry(Registries.BLOCK_BEHAVIOR_TYPE, 64);
public static final Registry<ItemProcessorFactory<?>> ITEM_DATA_MODIFIER_FACTORY = createConstantBoundRegistry(Registries.ITEM_DATA_MODIFIER_FACTORY, 64);
public static final Registry<ItemBehaviorFactory> ITEM_BEHAVIOR_FACTORY = createConstantBoundRegistry(Registries.ITEM_BEHAVIOR_FACTORY, 64);
public static final Registry<PropertyFactory> PROPERTY_FACTORY = createConstantBoundRegistry(Registries.PROPERTY_FACTORY, 16);
public static final Registry<LootFunctionFactory<?>> LOOT_FUNCTION_FACTORY = createConstantBoundRegistry(Registries.LOOT_FUNCTION_FACTORY, 32);

View File

@@ -1,14 +1,14 @@
package net.momirealms.craftengine.core.registry;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorType;
import net.momirealms.craftengine.core.block.entity.BlockEntityType;
import net.momirealms.craftengine.core.block.entity.render.element.BlockEntityElementConfigFactory;
import net.momirealms.craftengine.core.block.properties.PropertyFactory;
import net.momirealms.craftengine.core.entity.furniture.behavior.FurnitureBehaviorType;
import net.momirealms.craftengine.core.entity.furniture.element.FurnitureElementConfigFactory;
import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitBoxConfigFactory;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory;
import net.momirealms.craftengine.core.item.equipment.EquipmentFactory;
import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe;
@@ -54,9 +54,9 @@ import net.momirealms.craftengine.core.util.ResourceKey;
public 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<ItemDataModifierFactory<?>>> ITEM_DATA_MODIFIER_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_data_modifier_factory"));
public static final ResourceKey<Registry<ItemProcessorFactory<?>>> ITEM_DATA_MODIFIER_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_data_modifier_factory"));
public static final ResourceKey<Registry<PropertyFactory>> PROPERTY_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("property_factory"));
public static final ResourceKey<Registry<BlockBehaviorFactory>> BLOCK_BEHAVIOR_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block_behavior_factory"));
public static final ResourceKey<Registry<BlockBehaviorType>> BLOCK_BEHAVIOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block_behavior_type"));
public static final ResourceKey<Registry<ItemBehaviorFactory>> ITEM_BEHAVIOR_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_behavior_factory"));
public static final ResourceKey<Registry<LootFunctionFactory<?>>> LOOT_FUNCTION_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("loot_function_factory"));
public static final ResourceKey<Registry<LootEntryContainerFactory<?>>> LOOT_ENTRY_CONTAINER_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("loot_entry_container_factory"));

View File

@@ -90,7 +90,7 @@ public abstract class CEWorld {
}
public boolean isChunkLoaded(final long chunkPos) {
return loadedChunkMap.containsKey(chunkPos);
return this.loadedChunkMap.containsKey(chunkPos);
}
public void addLoadedChunk(CEChunk chunk) {