diff --git a/tweed5-minecraft/coat-bridge/src/main/java/de/siphalor/tweed5/coat/bridge/impl/TweedCoatMappersImpl.java b/tweed5-minecraft/coat-bridge/src/main/java/de/siphalor/tweed5/coat/bridge/impl/TweedCoatMappersImpl.java index 6fb9853..6eda111 100644 --- a/tweed5-minecraft/coat-bridge/src/main/java/de/siphalor/tweed5/coat/bridge/impl/TweedCoatMappersImpl.java +++ b/tweed5-minecraft/coat-bridge/src/main/java/de/siphalor/tweed5/coat/bridge/impl/TweedCoatMappersImpl.java @@ -94,12 +94,14 @@ public class TweedCoatMappersImpl { @Override public TweedCoatEntryMappingResult mapEntry(ConfigEntry entry, TweedCoatEntryMappingContext context) { - boolean applicable = anyClassMatches(entry.valueClass(), valueClasses); + if (!anyClassMatches(entry.valueClass(), valueClasses)) { + return TweedCoatEntryMappingResult.notApplicable(); + } return new TweedCoatEntryMappingResult() { @Override public boolean isApplicable() { - return applicable; + return true; } @Override @@ -198,12 +200,7 @@ public class TweedCoatMappersImpl { @Override public TweedCoatEntryMappingResult mapEntry(ConfigEntry entry, TweedCoatEntryMappingContext context) { - matchingClass: { - for (Class valueClass : valueClasses) { - if (entry.valueClass() == valueClass) { - break matchingClass; - } - } + if (!anyClassMatches(entry.valueClass(), valueClasses)) { return TweedCoatEntryMappingResult.notApplicable(); } @@ -359,9 +356,9 @@ public class TweedCoatMappersImpl { } } - private static boolean anyClassMatches(Object value, Class... classes) { + private static boolean anyClassMatches(Class valueClass, Class... classes) { for (Class clazz : classes) { - if (clazz.isInstance(value)) { + if (clazz.isAssignableFrom(valueClass)) { return true; } } diff --git a/tweed5-minecraft/coat-bridge/src/testmod/java/de/siphalor/tweed5/coat/bridge/testmod/TweedCoatBridgeTestMod.java b/tweed5-minecraft/coat-bridge/src/testmod/java/de/siphalor/tweed5/coat/bridge/testmod/TweedCoatBridgeTestMod.java index 88b89cf..c74ddc1 100644 --- a/tweed5-minecraft/coat-bridge/src/testmod/java/de/siphalor/tweed5/coat/bridge/testmod/TweedCoatBridgeTestMod.java +++ b/tweed5-minecraft/coat-bridge/src/testmod/java/de/siphalor/tweed5/coat/bridge/testmod/TweedCoatBridgeTestMod.java @@ -54,7 +54,7 @@ public class TweedCoatBridgeTestMod implements ClientModInitializer { KeyBindingHelper.registerKeyBinding(new ScreenKeyBinding(MOD_ID + ".config", 84, KeyMapping.Category.MISC)); - log.info("current config"); + log.info("Current config: " + config); } private class ScreenKeyBinding extends KeyMapping implements PriorityKeyBinding { diff --git a/tweed5-minecraft/coat-bridge/src/testmod/java/de/siphalor/tweed5/coat/bridge/testmod/TweedCoatBridgeTestModConfig.java b/tweed5-minecraft/coat-bridge/src/testmod/java/de/siphalor/tweed5/coat/bridge/testmod/TweedCoatBridgeTestModConfig.java index 7f47b8d..30d7452 100644 --- a/tweed5-minecraft/coat-bridge/src/testmod/java/de/siphalor/tweed5/coat/bridge/testmod/TweedCoatBridgeTestModConfig.java +++ b/tweed5-minecraft/coat-bridge/src/testmod/java/de/siphalor/tweed5/coat/bridge/testmod/TweedCoatBridgeTestModConfig.java @@ -1,18 +1,17 @@ package de.siphalor.tweed5.coat.bridge.testmod; import de.siphalor.tweed5.coat.bridge.api.TweedCoatAttributes; +import de.siphalor.tweed5.coat.bridge.api.TweedCoatBridgeExtension; import de.siphalor.tweed5.fabric.helper.api.DefaultTweedMinecraftWeaving; import de.siphalor.tweed5.weaver.pojo.api.annotation.CompoundWeaving; -import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeaving; +import de.siphalor.tweed5.weaver.pojo.api.annotation.TweedExtension; import de.siphalor.tweed5.weaver.pojoext.attributes.api.Attribute; import de.siphalor.tweed5.weaver.pojoext.validation.api.Validator; import de.siphalor.tweed5.weaver.pojoext.validation.api.validators.WeavableNumberRangeValidator; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; -@PojoWeaving @DefaultTweedMinecraftWeaving +@TweedExtension(TweedCoatBridgeExtension.class) @CompoundWeaving(namingFormat = "kebab_case") @Data public class TweedCoatBridgeTestModConfig { @@ -26,9 +25,11 @@ public class TweedCoatBridgeTestModConfig { @Attribute(key = TweedCoatAttributes.BACKGROUND_TEXTURE, values = "textures/block/red_terracotta.png") private Greeting clientGreeting = new Greeting("Hello client!", "Client"); + @CompoundWeaving @NoArgsConstructor @AllArgsConstructor - @CompoundWeaving + @EqualsAndHashCode + @ToString public static class Greeting { public String greeting; public String greeter; diff --git a/tweed5-minecraft/fabric-helper/src/main/java/de/siphalor/tweed5/fabric/helper/api/DefaultTweedMinecraftWeaving.java b/tweed5-minecraft/fabric-helper/src/main/java/de/siphalor/tweed5/fabric/helper/api/DefaultTweedMinecraftWeaving.java index b0b7d70..e1f4b2c 100644 --- a/tweed5-minecraft/fabric-helper/src/main/java/de/siphalor/tweed5/fabric/helper/api/DefaultTweedMinecraftWeaving.java +++ b/tweed5-minecraft/fabric-helper/src/main/java/de/siphalor/tweed5/fabric/helper/api/DefaultTweedMinecraftWeaving.java @@ -7,16 +7,19 @@ import de.siphalor.tweed5.data.extension.api.ReadWriteExtension; import de.siphalor.tweed5.defaultextensions.presets.api.PresetsExtension; import de.siphalor.tweed5.defaultextensions.validation.api.ValidationExtension; import de.siphalor.tweed5.defaultextensions.validationfallback.api.ValidationFallbackExtension; -import de.siphalor.tweed5.weaver.pojo.api.annotation.CompoundWeaving; -import de.siphalor.tweed5.weaver.pojo.api.annotation.DefaultWeavingExtensions; -import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeavingExtension; -import de.siphalor.tweed5.weaver.pojo.api.annotation.TweedExtension; +import de.siphalor.tweed5.weaver.pojo.api.annotation.*; import de.siphalor.tweed5.weaver.pojoext.attributes.api.AttributesPojoWeavingProcessor; import de.siphalor.tweed5.weaver.pojoext.serde.api.auto.AutoReadWritePojoWeavingProcessor; import de.siphalor.tweed5.weaver.pojoext.serde.api.auto.DefaultReadWriteMappings; import de.siphalor.tweed5.weaver.pojoext.validation.api.ValidatorsPojoWeavingProcessor; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + @AnnotationInheritance(passOn = { + PojoWeaving.class, TweedExtension.class, PojoWeavingExtension.class, DefaultWeavingExtensions.class, @@ -34,5 +37,7 @@ import de.siphalor.tweed5.weaver.pojoext.validation.api.ValidatorsPojoWeavingPro @DefaultWeavingExtensions @DefaultReadWriteMappings @CompoundWeaving +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE}) public @interface DefaultTweedMinecraftWeaving { } diff --git a/tweed5-minecraft/fabric-helper/src/testmod/java/de/siphalor/tweed5/fabric/helper/testmod/TestModConfig.java b/tweed5-minecraft/fabric-helper/src/testmod/java/de/siphalor/tweed5/fabric/helper/testmod/TestModConfig.java index ea3f1db..b289063 100644 --- a/tweed5-minecraft/fabric-helper/src/testmod/java/de/siphalor/tweed5/fabric/helper/testmod/TestModConfig.java +++ b/tweed5-minecraft/fabric-helper/src/testmod/java/de/siphalor/tweed5/fabric/helper/testmod/TestModConfig.java @@ -2,11 +2,9 @@ package de.siphalor.tweed5.fabric.helper.testmod; import de.siphalor.tweed5.fabric.helper.api.DefaultTweedMinecraftWeaving; import de.siphalor.tweed5.weaver.pojo.api.annotation.CompoundWeaving; -import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeaving; import de.siphalor.tweed5.weaver.pojoext.attributes.api.Attribute; import lombok.Data; -@PojoWeaving @DefaultTweedMinecraftWeaving @CompoundWeaving(namingFormat = "kebab_case") @Data