From e6d9e657c7b386ff906622e70c26e1f9efd91653 Mon Sep 17 00:00:00 2001 From: Patbox <39821509+Patbox@users.noreply.github.com> Date: Tue, 28 May 2024 21:28:54 +0200 Subject: [PATCH] Update to 1.20.6 (Polymer Port) --- build.gradle | 8 ++- gradle.properties | 10 +-- .../java/dev/emi/trinkets/TrinketsMain.java | 16 ++--- .../dev/emi/trinkets/TrinketsNetwork.java | 18 ++++++ .../api/LivingEntityTrinketComponent.java | 61 +------------------ .../java/dev/emi/trinkets/api/SlotType.java | 9 ++- .../java/dev/emi/trinkets/api/Trinket.java | 14 ----- .../trinkets/compat/TrinketsEmiPlugin.java | 27 -------- .../compat/TrinketsExclusionAreas.java | 49 --------------- .../trinkets/compat/TrinketsREIPlugin.java | 24 -------- .../dev/emi/trinkets/data/SlotLoader.java | 6 +- .../emi/trinkets/mixin/LivingEntityMixin.java | 6 -- .../mixin/datafixer/Schema1460Mixin.java | 6 +- .../java/dev/emi/trinkets/poly/Elements.java | 4 +- .../dev/emi/trinkets/poly/TrinketsFlatUI.java | 15 +++-- .../dev/emi/trinkets/poly/TrinketsPoly.java | 3 + src/main/resources/fabric.mod.json | 15 +++-- src/main/resources/trinkets.mixins.json | 1 - .../java/dev/emi/trinkets/TestTrinket.java | 1 - 19 files changed, 66 insertions(+), 227 deletions(-) create mode 100644 src/main/java/dev/emi/trinkets/TrinketsNetwork.java delete mode 100644 src/main/java/dev/emi/trinkets/compat/TrinketsEmiPlugin.java delete mode 100644 src/main/java/dev/emi/trinkets/compat/TrinketsExclusionAreas.java delete mode 100644 src/main/java/dev/emi/trinkets/compat/TrinketsREIPlugin.java diff --git a/build.gradle b/build.gradle index 7dad6b4a..b0f18700 100644 --- a/build.gradle +++ b/build.gradle @@ -68,14 +68,13 @@ dependencies { modCompileOnly "dev.emi:emi-fabric:${emi_version}:api" modImplementation include("eu.pb4:sgui:${project.sgui_version}") - modImplementation include("eu.pb4:polymer-resource-pack:${project.polymer_version}") + modImplementation "eu.pb4:polymer-core:${project.polymer_version}" + modImplementation "eu.pb4:polymer-resource-pack:${project.polymer_version}" modImplementation include("eu.pb4:player-data-api:${project.pda_version}") modImplementation include("xyz.nucleoid:server-translations-api:${project.translation_version}") modLocalRuntime "eu.pb4:polymer-autohost:${project.polymer_version}" - modCompileOnly "eu.pb4:polymer-core:${project.polymer_version}" - modLocalRuntime "eu.pb4:polymer-core:${project.polymer_version}" // Dev Runtime testmodImplementation sourceSets.main.output @@ -159,6 +158,9 @@ if (System.getenv("MODRINTH")) { versionType = "beta" uploadFile = remapJar // This links to a task that builds your mod jar and sets "uploadFile" to the mod jar. gameVersions = [((String) project.minecraft_version)] + dependencies { + required "polymer" + } changelog = System.getenv("CHANGELOG") loaders = ["fabric", "quilt"] } diff --git a/gradle.properties b/gradle.properties index 80e0d4b3..a25d7802 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,10 +16,10 @@ emi_version=1.1.6+1.20.6 rei_version=15.0.728 cloth_config_version=14.0.126 -port_version=2 +port_version=1 -polymer_version=0.7.4+1.20.4 -sgui_version=1.4.1+1.20.4 -translation_version=2.2.0+1.20.3-rc1 -pda_version=0.4.0+1.20.3 +polymer_version=0.8.1+1.20.6 +sgui_version=1.5.1+1.20.5 +translation_version=2.3.0+1.20.5-rc2 +pda_version=0.5.0+1.20.5 diff --git a/src/main/java/dev/emi/trinkets/TrinketsMain.java b/src/main/java/dev/emi/trinkets/TrinketsMain.java index 487b5358..cb19748f 100644 --- a/src/main/java/dev/emi/trinkets/TrinketsMain.java +++ b/src/main/java/dev/emi/trinkets/TrinketsMain.java @@ -13,11 +13,7 @@ import dev.emi.trinkets.api.TrinketsAttributeModifiersComponent; import dev.emi.trinkets.api.SlotGroup; import dev.emi.trinkets.api.SlotType; -import dev.emi.trinkets.payload.BreakPayload; -import dev.emi.trinkets.payload.SyncInventoryPayload; -import dev.emi.trinkets.payload.SyncSlotsPayload; import net.fabricmc.fabric.api.event.player.UseItemCallback; -import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.minecraft.item.ItemStack; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; @@ -31,13 +27,8 @@ import dev.emi.trinkets.data.EntitySlotLoader; import dev.emi.trinkets.data.SlotLoader; -import dev.emi.trinkets.poly.Elements; import dev.emi.trinkets.poly.TrinketsFlatUI; import dev.emi.trinkets.poly.TrinketsPoly; -import dev.onyxstudios.cca.api.v3.entity.EntityComponentFactoryRegistry; -import dev.onyxstudios.cca.api.v3.entity.EntityComponentInitializer; -import dev.onyxstudios.cca.api.v3.entity.RespawnCopyStrategy; -import eu.pb4.playerdata.api.PlayerDataApi; import org.ladysnake.cca.api.v3.entity.EntityComponentFactoryRegistry; import org.ladysnake.cca.api.v3.entity.EntityComponentInitializer; import org.ladysnake.cca.api.v3.entity.RespawnCopyStrategy; @@ -69,8 +60,6 @@ public void onInitialize() { ServerLifecycleEvents.END_DATA_PACK_RELOAD.register((server, serverResourceManager, success) -> EntitySlotLoader.SERVER.sync(server.getPlayerManager().getPlayerList())); - TrinketsPoly.init(); - CommandRegistrationCallback.EVENT.register((dispatcher, registry, env) -> UseItemCallback.EVENT.register((player, world, hand) -> { ItemStack stack = player.getStackInHand(hand); Trinket trinket = TrinketsApi.getTrinket(stack.getItem()); @@ -82,7 +71,8 @@ public void onInitialize() { return TypedActionResult.pass(stack); }); Registry.register(Registries.DATA_COMPONENT_TYPE, new Identifier(MOD_ID, "attribute_modifiers"), TrinketsAttributeModifiersComponent.TYPE); - dispatcher.register(literal("trinkets") + CommandRegistrationCallback.EVENT.register((dispatcher, registry, env) -> + dispatcher.register(literal("trinkets") .executes(ctx -> TrinketsFlatUI.open(ctx.getSource().getPlayerOrThrow())) .then(CommandManager.literal("compact").executes(TrinketsPoly::toggleCompactCommand)) .then( @@ -118,6 +108,8 @@ public void onInitialize() { ) ) )); + + TrinketsPoly.init(); } private static int trinketsCommand(CommandContext context, int amount) { diff --git a/src/main/java/dev/emi/trinkets/TrinketsNetwork.java b/src/main/java/dev/emi/trinkets/TrinketsNetwork.java new file mode 100644 index 00000000..2aa425e1 --- /dev/null +++ b/src/main/java/dev/emi/trinkets/TrinketsNetwork.java @@ -0,0 +1,18 @@ +package dev.emi.trinkets; + +import dev.emi.trinkets.payload.BreakPayload; +import dev.emi.trinkets.payload.SyncInventoryPayload; +import dev.emi.trinkets.payload.SyncSlotsPayload; +import net.minecraft.network.packet.CustomPayload; +import net.minecraft.util.Identifier; + +@Deprecated +public class TrinketsNetwork { + + public static final CustomPayload.Id SYNC_SLOTS = new CustomPayload.Id<>(new Identifier(TrinketsMain.MOD_ID, "sync_slots")); + public static final CustomPayload.Id SYNC_INVENTORY = new CustomPayload.Id<>(new Identifier(TrinketsMain.MOD_ID, "sync_inventory")); + public static final CustomPayload.Id BREAK = new CustomPayload.Id<>(new Identifier(TrinketsMain.MOD_ID, "break")); + + private TrinketsNetwork() { + } +} \ No newline at end of file diff --git a/src/main/java/dev/emi/trinkets/api/LivingEntityTrinketComponent.java b/src/main/java/dev/emi/trinkets/api/LivingEntityTrinketComponent.java index 1c92c689..afa3fb2e 100644 --- a/src/main/java/dev/emi/trinkets/api/LivingEntityTrinketComponent.java +++ b/src/main/java/dev/emi/trinkets/api/LivingEntityTrinketComponent.java @@ -14,11 +14,9 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import dev.emi.trinkets.TrinketPlayerScreenHandler; -import net.minecraft.network.RegistryByteBuf; import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.entry.RegistryEntry; -import org.ladysnake.cca.api.v3.component.sync.AutoSyncedComponent; +import org.ladysnake.cca.api.v3.component.Component; import net.fabricmc.fabric.api.util.NbtType; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.attribute.EntityAttribute; @@ -32,7 +30,7 @@ import net.minecraft.util.collection.DefaultedList; import org.ladysnake.cca.api.v3.entity.RespawnableComponent; -public class LivingEntityTrinketComponent implements TrinketComponent, AutoSyncedComponent, RespawnableComponent { +public class LivingEntityTrinketComponent implements TrinketComponent, Component, RespawnableComponent { public Map> inventory = new HashMap<>(); public Set trackingUpdates = new HashSet<>(); @@ -61,11 +59,6 @@ public Map> getInventory() { return inventory; } - @Override - public boolean shouldSyncWith(ServerPlayerEntity player) { - return false; - } - @Override public void update() { Map entitySlots = TrinketsApi.getEntitySlots(this.entity); @@ -264,47 +257,6 @@ public void readFromNbt(NbtCompound tag, RegistryWrapper.WrapperLookup lookup) { } } - @Override - public void applySyncPacket(RegistryByteBuf buf) { - NbtCompound tag = buf.readNbt(); - - if (tag != null) { - - for (String groupKey : tag.getKeys()) { - NbtCompound groupTag = tag.getCompound(groupKey); - - if (groupTag != null) { - Map groupSlots = this.inventory.get(groupKey); - - if (groupSlots != null) { - - for (String slotKey : groupTag.getKeys()) { - NbtCompound slotTag = groupTag.getCompound(slotKey); - NbtList list = slotTag.getList("Items", NbtType.COMPOUND); - TrinketInventory inv = groupSlots.get(slotKey); - - if (inv != null) { - inv.applySyncTag(slotTag.getCompound("Metadata")); - } - - for (int i = 0; i < list.size(); i++) { - NbtCompound c = list.getCompound(i); - ItemStack stack = ItemStack.fromNbtOrEmpty(buf.getRegistryManager(), c); - if (inv != null && i < inv.size()) { - inv.setStack(i, stack); - } - } - } - } - } - } - - if (this.entity instanceof PlayerEntity player) { - //((TrinketPlayerScreenHandler) player.playerScreenHandler).trinkets$updateTrinketSlots(false); - } - } - } - @Override public void writeToNbt(NbtCompound tag, RegistryWrapper.WrapperLookup lookup) { for (Map.Entry> group : this.getInventory().entrySet()) { @@ -325,15 +277,6 @@ public void writeToNbt(NbtCompound tag, RegistryWrapper.WrapperLookup lookup) { } } - @Override - public void writeSyncPacket(RegistryByteBuf buf, ServerPlayerEntity recipient) { - this.syncing = true; - NbtCompound tag = new NbtCompound(); - this.writeToNbt(tag, buf.getRegistryManager()); - this.syncing = false; - buf.writeNbt(tag); - } - @Override public boolean shouldCopyForRespawn(boolean lossless, boolean keepInventory, boolean sameCharacter) { return lossless || keepInventory; diff --git a/src/main/java/dev/emi/trinkets/api/SlotType.java b/src/main/java/dev/emi/trinkets/api/SlotType.java index 74a766ad..86cd7c74 100644 --- a/src/main/java/dev/emi/trinkets/api/SlotType.java +++ b/src/main/java/dev/emi/trinkets/api/SlotType.java @@ -3,12 +3,15 @@ import dev.emi.trinkets.api.TrinketEnums.DropRule; import dev.emi.trinkets.poly.GuiModels; import net.fabricmc.fabric.api.util.NbtType; +import net.minecraft.component.DataComponentTypes; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; import net.minecraft.nbt.NbtList; import net.minecraft.nbt.NbtString; +import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.registry.Registries; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -49,7 +52,7 @@ public SlotType(String group, String name, int order, int amount, Identifier ico this.dropRule = dropRule; this.itemIcon = itemIcon.copy(); - this.itemIcon.getOrCreateNbt().putInt("CustomModelData", GuiModels.getOrCreate(icon, this.itemIcon.getItem()).value()); + this.itemIcon.set(DataComponentTypes.CUSTOM_MODEL_DATA, GuiModels.getOrCreate(icon, this.itemIcon.getItem()).asComponent()); } public String getGroup() { @@ -121,7 +124,7 @@ public void write(NbtCompound data) { tag.put("TooltipPredicates", tooltipPredicateList); tag.putString("DropRule", dropRule.toString()); - tag.put("PolyPort$icon", this.itemIcon.writeNbt(new NbtCompound())); + tag.put("PolyPort$icon", this.itemIcon.encodeAllowEmpty(DynamicRegistryManager.of(Registries.REGISTRIES))); data.put("SlotData", tag); } @@ -158,7 +161,7 @@ public static SlotType read(NbtCompound data) { dropRule = TrinketEnums.DropRule.valueOf(dropRuleName); } - var itemIcon = ItemStack.fromNbt(slotData.getCompound("PolyPort$icon")); + var itemIcon = ItemStack.fromNbtOrEmpty(DynamicRegistryManager.of(Registries.REGISTRIES), slotData.getCompound("PolyPort$icon")); if (itemIcon == ItemStack.EMPTY) { itemIcon = Items.IRON_CHESTPLATE.getDefaultStack(); } diff --git a/src/main/java/dev/emi/trinkets/api/Trinket.java b/src/main/java/dev/emi/trinkets/api/Trinket.java index 9f899ad4..6db6135c 100644 --- a/src/main/java/dev/emi/trinkets/api/Trinket.java +++ b/src/main/java/dev/emi/trinkets/api/Trinket.java @@ -1,36 +1,22 @@ package dev.emi.trinkets.api; import java.util.ArrayList; -import java.util.Optional; import java.util.UUID; -import java.util.function.Consumer; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; -import dev.emi.trinkets.mixin.accessor.LivingEntityAccessor; -import java.util.function.Consumer; -import net.fabricmc.fabric.api.util.NbtType; import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.attribute.EntityAttribute; import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.item.Equipment; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtList; -import net.minecraft.particle.ItemStackParticleEffect; -import net.minecraft.particle.ParticleTypes; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.sound.SoundEvents; -import net.minecraft.registry.Registries; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.SoundEvent; -import net.minecraft.util.Identifier; import net.minecraft.util.math.random.Random; public interface Trinket { diff --git a/src/main/java/dev/emi/trinkets/compat/TrinketsEmiPlugin.java b/src/main/java/dev/emi/trinkets/compat/TrinketsEmiPlugin.java deleted file mode 100644 index 370e53a6..00000000 --- a/src/main/java/dev/emi/trinkets/compat/TrinketsEmiPlugin.java +++ /dev/null @@ -1,27 +0,0 @@ -package dev.emi.trinkets.compat; - -import dev.emi.emi.api.EmiPlugin; -import dev.emi.emi.api.EmiRegistry; -import dev.emi.emi.api.widget.Bounds; -import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; -import net.minecraft.client.gui.screen.ingame.InventoryScreen; -import net.minecraft.client.util.math.Rect2i; - -public class TrinketsEmiPlugin implements EmiPlugin { - - @Override - public void register(EmiRegistry registry) { - registry.addExclusionArea(InventoryScreen.class, (screen, consumer) -> { - for (Rect2i rect2i : TrinketsExclusionAreas.create(screen)) { - consumer.accept(new Bounds(rect2i.getX(), rect2i.getY(), rect2i.getWidth(), - rect2i.getHeight())); - } - }); - registry.addExclusionArea(CreativeInventoryScreen.class, (screen, consumer) -> { - for (Rect2i rect2i : TrinketsExclusionAreas.create(screen)) { - consumer.accept(new Bounds(rect2i.getX(), rect2i.getY(), rect2i.getWidth(), - rect2i.getHeight())); - } - }); - } -} diff --git a/src/main/java/dev/emi/trinkets/compat/TrinketsExclusionAreas.java b/src/main/java/dev/emi/trinkets/compat/TrinketsExclusionAreas.java deleted file mode 100644 index 3894bf1d..00000000 --- a/src/main/java/dev/emi/trinkets/compat/TrinketsExclusionAreas.java +++ /dev/null @@ -1,49 +0,0 @@ -package dev.emi.trinkets.compat; - -import dev.emi.trinkets.TrinketPlayerScreenHandler; -import dev.emi.trinkets.TrinketScreen; -import dev.emi.trinkets.TrinketScreenManager; -import dev.emi.trinkets.TrinketsClient; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; -import net.minecraft.client.util.math.Rect2i; - -public class TrinketsExclusionAreas { - - public static List create(Screen screen) { - if (screen instanceof TrinketScreen trinketScreen) { - if (screen instanceof CreativeInventoryScreen creativeInventoryScreen && - !creativeInventoryScreen.isInventoryTabSelected()) { - return List.of(); - } - List rects = new ArrayList<>(); - int x = trinketScreen.trinkets$getX(); - int y = trinketScreen.trinkets$getY(); - TrinketPlayerScreenHandler handler = trinketScreen.trinkets$getHandler(); - int groupCount = handler.trinkets$getGroupCount(); - if (groupCount <= 0 || trinketScreen.trinkets$isRecipeBookOpen()) { - return List.of(); - } - - if (TrinketsClient.activeGroup != null) { - Rect2i rect = TrinketScreenManager.currentBounds; - rects.add( - new Rect2i(rect.getX() + x, rect.getY() + y, rect.getWidth(), - rect.getHeight())); - } - int width = groupCount / 4; - int height = groupCount % 4; - if (width > 0) { - rects.add(new Rect2i(-4 - 18 * width + x, y, 7 + 18 * width, 86)); - } - - if (height > 0) { - rects.add(new Rect2i(-22 - 18 * width + x, y, 25, 14 + 18 * height)); - } - return rects; - } - return List.of(); - } -} diff --git a/src/main/java/dev/emi/trinkets/compat/TrinketsREIPlugin.java b/src/main/java/dev/emi/trinkets/compat/TrinketsREIPlugin.java deleted file mode 100644 index c8269467..00000000 --- a/src/main/java/dev/emi/trinkets/compat/TrinketsREIPlugin.java +++ /dev/null @@ -1,24 +0,0 @@ -package dev.emi.trinkets.compat; - -import dev.emi.trinkets.TrinketScreen; -import java.util.List; -import java.util.stream.Collectors; -import me.shedaniel.math.Rectangle; -import me.shedaniel.rei.api.client.plugins.REIClientPlugin; -import me.shedaniel.rei.api.client.registry.screen.ExclusionZones; -import net.minecraft.client.gui.screen.Screen; - -public class TrinketsREIPlugin implements REIClientPlugin { - - @Override - public void registerExclusionZones(ExclusionZones zones) { - zones.register(TrinketScreen.class, screen -> { - if (screen instanceof Screen guiScreen) { - return TrinketsExclusionAreas.create(guiScreen).stream().map( - rect2i -> new Rectangle(rect2i.getX(), rect2i.getY(), rect2i.getWidth(), - rect2i.getHeight())).collect(Collectors.toList()); - } - return List.of(); - }); - } -} diff --git a/src/main/java/dev/emi/trinkets/data/SlotLoader.java b/src/main/java/dev/emi/trinkets/data/SlotLoader.java index fc08c1ef..475a26b0 100644 --- a/src/main/java/dev/emi/trinkets/data/SlotLoader.java +++ b/src/main/java/dev/emi/trinkets/data/SlotLoader.java @@ -27,6 +27,7 @@ import net.minecraft.command.argument.ItemStringReader; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.registry.Registries; import net.minecraft.resource.Resource; import net.minecraft.resource.ResourceManager; @@ -165,10 +166,11 @@ SlotType create(String group, String name) { ItemStack iconItem; try { - var decode = ItemStringReader.item(Registries.ITEM.getReadOnlyWrapper(), new StringReader(this.iconItem)); + var reader = new ItemStringReader(DynamicRegistryManager.of(Registries.REGISTRIES)); + var decode = reader.consume(new StringReader(this.iconItem)); var stack = new ItemStack(decode.item().value()); - stack.setNbt(decode.nbt()); + stack.applyComponentsFrom(decode.components()); iconItem = stack; } catch (Exception e) { diff --git a/src/main/java/dev/emi/trinkets/mixin/LivingEntityMixin.java b/src/main/java/dev/emi/trinkets/mixin/LivingEntityMixin.java index 10742c0d..f5b3133b 100644 --- a/src/main/java/dev/emi/trinkets/mixin/LivingEntityMixin.java +++ b/src/main/java/dev/emi/trinkets/mixin/LivingEntityMixin.java @@ -30,13 +30,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import dev.emi.trinkets.api.SlotAttributes; -import dev.emi.trinkets.TrinketPlayerScreenHandler; import dev.emi.trinkets.api.SlotAttributes.SlotEntityAttribute; import dev.emi.trinkets.api.TrinketEnums.DropRule; import dev.emi.trinkets.api.event.TrinketDropCallback; -import net.fabricmc.fabric.api.networking.v1.PlayerLookup; -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; @@ -47,8 +43,6 @@ import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.math.MathHelper; import net.minecraft.world.GameRules; diff --git a/src/main/java/dev/emi/trinkets/mixin/datafixer/Schema1460Mixin.java b/src/main/java/dev/emi/trinkets/mixin/datafixer/Schema1460Mixin.java index 5b17332d..0fb442e2 100644 --- a/src/main/java/dev/emi/trinkets/mixin/datafixer/Schema1460Mixin.java +++ b/src/main/java/dev/emi/trinkets/mixin/datafixer/Schema1460Mixin.java @@ -40,9 +40,9 @@ private void captureSchema(Schema schemax, Map> e @ModifyReturnValue(method = {"method_5260", "method_5236"}, at = @At("RETURN")) private static TypeTemplate attachTrinketFixer(TypeTemplate original) { // Add schema for trinkets to existing datafixers - return DSL.allWithRemainder(original, + return DSL.allWithRemainder( // cardinal_components might not exist, so add it as an optional field. - DSL.optionalFields("cardinal_components", + DSL.optional(DSL.field("cardinal_components", // trinkets:trinkets might not exist, so add it as an optional field. DSL.optionalFields("trinkets:trinkets", // Define it as (optional) compound list / map (Map). Keys are slot groups. @@ -54,7 +54,7 @@ private static TypeTemplate attachTrinketFixer(TypeTemplate original) { )) )) ) - ) + )), original ); } } diff --git a/src/main/java/dev/emi/trinkets/poly/Elements.java b/src/main/java/dev/emi/trinkets/poly/Elements.java index 09818956..219c26fc 100644 --- a/src/main/java/dev/emi/trinkets/poly/Elements.java +++ b/src/main/java/dev/emi/trinkets/poly/Elements.java @@ -8,9 +8,9 @@ import net.minecraft.util.Identifier; public class Elements { - public static final GuiElementBuilder FILLER = new GuiElementBuilder(Items.WHITE_STAINED_GLASS_PANE).setName(Text.empty()) + public static final GuiElementBuilder FILLER = new GuiElementBuilder(Items.WHITE_STAINED_GLASS_PANE).hideTooltip() .setCustomModelData(GuiModels.getOrCreate(new Identifier(TrinketsMain.MOD_ID, "gui/polybuttons/filler"), Items.WHITE_STAINED_GLASS_PANE).value()); - public static final GuiElementBuilder FILLER_NAVBAR = new GuiElementBuilder(Items.BLACK_STAINED_GLASS_PANE).setName(Text.empty()); + public static final GuiElementBuilder FILLER_NAVBAR = new GuiElementBuilder(Items.BLACK_STAINED_GLASS_PANE).hideTooltip(); public static final PolymerModelData PREVIOUS = GuiModels.getOrCreate(new Identifier(TrinketsMain.MOD_ID, "gui/polybuttons/previous"), Items.GREEN_STAINED_GLASS_PANE); diff --git a/src/main/java/dev/emi/trinkets/poly/TrinketsFlatUI.java b/src/main/java/dev/emi/trinkets/poly/TrinketsFlatUI.java index 2dab3d74..80915658 100644 --- a/src/main/java/dev/emi/trinkets/poly/TrinketsFlatUI.java +++ b/src/main/java/dev/emi/trinkets/poly/TrinketsFlatUI.java @@ -19,10 +19,7 @@ import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; public class TrinketsFlatUI extends SimpleGui { @@ -54,7 +51,7 @@ public TrinketsFlatUI(ServerPlayerEntity player, boolean compact) { this.inventories = this.component.getInventory().entrySet().stream() .sorted(Comparator.comparingInt(e -> this.component.getGroups().get(e.getKey()).getOrder())) - .map((x) -> x.getValue()) + .map(Map.Entry::getValue) .flatMap((x) -> x.values().stream().sorted(Comparator.comparingInt(a -> a.getSlotType().getOrder()))) .collect(Collectors.toList()); @@ -124,7 +121,7 @@ private void drawLine(int index, TrinketInventory trinketInventory, int subPage) var invSize = this.compact ? 2 : 6; int slot = 0; - this.setSlot(base + slot++, GuiElementBuilder.from(type.getIconItem()).setName(type.getTranslation().formatted(Formatting.WHITE)).hideFlags()); + this.setSlot(base + slot++, GuiElementBuilder.from(type.getIconItem()).setName(type.getTranslation().formatted(Formatting.WHITE)).hideDefaultTooltip()); if (!this.compact) { this.setSlot(base + slot++, Elements.FILLER); @@ -201,6 +198,7 @@ private void drawNavbar() { this.setSlot(5 * 9 + 2, new GuiElementBuilder(Elements.PREVIOUS.item()) .setName(Text.translatable("createWorld.customize.custom.prev")) .setCustomModelData(Elements.PREVIOUS.value()) + .hideDefaultTooltip() .setCallback((x, y, z) -> { this.page -= 1; @@ -221,6 +219,7 @@ private void drawNavbar() { this.setSlot(5 * 9 + 6, new GuiElementBuilder(Elements.NEXT.item()) .setName(Text.translatable("createWorld.customize.custom.next")) + .hideDefaultTooltip() .setCustomModelData(Elements.NEXT.value()) .setCallback((x, y, z) -> { this.page += 1; @@ -248,7 +247,7 @@ private void drawNavbar() { } - public static final void playClickSound(ServerPlayerEntity player) { - player.playSound(SoundEvents.UI_BUTTON_CLICK.value(), SoundCategory.MASTER, 0.7f, 1); + public static void playClickSound(ServerPlayerEntity player) { + player.playSoundToPlayer(SoundEvents.UI_BUTTON_CLICK.value(), SoundCategory.MASTER, 0.7f, 1); } } diff --git a/src/main/java/dev/emi/trinkets/poly/TrinketsPoly.java b/src/main/java/dev/emi/trinkets/poly/TrinketsPoly.java index c372319d..8728044d 100644 --- a/src/main/java/dev/emi/trinkets/poly/TrinketsPoly.java +++ b/src/main/java/dev/emi/trinkets/poly/TrinketsPoly.java @@ -3,7 +3,9 @@ import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import dev.emi.trinkets.TrinketsMain; +import dev.emi.trinkets.api.TrinketsAttributeModifiersComponent; import eu.pb4.playerdata.api.PlayerDataApi; +import eu.pb4.polymer.core.api.item.PolymerItemUtils; import net.minecraft.nbt.NbtByte; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; @@ -16,6 +18,7 @@ public class TrinketsPoly { public static void init() { Elements.FILLER.hashCode(); + PolymerItemUtils.markAsPolymer(TrinketsAttributeModifiersComponent.TYPE); } public static int toggleCompactCommand(CommandContext ctx) throws CommandSyntaxException { diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 071dd4cc..23ff6d56 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -17,11 +17,14 @@ "contact": { "github": "https://github.com/TheIllusiveC4" } + }, + { + "name": "Patbox (Polymer Port)" } ], "contact": { - "homepage": "https://www.curseforge.com/minecraft/mc-mods/trinkets-fabric", - "sources": "https://github.com/emilyploszaj/trinkets" + "homepage": "https://modrinth.com/mod/trinkets-polymer", + "sources": "https://github.com/PolymerPorts/trinkets" }, "license": "MIT", @@ -34,12 +37,6 @@ ], "cardinal-components-entity": [ "dev.emi.trinkets.TrinketsMain" - ], - "rei_client": [ - "dev.emi.trinkets.compat.TrinketsREIPlugin" - ], - "emi": [ - "dev.emi.trinkets.compat.TrinketsEmiPlugin" ] }, "accessWidener": "trinkets.accesswidener", @@ -54,6 +51,8 @@ "depends": { "minecraft": ">1.18", + "polymer-core": ">=0.8.0", + "polymer-resource-pack": ">=0.8.0", "fabricloader": ">=0.7.0", "cardinal-components-base": ">=3.0.0-0", "cardinal-components-entity": ">=3.0.0-0", diff --git a/src/main/resources/trinkets.mixins.json b/src/main/resources/trinkets.mixins.json index 480d49ec..a02ff312 100644 --- a/src/main/resources/trinkets.mixins.json +++ b/src/main/resources/trinkets.mixins.json @@ -7,7 +7,6 @@ "ExperienceOrbEntityMixin", "ItemStackMixin", "LivingEntityMixin", - "PlayerInventoryMixin", "ServerPlayNetworkHandlerMixin" ], "injectors": { diff --git a/src/testmod/java/dev/emi/trinkets/TestTrinket.java b/src/testmod/java/dev/emi/trinkets/TestTrinket.java index 8a429c8d..bf3c567b 100644 --- a/src/testmod/java/dev/emi/trinkets/TestTrinket.java +++ b/src/testmod/java/dev/emi/trinkets/TestTrinket.java @@ -5,7 +5,6 @@ import dev.emi.trinkets.api.SlotReference; import dev.emi.trinkets.api.TrinketItem; import eu.pb4.polymer.core.api.item.PolymerItem; -import net.minecraft.client.item.TooltipContext; import net.minecraft.client.render.entity.model.BipedEntityModel; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.attribute.EntityAttribute;