mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-31 12:56:28 +00:00
dev
This commit is contained in:
@@ -20,8 +20,8 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
|
||||
protected final UniqueKey id;
|
||||
protected final Key material;
|
||||
protected final Key clientBoundMaterial;
|
||||
protected final ItemProcessor<I>[] modifiers;
|
||||
protected final ItemProcessor<I>[] clientBoundModifiers;
|
||||
protected final ItemProcessor[] modifiers;
|
||||
protected final ItemProcessor[] clientBoundModifiers;
|
||||
protected final List<ItemBehavior> behaviors;
|
||||
protected final ItemSettings settings;
|
||||
protected final Map<EventTrigger, List<Function<Context>>> events;
|
||||
@@ -30,8 +30,8 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
|
||||
@SuppressWarnings("unchecked")
|
||||
public AbstractCustomItem(boolean isVanillaItem, UniqueKey id, Key material, Key clientBoundMaterial,
|
||||
List<ItemBehavior> behaviors,
|
||||
List<ItemProcessor<I>> modifiers,
|
||||
List<ItemProcessor<I>> clientBoundModifiers,
|
||||
List<ItemProcessor> modifiers,
|
||||
List<ItemProcessor> clientBoundModifiers,
|
||||
ItemSettings settings,
|
||||
Map<EventTrigger, List<Function<Context>>> events,
|
||||
ItemUpdateConfig updater) {
|
||||
@@ -82,7 +82,7 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I>[] dataModifiers() {
|
||||
public ItemProcessor[] dataModifiers() {
|
||||
return this.modifiers;
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I>[] clientBoundDataModifiers() {
|
||||
public ItemProcessor[] clientBoundDataModifiers() {
|
||||
return this.clientBoundModifiers;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,11 +35,11 @@ public interface CustomItem<I> extends BuildableItem<I> {
|
||||
|
||||
Key clientBoundMaterial();
|
||||
|
||||
ItemProcessor<I>[] dataModifiers();
|
||||
ItemProcessor[] dataModifiers();
|
||||
|
||||
boolean hasClientBoundDataModifier();
|
||||
|
||||
ItemProcessor<I>[] clientBoundDataModifiers();
|
||||
ItemProcessor[] clientBoundDataModifiers();
|
||||
|
||||
ItemSettings settings();
|
||||
|
||||
@@ -63,13 +63,13 @@ public interface CustomItem<I> extends BuildableItem<I> {
|
||||
|
||||
Builder<I> material(Key material);
|
||||
|
||||
Builder<I> dataModifier(ItemProcessor<I> modifier);
|
||||
Builder<I> dataModifier(ItemProcessor modifier);
|
||||
|
||||
Builder<I> dataModifiers(List<ItemProcessor<I>> modifiers);
|
||||
Builder<I> dataModifiers(List<ItemProcessor> modifiers);
|
||||
|
||||
Builder<I> clientBoundDataModifier(ItemProcessor<I> modifier);
|
||||
Builder<I> clientBoundDataModifier(ItemProcessor modifier);
|
||||
|
||||
Builder<I> clientBoundDataModifiers(List<ItemProcessor<I>> modifiers);
|
||||
Builder<I> clientBoundDataModifiers(List<ItemProcessor> modifiers);
|
||||
|
||||
Builder<I> behavior(ItemBehavior behavior);
|
||||
|
||||
|
||||
@@ -228,7 +228,7 @@ public interface Item<I> {
|
||||
|
||||
void merge(Item<I> another);
|
||||
|
||||
default Item<I> apply(ItemProcessor<I> modifier, ItemBuildContext context) {
|
||||
default Item<I> apply(ItemProcessor modifier, ItemBuildContext context) {
|
||||
return modifier.apply(this, context);
|
||||
}
|
||||
|
||||
|
||||
@@ -58,8 +58,8 @@ public class ItemSettings {
|
||||
|
||||
private ItemSettings() {}
|
||||
|
||||
public <I> List<ItemProcessor<I>> modifiers() {
|
||||
ArrayList<ItemProcessor<I>> modifiers = new ArrayList<>();
|
||||
public <I> List<ItemProcessor> modifiers() {
|
||||
ArrayList<ItemProcessor> modifiers = new ArrayList<>();
|
||||
if (this.equipment != null) {
|
||||
EquipmentData data = this.equipment.equipmentData();
|
||||
if (data != null) {
|
||||
@@ -75,8 +75,8 @@ public class ItemSettings {
|
||||
return modifiers;
|
||||
}
|
||||
|
||||
public <I> List<ItemProcessor<I>> clientBoundModifiers() {
|
||||
ArrayList<ItemProcessor<I>> modifiers = new ArrayList<>();
|
||||
public <I> List<ItemProcessor> clientBoundModifiers() {
|
||||
ArrayList<ItemProcessor> modifiers = new ArrayList<>();
|
||||
if (this.equipment != null) {
|
||||
if (this.equipment.clientBoundModel().asBoolean(Config.globalClientboundModel())) {
|
||||
modifiers.addAll(this.equipment.equipment().modifiers());
|
||||
|
||||
@@ -26,7 +26,7 @@ public final class ComponentBasedEquipment extends AbstractEquipment implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public <I> List<ItemProcessor<I>> modifiers() {
|
||||
public <I> List<ItemProcessor> modifiers() {
|
||||
return List.of(new EquippableAssetIdProcessor<>(this.assetId));
|
||||
}
|
||||
|
||||
|
||||
@@ -9,5 +9,5 @@ public interface Equipment {
|
||||
|
||||
Key assetId();
|
||||
|
||||
<I> List<ItemProcessor<I>> modifiers();
|
||||
<I> List<ItemProcessor> modifiers();
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public final class TrimBasedEquipment extends AbstractEquipment {
|
||||
}
|
||||
|
||||
@Override
|
||||
public <I> List<ItemProcessor<I>> modifiers() {
|
||||
public <I> List<ItemProcessor> modifiers() {
|
||||
return List.of(
|
||||
new TrimProcessor<>(Key.of(AbstractPackManager.NEW_TRIM_MATERIAL), this.assetId),
|
||||
new HideTooltipProcessor<>(List.of(DataComponentKeys.TRIM))
|
||||
|
||||
@@ -15,7 +15,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
public class ArgumentsProcessor<I> implements ItemProcessor<I> {
|
||||
public class ArgumentsProcessor<I> implements ItemProcessor {
|
||||
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
|
||||
public static final String ARGUMENTS_TAG = "craftengine:arguments";
|
||||
private final Map<String, TextProvider> arguments;
|
||||
@@ -51,7 +51,7 @@ public class ArgumentsProcessor<I> implements ItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor 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()) {
|
||||
|
||||
@@ -155,7 +155,7 @@ public class AttributeModifiersProcessor<I> implements SimpleNetworkItemProcesso
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
List<PreModifier> attributeModifiers = ResourceConfigUtils.parseConfigAsList(arg, (map) -> {
|
||||
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.item.data.attribute_modifiers.missing_type");
|
||||
Key nativeType = AttributeModifiersProcessor.getNativeAttributeName(Key.of(type));
|
||||
|
||||
@@ -48,7 +48,7 @@ public class BlockStateProcessor<I> implements SimpleNetworkItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
if (arg instanceof Map<?, ?> map) {
|
||||
Map<String, String> properties = new HashMap<>();
|
||||
for (Map.Entry<?, ?> entry : map.entrySet()) {
|
||||
|
||||
@@ -12,7 +12,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class ComponentsProcessor<I> implements ItemProcessor<I> {
|
||||
public class ComponentsProcessor<I> implements ItemProcessor {
|
||||
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
|
||||
private final List<Pair<Key, Tag>> arguments;
|
||||
private CompoundTag customData = null;
|
||||
@@ -85,7 +85,7 @@ public class ComponentsProcessor<I> implements ItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "components");
|
||||
return new ComponentsProcessor<>(data);
|
||||
}
|
||||
|
||||
@@ -15,12 +15,12 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class ConditionalProcessor<I> implements ItemProcessor<I> {
|
||||
public class ConditionalProcessor<I> implements ItemProcessor {
|
||||
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
|
||||
private final Predicate<Context> condition;
|
||||
private final ItemProcessor<I>[] modifiers;
|
||||
private final ItemProcessor[] modifiers;
|
||||
|
||||
public ConditionalProcessor(Predicate<Context> condition, ItemProcessor<I>[] modifiers) {
|
||||
public ConditionalProcessor(Predicate<Context> condition, ItemProcessor[] modifiers) {
|
||||
this.modifiers = modifiers;
|
||||
this.condition = condition;
|
||||
}
|
||||
@@ -28,7 +28,7 @@ public class ConditionalProcessor<I> implements ItemProcessor<I> {
|
||||
@Override
|
||||
public Item<I> apply(Item<I> item, ItemBuildContext context) {
|
||||
if (this.condition.test(context)) {
|
||||
for (ItemProcessor<I> m : this.modifiers) {
|
||||
for (ItemProcessor m : this.modifiers) {
|
||||
item = item.apply(m, context);
|
||||
}
|
||||
}
|
||||
@@ -38,7 +38,7 @@ public class ConditionalProcessor<I> implements ItemProcessor<I> {
|
||||
@Override
|
||||
public Item<I> prepareNetworkItem(Item<I> item, ItemBuildContext context, CompoundTag networkData) {
|
||||
if (this.condition.test(context)) {
|
||||
for (ItemProcessor<I> m : this.modifiers) {
|
||||
for (ItemProcessor m : this.modifiers) {
|
||||
item = m.prepareNetworkItem(item, context, networkData);
|
||||
}
|
||||
}
|
||||
@@ -49,11 +49,11 @@ public class ConditionalProcessor<I> implements ItemProcessor<I> {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
Map<String, Object> conditionalData = ResourceConfigUtils.getAsMap(arg, "conditional");
|
||||
List<Condition<Context>> conditions = ResourceConfigUtils.parseConfigAsList(conditionalData.get("conditions"), CommonConditions::fromMap);
|
||||
List<ItemProcessor<I>> modifiers = new ArrayList<>();
|
||||
ItemProcessors.applyDataModifiers(ResourceConfigUtils.getAsMap(conditionalData.get("data"), "conditional.data"), m -> modifiers.add((ItemProcessor<I>) m));
|
||||
List<ItemProcessor> modifiers = new ArrayList<>();
|
||||
ItemProcessors.applyDataModifiers(ResourceConfigUtils.getAsMap(conditionalData.get("data"), "conditional.data"), m -> modifiers.add((ItemProcessor) m));
|
||||
return new ConditionalProcessor<>(MiscUtils.allOf(conditions), modifiers.toArray(new ItemProcessor[0]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ public class CustomModelDataProcessor<I> implements SimpleNetworkItemProcessor<I
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
int customModelData = ResourceConfigUtils.getAsInt(arg, "custom-model-data");
|
||||
return new CustomModelDataProcessor<>(customModelData);
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ public class CustomNameProcessor<I> implements SimpleNetworkItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
String name = arg.toString();
|
||||
return new CustomNameProcessor<>(name);
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public class DyedColorProcessor<I> implements SimpleNetworkItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
if (arg instanceof Integer integer) {
|
||||
return new DyedColorProcessor<>(Color.fromDecimal(integer));
|
||||
} else {
|
||||
|
||||
@@ -90,7 +90,7 @@ public class EnchantmentsProcessor<I> implements SimpleNetworkItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
Map<String, Object> enchantData = ResourceConfigUtils.getAsMap(arg, "enchantments");
|
||||
List<Enchantment> enchantments = new ArrayList<>();
|
||||
boolean merge = false;
|
||||
|
||||
@@ -45,7 +45,7 @@ public class EquippableAssetIdProcessor<I> implements SimpleNetworkItemProcessor
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
String id = arg.toString();
|
||||
return new EquippableAssetIdProcessor<>(Key.of(id));
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ public class EquippableProcessor<I> implements SimpleNetworkItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "equippable");
|
||||
return new EquippableProcessor<>(EquipmentData.fromMap(data));
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class ExternalSourceProcessor<I> implements ItemProcessor<I> {
|
||||
public class ExternalSourceProcessor<I> implements ItemProcessor {
|
||||
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
|
||||
private static final ThreadLocal<Set<Dependency>> BUILD_STACK = ThreadLocal.withInitial(LinkedHashSet::new);
|
||||
private final String id;
|
||||
@@ -68,7 +68,7 @@ public class ExternalSourceProcessor<I> implements ItemProcessor<I> {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor 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");
|
||||
|
||||
@@ -52,7 +52,7 @@ public class FoodProcessor<I> implements SimpleNetworkItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor 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");
|
||||
|
||||
@@ -15,7 +15,7 @@ import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class HideTooltipProcessor<I> implements ItemProcessor<I> {
|
||||
public class HideTooltipProcessor<I> implements ItemProcessor {
|
||||
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
|
||||
public static final Map<Key, Integer> TO_LEGACY;
|
||||
public static final List<Key> COMPONENTS = List.of(
|
||||
@@ -230,7 +230,7 @@ public class HideTooltipProcessor<I> implements ItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
List<Key> components = MiscUtils.getAsStringList(arg).stream().map(Key::of).toList();
|
||||
return new HideTooltipProcessor<>(components);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ public class ItemModelProcessor<I> implements SimpleNetworkItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
String id = arg.toString();
|
||||
return new ItemModelProcessor<>(Key.of(id));
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ public class ItemNameProcessor<I> implements SimpleNetworkItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
String name = arg.toString();
|
||||
return new ItemNameProcessor<>(name);
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ public final class ItemProcessors {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <I> void applyDataModifiers(Map<String, Object> dataSection, Consumer<ItemProcessor<I>> callback) {
|
||||
public static <I> void applyDataModifiers(Map<String, Object> dataSection, Consumer<ItemProcessor> callback) {
|
||||
ExceptionCollector<LocalizedResourceConfigException> errorCollector = new ExceptionCollector<>();
|
||||
if (dataSection != null) {
|
||||
for (Map.Entry<String, Object> dataEntry : dataSection.entrySet()) {
|
||||
@@ -82,7 +82,7 @@ public final class ItemProcessors {
|
||||
try {
|
||||
ItemProcessorFactory<?> factory = processorType.factory();
|
||||
if (factory != null) {
|
||||
callback.accept((ItemProcessor<I>) factory.create(value));
|
||||
callback.accept((ItemProcessor) factory.create(value));
|
||||
}
|
||||
} catch (LocalizedResourceConfigException e) {
|
||||
errorCollector.add(e);
|
||||
|
||||
@@ -8,7 +8,7 @@ import net.momirealms.sparrow.nbt.CompoundTag;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class ItemVersionProcessor<I> implements ItemProcessor<I> {
|
||||
public class ItemVersionProcessor<I> implements ItemProcessor {
|
||||
public static final String VERSION_TAG = "craftengine:version";
|
||||
private final int version;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
|
||||
import net.momirealms.craftengine.core.item.data.JukeboxPlayable;
|
||||
|
||||
public class JukeboxSongProcessor<I> implements ItemProcessor<I> {
|
||||
public class JukeboxSongProcessor<I> implements ItemProcessor {
|
||||
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
|
||||
private final JukeboxPlayable song;
|
||||
|
||||
@@ -26,7 +26,7 @@ public class JukeboxSongProcessor<I> implements ItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
String song = arg.toString();
|
||||
return new JukeboxSongProcessor<>(new JukeboxPlayable(song, true));
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public class MaxDamageProcessor<I> implements SimpleNetworkItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
NumberProvider numberProvider = NumberProviders.fromObject(arg);
|
||||
return new MaxDamageProcessor<>(numberProvider);
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ public class OverwritableCustomModelDataProcessor<I> implements SimpleNetworkIte
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
int customModelData = ResourceConfigUtils.getAsInt(arg, "custom-model-data");
|
||||
return new OverwritableCustomModelDataProcessor<>(customModelData);
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ public class OverwritableItemModelProcessor<I> implements SimpleNetworkItemProce
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
String id = arg.toString();
|
||||
return new OverwritableItemModelProcessor<>(Key.of(id));
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ public class OverwritableItemNameProcessor<I> implements SimpleNetworkItemProces
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
return new OverwritableItemNameProcessor<>(arg.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import net.momirealms.sparrow.nbt.CompoundTag;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
public class PDCProcessor<I> implements ItemProcessor<I> {
|
||||
public class PDCProcessor<I> implements ItemProcessor {
|
||||
public static final String BUKKIT_PDC = "PublicBukkitValues";
|
||||
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
|
||||
private final CompoundTag data;
|
||||
@@ -36,7 +36,7 @@ public class PDCProcessor<I> implements ItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "pdc");
|
||||
CompoundTag tag = (CompoundTag) CraftEngine.instance().platform().javaToSparrowNBT(data);
|
||||
return new PDCProcessor<>(tag);
|
||||
|
||||
@@ -11,7 +11,7 @@ import net.momirealms.sparrow.nbt.Tag;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class RemoveComponentProcessor<I> implements ItemProcessor<I> {
|
||||
public class RemoveComponentProcessor<I> implements ItemProcessor {
|
||||
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
|
||||
private final List<String> arguments;
|
||||
|
||||
@@ -45,7 +45,7 @@ public class RemoveComponentProcessor<I> implements ItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
List<String> data = MiscUtils.getAsStringList(arg);
|
||||
return new RemoveComponentProcessor<>(data);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import net.momirealms.sparrow.nbt.CompoundTag;
|
||||
import net.momirealms.sparrow.nbt.Tag;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public interface SimpleNetworkItemProcessor<I> extends ItemProcessor<I> {
|
||||
public interface SimpleNetworkItemProcessor<I> extends ItemProcessor {
|
||||
|
||||
@Override
|
||||
default Item<I> prepareNetworkItem(Item<I> item, ItemBuildContext context, CompoundTag networkData) {
|
||||
|
||||
@@ -11,7 +11,7 @@ import net.momirealms.sparrow.nbt.Tag;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class TagsProcessor<I> implements ItemProcessor<I> {
|
||||
public class TagsProcessor<I> implements ItemProcessor {
|
||||
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
|
||||
private final Map<String, Object> arguments;
|
||||
|
||||
@@ -132,7 +132,7 @@ public class TagsProcessor<I> implements ItemProcessor<I> {
|
||||
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "nbt");
|
||||
return new TagsProcessor<>(data);
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ public class TooltipStyleProcessor<I> implements SimpleNetworkItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
String id = arg.toString();
|
||||
return new TooltipStyleProcessor<>(Key.of(id));
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ public class TrimProcessor<I> implements SimpleNetworkItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor 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);
|
||||
|
||||
@@ -45,7 +45,7 @@ public class UnbreakableProcessor<I> implements SimpleNetworkItemProcessor<I> {
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
boolean value = ResourceConfigUtils.getAsBoolean(arg, "unbreakable");
|
||||
return new UnbreakableProcessor<>(value);
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ public final class DynamicLoreProcessor<I> implements SimpleNetworkItemProcessor
|
||||
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
Map<String, LoreProcessor<I>> dynamicLore = new LinkedHashMap<>();
|
||||
if (arg instanceof Map<?, ?> map) {
|
||||
for (Map.Entry<?, ?> entry : map.entrySet()) {
|
||||
|
||||
@@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.processor.ItemProcessor;
|
||||
|
||||
class LoreFactory<I> implements ItemProcessorFactory<I> {
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
return LoreProcessor.createLoreModifier(arg);
|
||||
}
|
||||
}
|
||||
@@ -49,7 +49,7 @@ public final class OverwritableLoreProcessor<I> implements SimpleNetworkItemProc
|
||||
|
||||
private static class Factory<I> implements ItemProcessorFactory<I> {
|
||||
@Override
|
||||
public ItemProcessor<I> create(Object arg) {
|
||||
public ItemProcessor create(Object arg) {
|
||||
LoreProcessor<I> lore = LoreProcessor.createLoreModifier(arg);
|
||||
return new OverwritableLoreProcessor<>(lore);
|
||||
}
|
||||
|
||||
@@ -12,15 +12,15 @@ import java.util.Map;
|
||||
|
||||
public class ApplyItemDataPostProcessor<T> implements PostProcessor<T> {
|
||||
public static final PostProcessorFactory<?> FACTORY = new Factory<>();
|
||||
private final ItemProcessor<T>[] modifiers;
|
||||
private final ItemProcessor[] modifiers;
|
||||
|
||||
public ApplyItemDataPostProcessor(ItemProcessor<T>[] modifiers) {
|
||||
public ApplyItemDataPostProcessor(ItemProcessor[] modifiers) {
|
||||
this.modifiers = modifiers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item<T> process(Item<T> item, ItemBuildContext context) {
|
||||
for (ItemProcessor<T> modifier : this.modifiers) {
|
||||
for (ItemProcessor modifier : this.modifiers) {
|
||||
item.apply(modifier, context);
|
||||
}
|
||||
return item;
|
||||
@@ -31,7 +31,7 @@ public class ApplyItemDataPostProcessor<T> implements PostProcessor<T> {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public PostProcessor<A> create(Map<String, Object> args) {
|
||||
List<ItemProcessor<?>> modifiers = new ArrayList<>();
|
||||
List<ItemProcessor> modifiers = new ArrayList<>();
|
||||
Map<String, Object> data = ResourceConfigUtils.getAsMap(args.get("data"), "data");
|
||||
ItemProcessors.applyDataModifiers(data, modifiers::add);
|
||||
return new ApplyItemDataPostProcessor<>(modifiers.toArray(new ItemProcessor[0]));
|
||||
|
||||
@@ -15,16 +15,16 @@ import java.util.Map;
|
||||
|
||||
public final class ApplyDataOperation<I> implements ItemUpdater<I> {
|
||||
public static final ItemUpdaterFactory<?> FACTORY = new Factory<>();
|
||||
private final List<ItemProcessor<I>> modifiers;
|
||||
private final List<ItemProcessor> modifiers;
|
||||
|
||||
public ApplyDataOperation(List<ItemProcessor<I>> modifiers) {
|
||||
public ApplyDataOperation(List<ItemProcessor> modifiers) {
|
||||
this.modifiers = modifiers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item<I> update(Item<I> item, ItemBuildContext context) {
|
||||
if (this.modifiers != null) {
|
||||
for (ItemProcessor<I> modifier : this.modifiers) {
|
||||
for (ItemProcessor modifier : this.modifiers) {
|
||||
modifier.apply(item, context);
|
||||
}
|
||||
}
|
||||
@@ -36,10 +36,10 @@ public final class ApplyDataOperation<I> implements ItemUpdater<I> {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public ItemUpdater<I> create(Key item, Map<String, Object> args) {
|
||||
List<ItemProcessor<I>> modifiers = new ArrayList<>();
|
||||
List<ItemProcessor> modifiers = new ArrayList<>();
|
||||
Map<String, Object> data = ResourceConfigUtils.getAsMap(args.get("data"), "data");
|
||||
ItemProcessors.applyDataModifiers(data, m -> {
|
||||
modifiers.add((ItemProcessor<I>) m);
|
||||
modifiers.add((ItemProcessor) m);
|
||||
});
|
||||
return new ApplyDataOperation<>(modifiers);
|
||||
}
|
||||
|
||||
@@ -15,9 +15,9 @@ import java.util.Map;
|
||||
|
||||
public final class ApplyDataFunction<T> extends AbstractLootConditionalFunction<T> {
|
||||
public static final LootFunctionFactory<?> FACTORY = new Factory<>();
|
||||
private final ItemProcessor<?>[] modifiers;
|
||||
private final ItemProcessor[] modifiers;
|
||||
|
||||
public ApplyDataFunction(List<Condition<LootContext>> conditions, ItemProcessor<?>[] modifiers) {
|
||||
public ApplyDataFunction(List<Condition<LootContext>> conditions, ItemProcessor[] modifiers) {
|
||||
super(conditions);
|
||||
this.modifiers = modifiers;
|
||||
}
|
||||
@@ -36,7 +36,7 @@ public final class ApplyDataFunction<T> extends AbstractLootConditionalFunction<
|
||||
|
||||
@Override
|
||||
public LootFunction<A> create(Map<String, Object> arguments) {
|
||||
List<ItemProcessor<?>> modifiers = new ArrayList<>();
|
||||
List<ItemProcessor> modifiers = new ArrayList<>();
|
||||
Map<String, Object> data = ResourceConfigUtils.getAsMap(ResourceConfigUtils.requireNonNullOrThrow(arguments.get("data"), "warning.config.loot_table.function.apply_data.missing_data"), "data");
|
||||
ItemProcessors.applyDataModifiers(data, modifiers::add);
|
||||
List<Condition<LootContext>> conditions = ResourceConfigUtils.parseConfigAsList(arguments.get("conditions"), CommonConditions::fromMap);
|
||||
|
||||
@@ -44,6 +44,10 @@ public class CooldownData {
|
||||
this.cooldownMap.clear();
|
||||
}
|
||||
|
||||
public Long getCooldown(String key) {
|
||||
return this.cooldownMap.get(key);
|
||||
}
|
||||
|
||||
public static byte[] toBytes(CooldownData data) throws IOException {
|
||||
CompoundTag tag = new CompoundTag();
|
||||
long currentTime = System.currentTimeMillis();
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
package net.momirealms.craftengine.core.util;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public final class CountdownFormatter {
|
||||
private static final Pattern YEAR_PATTERN = Pattern.compile("[Yy]+");
|
||||
private static final Pattern MONTH_PATTERN = Pattern.compile("M+");
|
||||
private static final Pattern DAY_PATTERN = Pattern.compile("[Dd]+");
|
||||
private static final Pattern HOUR_PATTERN = Pattern.compile("[Hh]+");
|
||||
private static final Pattern MINUTE_PATTERN = Pattern.compile("m+");
|
||||
private static final Pattern SECOND_PATTERN = Pattern.compile("s+");
|
||||
private static final Pattern MILLIS_PATTERN = Pattern.compile("S+");
|
||||
private final String pattern;
|
||||
private final Matcher yearMatcher;
|
||||
private final Matcher monthMatcher;
|
||||
private final Matcher dayMatcher;
|
||||
private final Matcher hourMatcher;
|
||||
private final Matcher minuteMatcher;
|
||||
private final Matcher secondMatcher;
|
||||
private final Matcher millisMatcher;
|
||||
private final boolean hasYear;
|
||||
private final boolean hasMonth;
|
||||
private final boolean hasDay;
|
||||
private final boolean hasHour;
|
||||
private final boolean hasMinute;
|
||||
private final boolean hasSecond;
|
||||
private final boolean hasMillis;
|
||||
|
||||
private CountdownFormatter(String pattern) {
|
||||
this.pattern = pattern;
|
||||
this.yearMatcher = YEAR_PATTERN.matcher(pattern);
|
||||
this.monthMatcher = MONTH_PATTERN.matcher(pattern);
|
||||
this.dayMatcher = DAY_PATTERN.matcher(pattern);
|
||||
this.hourMatcher = HOUR_PATTERN.matcher(pattern);
|
||||
this.minuteMatcher = MINUTE_PATTERN.matcher(pattern);
|
||||
this.secondMatcher = SECOND_PATTERN.matcher(pattern);
|
||||
this.millisMatcher = MILLIS_PATTERN.matcher(pattern);
|
||||
this.hasYear = yearMatcher.find();
|
||||
this.hasMonth = monthMatcher.find();
|
||||
this.hasDay = dayMatcher.find();
|
||||
this.hasHour = hourMatcher.find();
|
||||
this.hasMinute = minuteMatcher.find();
|
||||
this.hasSecond = secondMatcher.find();
|
||||
this.hasMillis = millisMatcher.find();
|
||||
}
|
||||
|
||||
public static CountdownFormatter of(String pattern) {
|
||||
return new CountdownFormatter(pattern);
|
||||
}
|
||||
|
||||
public String format(long millis) {
|
||||
long years = 0, months = 0, days = 0, hours = 0, minutes = 0, seconds = 0;
|
||||
|
||||
if (!hasMillis) {
|
||||
seconds = millis / 1000;
|
||||
millis = 0;
|
||||
}
|
||||
if (!hasSecond) {
|
||||
minutes = seconds / 60;
|
||||
seconds = 0;
|
||||
}
|
||||
if (!hasMinute) {
|
||||
hours = minutes / 60;
|
||||
minutes = 0;
|
||||
}
|
||||
if (!hasHour) {
|
||||
days = hours / 24;
|
||||
hours = 0;
|
||||
}
|
||||
if (!hasDay) {
|
||||
months = days / 30;
|
||||
days = 0;
|
||||
}
|
||||
if (!hasMonth) {
|
||||
years = months / 12;
|
||||
months = 0;
|
||||
}
|
||||
|
||||
if (hasMillis && hasSecond) {
|
||||
seconds = millis / 1000;
|
||||
millis %= 1000;
|
||||
}
|
||||
if (hasSecond && hasMinute) {
|
||||
minutes = seconds / 60;
|
||||
seconds %= 60;
|
||||
}
|
||||
if (hasMinute && hasHour) {
|
||||
hours = minutes / 60;
|
||||
minutes %= 60;
|
||||
}
|
||||
if (hasHour && hasDay) {
|
||||
days = hours / 24;
|
||||
hours %= 24;
|
||||
}
|
||||
if (hasDay && hasMonth) {
|
||||
months = days / 30;
|
||||
days %= 30;
|
||||
}
|
||||
if (hasMonth && hasYear) {
|
||||
years = months / 12;
|
||||
months %= 12;
|
||||
}
|
||||
|
||||
StringBuilder result = new StringBuilder(pattern);
|
||||
replaceUnit(result, yearMatcher, years);
|
||||
replaceUnit(result, monthMatcher, months);
|
||||
replaceUnit(result, dayMatcher, days);
|
||||
replaceUnit(result, hourMatcher, hours);
|
||||
replaceUnit(result, minuteMatcher, minutes);
|
||||
replaceUnit(result, secondMatcher, seconds);
|
||||
replaceUnit(result, millisMatcher, millis);
|
||||
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
private void replaceUnit(StringBuilder text, Matcher matcher, long value) {
|
||||
matcher.reset(text);
|
||||
if (matcher.find()) {
|
||||
int length = matcher.group().length();
|
||||
String formatted = String.format("%0" + length + "d", value);
|
||||
text.replace(matcher.start(), matcher.end(), formatted);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user