From d4c1fdd13a36fd42fe2c64f80b2954368d2f8a5d Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sat, 11 Jun 2022 20:37:05 -0400 Subject: [PATCH 1/7] remove ClientPlayerInteractionManagerMixin Using RefinedCreativeInventory instead of Vanilla's inventory, so it doesn't need to be disabled --- .../ClientPlayerInteractionManagerMixin.java | 17 ----------------- src/main/resources/biginv.mixins.json | 1 - 2 files changed, 18 deletions(-) delete mode 100644 src/main/java/com/sollyw/biginv/mixin/client/ClientPlayerInteractionManagerMixin.java diff --git a/src/main/java/com/sollyw/biginv/mixin/client/ClientPlayerInteractionManagerMixin.java b/src/main/java/com/sollyw/biginv/mixin/client/ClientPlayerInteractionManagerMixin.java deleted file mode 100644 index d62d627..0000000 --- a/src/main/java/com/sollyw/biginv/mixin/client/ClientPlayerInteractionManagerMixin.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.sollyw.biginv.mixin.client; - -import net.minecraft.client.network.ClientPlayerInteractionManager; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; - -@Mixin(ClientPlayerInteractionManager.class) -public abstract class ClientPlayerInteractionManagerMixin { - /** - * @author SollyW - * @reason Creative inventory is unsupported for now - */ - @Overwrite - public boolean hasCreativeInventory() { - return false; - } -} diff --git a/src/main/resources/biginv.mixins.json b/src/main/resources/biginv.mixins.json index b2b6083..d4d017a 100644 --- a/src/main/resources/biginv.mixins.json +++ b/src/main/resources/biginv.mixins.json @@ -19,7 +19,6 @@ ], "client": [ "client.AbstractFurnaceScreenMixin", - "client.ClientPlayerInteractionManagerMixin", "client.CraftingScreenMixin", "client.GameOptionsMixin", "client.HandledScreenMixin", From 479cb8b3c1c7d70200c84f34be9cc9f0c335d19a Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Sun, 1 Jan 2023 14:01:40 -0500 Subject: [PATCH 2/7] update mappings to 1.19.3 re-added ClientPlayerInteractionManagerMixin, as RefinedCreativeInventory has not yet updated to 1.19.3. Compiles, but crashes on world load with a NoSuchMethodError on PlayerScreenHandler$1Mixin --- build.gradle | 2 +- gradle.properties | 8 ++++---- .../com/sollyw/biginv/BigInvScreenHelper.java | 2 +- .../mixin/CraftingScreenHandlerMixin.java | 4 ++-- .../biginv/mixin/ForgingScreenHandlerMixin.java | 2 +- .../GenericContainerScreenHandlerMixin.java | 4 ++-- .../mixin/MerchantScreenHandlerMixin.java | 4 ++-- .../biginv/mixin/PlayerScreenHandlerMixin.java | 12 ++++++------ .../sollyw/biginv/mixin/ScreenHandlerMixin.java | 4 ++-- .../ClientPlayerInteractionManagerMixin.java | 17 +++++++++++++++++ src/main/resources/biginv.mixins.json | 1 + src/main/resources/fabric.mod.json | 2 +- 12 files changed, 40 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/sollyw/biginv/mixin/client/ClientPlayerInteractionManagerMixin.java diff --git a/build.gradle b/build.gradle index cd6cf6d..c97dc62 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ //file:noinspection All plugins { - id 'fabric-loom' version '0.12-SNAPSHOT' + id 'fabric-loom' version '1.0-SNAPSHOT' id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties index 2918a57..7b449cd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ org.gradle.jvmargs = -Xmx1G biginv_version = 0.1.3 -minecraft_version=1.18.2 -mappings_version=1.18.2+build.3 -loader_version=0.14.4 +minecraft_version=1.19.3 +mappings_version=1.19.3+build.5 +loader_version=0.14.12 -fapi_version=0.51.1+1.18.2 +fapi_version=0.70.0+1.19.3 diff --git a/src/main/java/com/sollyw/biginv/BigInvScreenHelper.java b/src/main/java/com/sollyw/biginv/BigInvScreenHelper.java index a3e1182..c90743f 100644 --- a/src/main/java/com/sollyw/biginv/BigInvScreenHelper.java +++ b/src/main/java/com/sollyw/biginv/BigInvScreenHelper.java @@ -15,7 +15,7 @@ public class BigInvScreenHelper { public static void patchScreen(MatrixStack matrices, int x, int y, int backgroundWidth, int backgroundHeight, int mouseX, int mouseY, LivingEntity entity, RightmostBehaviour rightmostBehaviour) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(GameRenderer::getPositionTexProgram); RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); RenderSystem.setShaderTexture(0, MOD_BACKGROUND); diff --git a/src/main/java/com/sollyw/biginv/mixin/CraftingScreenHandlerMixin.java b/src/main/java/com/sollyw/biginv/mixin/CraftingScreenHandlerMixin.java index 4cfbc36..9e99cc7 100644 --- a/src/main/java/com/sollyw/biginv/mixin/CraftingScreenHandlerMixin.java +++ b/src/main/java/com/sollyw/biginv/mixin/CraftingScreenHandlerMixin.java @@ -7,13 +7,13 @@ @Mixin(CraftingScreenHandler.class) public abstract class CraftingScreenHandlerMixin { - @ModifyConstant(method = "transferSlot", + @ModifyConstant(method = "quickMove", constant = @Constant(intValue = 46)) private int invEnd(int constant) { return 118; } - @ModifyConstant(method = "transferSlot", + @ModifyConstant(method = "quickMove", constant = @Constant(intValue = 37)) private int hotbarStart(int constant) { return 100; diff --git a/src/main/java/com/sollyw/biginv/mixin/ForgingScreenHandlerMixin.java b/src/main/java/com/sollyw/biginv/mixin/ForgingScreenHandlerMixin.java index f8f0d7d..0b25550 100644 --- a/src/main/java/com/sollyw/biginv/mixin/ForgingScreenHandlerMixin.java +++ b/src/main/java/com/sollyw/biginv/mixin/ForgingScreenHandlerMixin.java @@ -7,7 +7,7 @@ @Mixin(ForgingScreenHandler.class) public abstract class ForgingScreenHandlerMixin { - @ModifyConstant(method = "transferSlot", + @ModifyConstant(method = "quickMove", constant = @Constant(intValue = 39)) private int value(int constant) { return 111; diff --git a/src/main/java/com/sollyw/biginv/mixin/GenericContainerScreenHandlerMixin.java b/src/main/java/com/sollyw/biginv/mixin/GenericContainerScreenHandlerMixin.java index bc65c27..19528e3 100644 --- a/src/main/java/com/sollyw/biginv/mixin/GenericContainerScreenHandlerMixin.java +++ b/src/main/java/com/sollyw/biginv/mixin/GenericContainerScreenHandlerMixin.java @@ -3,8 +3,8 @@ import com.sollyw.biginv.BigInvModInfo; import com.sollyw.biginv.ScreenHandlerOverrides; import com.sollyw.biginv.ScreenHandlerExt; +import net.minecraft.registry.Registries; import net.minecraft.screen.GenericContainerScreenHandler; -import net.minecraft.util.registry.Registry; import org.spongepowered.asm.mixin.Mixin; @Mixin(GenericContainerScreenHandler.class) @@ -13,7 +13,7 @@ public abstract class GenericContainerScreenHandlerMixin implements ScreenHandle public BigInvModInfo biginv$getModInfo() { if (this.biginv$getType() != null) { return ScreenHandlerOverrides.SCREEN_HANDLER_OVERRIDES.getOrDefault( - Registry.SCREEN_HANDLER.getId(this.biginv$getType()), + Registries.SCREEN_HANDLER.getId(this.biginv$getType()), BigInvModInfo.GENERIC_CONTAINER); } return BigInvModInfo.GENERIC_CONTAINER; diff --git a/src/main/java/com/sollyw/biginv/mixin/MerchantScreenHandlerMixin.java b/src/main/java/com/sollyw/biginv/mixin/MerchantScreenHandlerMixin.java index 48d2ae7..c35b230 100644 --- a/src/main/java/com/sollyw/biginv/mixin/MerchantScreenHandlerMixin.java +++ b/src/main/java/com/sollyw/biginv/mixin/MerchantScreenHandlerMixin.java @@ -3,9 +3,9 @@ import com.sollyw.biginv.BigInvModInfo; import com.sollyw.biginv.ScreenHandlerOverrides; import com.sollyw.biginv.ScreenHandlerExt; +import net.minecraft.registry.Registries; import net.minecraft.screen.MerchantScreenHandler; import net.minecraft.screen.slot.Slot; -import net.minecraft.util.registry.Registry; import net.minecraft.village.MerchantInventory; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -30,7 +30,7 @@ private Slot addSlot(Slot par1) { public BigInvModInfo biginv$getModInfo() { if (this.biginv$getType() != null) { return ScreenHandlerOverrides.SCREEN_HANDLER_OVERRIDES.getOrDefault( - Registry.SCREEN_HANDLER.getId(this.biginv$getType()), + Registries.SCREEN_HANDLER.getId(this.biginv$getType()), BigInvModInfo.MERCHANT); } return BigInvModInfo.MERCHANT; diff --git a/src/main/java/com/sollyw/biginv/mixin/PlayerScreenHandlerMixin.java b/src/main/java/com/sollyw/biginv/mixin/PlayerScreenHandlerMixin.java index 0e790a0..f4325ec 100644 --- a/src/main/java/com/sollyw/biginv/mixin/PlayerScreenHandlerMixin.java +++ b/src/main/java/com/sollyw/biginv/mixin/PlayerScreenHandlerMixin.java @@ -25,7 +25,7 @@ public static boolean isInHotbar(int slot) { return slot >= 108 && slot <= 126; } - @ModifyConstant(method = "transferSlot", + @ModifyConstant(method = "quickMove", constant = { @Constant(intValue = 9, ordinal = 1), @@ -41,7 +41,7 @@ private int mainInvStart(int value) { return 5; } - @ModifyConstant(method = "transferSlot", + @ModifyConstant(method = "quickMove", constant = { @Constant(intValue = 36, ordinal = 0), @@ -55,7 +55,7 @@ private int mainInvEndHotbarStart(int value) { return 95; } - @ModifyConstant(method = "transferSlot", + @ModifyConstant(method = "quickMove", constant = { @Constant(intValue = 45, ordinal = 1), @@ -73,7 +73,7 @@ private int hotbarEndArmourStart(int value) { return 113; } - @ModifyConstant(method = "transferSlot", + @ModifyConstant(method = "quickMove", constant = { @Constant(intValue = 8, ordinal = 0), @@ -83,7 +83,7 @@ private int armourLast(int value) { return 116; } - @ModifyConstant(method = "transferSlot", + @ModifyConstant(method = "quickMove", constant = { @Constant(intValue = 9, ordinal = 2), @@ -95,7 +95,7 @@ private int armourEndOffhandStart(int value) { return 117; } - @ModifyConstant(method = "transferSlot", + @ModifyConstant(method = "quickMove", constant = @Constant(intValue = 46, ordinal = 0)) private int offhandEnd(int value) { diff --git a/src/main/java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java b/src/main/java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java index 833758b..90b19d3 100644 --- a/src/main/java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java +++ b/src/main/java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java @@ -2,10 +2,10 @@ import com.sollyw.biginv.*; import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.registry.Registries; import net.minecraft.screen.ScreenHandler; import net.minecraft.screen.ScreenHandlerType; import net.minecraft.screen.slot.Slot; -import net.minecraft.util.registry.Registry; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -81,7 +81,7 @@ private void addSlot(Slot slot, CallbackInfoReturnable cir) { public BigInvModInfo biginv$getModInfo() { if (this.type != null) { return ScreenHandlerOverrides.SCREEN_HANDLER_OVERRIDES.getOrDefault( - Registry.SCREEN_HANDLER.getId(this.type), + Registries.SCREEN_HANDLER.getId(this.type), BigInvModInfo.DEFAULT); } diff --git a/src/main/java/com/sollyw/biginv/mixin/client/ClientPlayerInteractionManagerMixin.java b/src/main/java/com/sollyw/biginv/mixin/client/ClientPlayerInteractionManagerMixin.java new file mode 100644 index 0000000..8974842 --- /dev/null +++ b/src/main/java/com/sollyw/biginv/mixin/client/ClientPlayerInteractionManagerMixin.java @@ -0,0 +1,17 @@ +package com.sollyw.biginv.mixin.client; + +import net.minecraft.client.network.ClientPlayerInteractionManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(ClientPlayerInteractionManager.class) +public abstract class ClientPlayerInteractionManagerMixin { + /** + * @author SollyW + * @reason Creative inventory is unsupported for now + */ + @Overwrite + public boolean hasCreativeInventory() { + return false; + } +} \ No newline at end of file diff --git a/src/main/resources/biginv.mixins.json b/src/main/resources/biginv.mixins.json index d4d017a..b2b6083 100644 --- a/src/main/resources/biginv.mixins.json +++ b/src/main/resources/biginv.mixins.json @@ -19,6 +19,7 @@ ], "client": [ "client.AbstractFurnaceScreenMixin", + "client.ClientPlayerInteractionManagerMixin", "client.CraftingScreenMixin", "client.GameOptionsMixin", "client.HandledScreenMixin", diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 25b5b07..b7d8c98 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -20,7 +20,7 @@ "depends": { "fabricloader": ">=0.11.3", "fabric": "*", - "minecraft": "1.18.x", + "minecraft": ">=1.19.3", "java": ">=17" }, From df145d8ef4d0ddc05287dc12547743fbd92d3a20 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 11 Apr 2023 21:24:19 -0400 Subject: [PATCH 3/7] attempt 1.19.4 update Issues: 1.19.x changed armor and offhand slot code, so PlayerScreenHandler$1Mixin and PlayerScreenHandler$2Mixin crash with a NoSuchMethodError. SlotAccessor crashes on world load, so I've temporarily commented out all slot positioning code and filled it with temporary placeholders the mixin targets for drawEntity in InventoryScreen and all of InGameHudMixin and ForgingScreenMixin have changed --- gradle.properties | 8 +++--- .../biginv/BigInvScreenHandlerHelper.java | 26 ++++++++++++++----- .../com/sollyw/biginv/BigInvScreenHelper.java | 6 ++--- .../biginv/mixin/ScreenHandlerMixin.java | 7 ++--- .../biginv/mixin/client/InGameHudMixin.java | 3 ++- .../mixin/client/InventoryScreenMixin.java | 4 +-- src/main/resources/biginv.mixins.json | 1 - 7 files changed, 34 insertions(+), 21 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7b449cd..397d630 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ org.gradle.jvmargs = -Xmx1G biginv_version = 0.1.3 -minecraft_version=1.19.3 -mappings_version=1.19.3+build.5 -loader_version=0.14.12 +minecraft_version=1.19.4 +mappings_version=1.19.4+build.2 +loader_version=0.14.19 -fapi_version=0.70.0+1.19.3 +fapi_version=0.78.0+1.19.4 diff --git a/src/main/java/com/sollyw/biginv/BigInvScreenHandlerHelper.java b/src/main/java/com/sollyw/biginv/BigInvScreenHandlerHelper.java index f7ad8da..e988fce 100644 --- a/src/main/java/com/sollyw/biginv/BigInvScreenHandlerHelper.java +++ b/src/main/java/com/sollyw/biginv/BigInvScreenHandlerHelper.java @@ -19,29 +19,40 @@ public static Slot[] createSlots(ScreenHandler handler, PlayerInventory playerIn handlerX.biginv$setModStage(BigInvModStage.MODDING); + int y = 0; for(int i = 0; i < 90; ++i) { int index = i + 18; + if (i % 18 == 0) { + y = y + 18; + } slots[index] = handlerX.biginv$addSlot(new Slot( playerInventory, index, - -9999, - -9999)); + i * 18, // these are placeholder numbers until I can figure out what is wrong with positionSlots() + y)); } for(int i = 0; i < 18; ++i) { slots[i] = handlerX.biginv$addSlot(new Slot( playerInventory, i, - -9999, - -9999)); + i * 18, + 0)); } - +/* slots[112] = handlerX.biginv$addSlot(SlotConstructors.OFFHAND.init( playerInventory, 112, -9999, -9999)); + slots[111] = handlerX.biginv$addSlot(SlotConstructors.ARMOUR.init( + playerInventory, + 111, + -9999, + -9999, + EquipmentSlot.HEAD));*/ +/* for(int i = 0; i < 4; ++i) { int index = 111 - i; slots[index] = handlerX.biginv$addSlot(SlotConstructors.ARMOUR.init( @@ -51,13 +62,14 @@ public static Slot[] createSlots(ScreenHandler handler, PlayerInventory playerIn -9999, EQUIPMENT_SLOT_ORDER[i] )); - } + }*/ handlerX.biginv$setModStage(BigInvModStage.FINISHED); return slots; } public static void positionSlots(Slot[] slots, int offsetX, int offsetY, int armourOffsetX, int armourOffsetY) { + /* for(int row = 0; row < 5; ++row) { for(int col = 0; col < 18; ++col) { move(slots, @@ -84,7 +96,7 @@ public static void positionSlots(Slot[] slots, int offsetX, int offsetY, int arm 111 - row, armourOffsetX - 154, armourOffsetY + 8 + row * 18); - } + }*/ } private static void move(Slot[] slots, int index, int x, int y) { diff --git a/src/main/java/com/sollyw/biginv/BigInvScreenHelper.java b/src/main/java/com/sollyw/biginv/BigInvScreenHelper.java index c90743f..685fb14 100644 --- a/src/main/java/com/sollyw/biginv/BigInvScreenHelper.java +++ b/src/main/java/com/sollyw/biginv/BigInvScreenHelper.java @@ -124,12 +124,12 @@ public static void patchScreen(MatrixStack matrices, int x, int y, int backgroun if (entity != null) { int x0 = x - 49; int y0 = y + backgroundHeight - 91; - InventoryScreen.drawEntity( + InventoryScreen.drawEntity(matrices, x0, y0, 30, - x0 - mouseX, - y0 - 50 - mouseY, + (float)(x0 - mouseX), + (float)(y0 - 50 - mouseY), entity); } } diff --git a/src/main/java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java b/src/main/java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java index 90b19d3..ce02f75 100644 --- a/src/main/java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java +++ b/src/main/java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java @@ -51,11 +51,11 @@ private void addSlot(Slot slot, CallbackInfoReturnable cir) { playerInventory); // Slot index zero, the leftmost hotbar slot, is used to align the new slots - BigInvScreenHandlerHelper.positionSlots(this.bigInvSlots, + /*BigInvScreenHandlerHelper.positionSlots(this.bigInvSlots, info.slotOffsetX().applyTo(slot.x - 8), info.slotOffsetY().applyTo(slot.y - 142), info.armourSlotOffsetX().applyTo(slot.x - 8), - info.armourSlotOffsetY().applyTo(slot.y - 142)); + info.armourSlotOffsetY().applyTo(slot.y - 142));*/ } if (info.shouldEmulateVanillaSlots()) { @@ -95,9 +95,10 @@ private void addSlot(Slot slot, CallbackInfoReturnable cir) { @Override public void biginv$positionSlots(int offsetX, int offsetY, int armourOffsetX, int armourOffsetY) { + /* if (this.bigInvSlots != null) { BigInvScreenHandlerHelper.positionSlots(this.bigInvSlots, offsetX, offsetY, armourOffsetX, armourOffsetY); - } + }*/ } @Override diff --git a/src/main/java/com/sollyw/biginv/mixin/client/InGameHudMixin.java b/src/main/java/com/sollyw/biginv/mixin/client/InGameHudMixin.java index c5b714c..aa7ad03 100644 --- a/src/main/java/com/sollyw/biginv/mixin/client/InGameHudMixin.java +++ b/src/main/java/com/sollyw/biginv/mixin/client/InGameHudMixin.java @@ -17,6 +17,7 @@ @Mixin(InGameHud.class) public abstract class InGameHudMixin { + /* @Shadow protected abstract void renderHotbarItem(int x, int y, float tickDelta, PlayerEntity player, ItemStack stack, int seed); @@ -103,5 +104,5 @@ private void drawTexture(InGameHud instance, MatrixStack matrices, int x, int y, ordinal = 1), index = 1) private int moveSelectionOutline(MatrixStack matrices, int x, int y, int u, int v, int width, int height) { return x - 90; - } + }*/ } diff --git a/src/main/java/com/sollyw/biginv/mixin/client/InventoryScreenMixin.java b/src/main/java/com/sollyw/biginv/mixin/client/InventoryScreenMixin.java index 2e25cb4..595039e 100644 --- a/src/main/java/com/sollyw/biginv/mixin/client/InventoryScreenMixin.java +++ b/src/main/java/com/sollyw/biginv/mixin/client/InventoryScreenMixin.java @@ -32,9 +32,9 @@ private void init(CallbackInfo ci) { private void drawBackground(InventoryScreen instance, MatrixStack matrices, float delta, int mouseX, int mouseY) { // nom } - +/* @Redirect(method = "drawBackground", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/InventoryScreen;drawEntity(IIIFFLnet/minecraft/entity/LivingEntity;)V")) private void drawEntity(int x, int y, int size, float mouseX, float mouseY, LivingEntity entity) { // nom - } + }*/ } diff --git a/src/main/resources/biginv.mixins.json b/src/main/resources/biginv.mixins.json index b2b6083..810b0c9 100644 --- a/src/main/resources/biginv.mixins.json +++ b/src/main/resources/biginv.mixins.json @@ -5,7 +5,6 @@ "compatibilityLevel": "JAVA_17", "mixins": [ "CraftingScreenHandlerMixin", - "ForgingScreenHandlerMixin", "GenericContainerScreenHandlerMixin", "MerchantScreenHandlerMixin", "PlayerInventoryMixin", From 9e73146525cd62fcffd4a5b56308fc386c53cdce Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 11 Apr 2023 21:43:39 -0400 Subject: [PATCH 4/7] fix broken positioning function I removed armor and the offhand slot to debug and I forgot to resize the slot array lol --- .../java/com/sollyw/biginv/BigInvScreenHandlerHelper.java | 6 +++--- .../java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/sollyw/biginv/BigInvScreenHandlerHelper.java b/src/main/java/com/sollyw/biginv/BigInvScreenHandlerHelper.java index e988fce..ec2bb4c 100644 --- a/src/main/java/com/sollyw/biginv/BigInvScreenHandlerHelper.java +++ b/src/main/java/com/sollyw/biginv/BigInvScreenHandlerHelper.java @@ -15,7 +15,7 @@ public class BigInvScreenHandlerHelper { public static Slot[] createSlots(ScreenHandler handler, PlayerInventory playerInventory) { ScreenHandlerExt handlerX = (ScreenHandlerExt) handler; - Slot[] slots = new Slot[113]; + Slot[] slots = new Slot[108]; // used to be 113, but I am temporarily taking out the offhand and armour slots handlerX.biginv$setModStage(BigInvModStage.MODDING); @@ -69,7 +69,7 @@ public static Slot[] createSlots(ScreenHandler handler, PlayerInventory playerIn } public static void positionSlots(Slot[] slots, int offsetX, int offsetY, int armourOffsetX, int armourOffsetY) { - /* + for(int row = 0; row < 5; ++row) { for(int col = 0; col < 18; ++col) { move(slots, @@ -85,7 +85,7 @@ public static void positionSlots(Slot[] slots, int offsetX, int offsetY, int arm col * 18 - 154 + offsetX, offsetY + 178); } - + /* move(slots, 112, armourOffsetX - 85, diff --git a/src/main/java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java b/src/main/java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java index ce02f75..6e394d1 100644 --- a/src/main/java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java +++ b/src/main/java/com/sollyw/biginv/mixin/ScreenHandlerMixin.java @@ -51,11 +51,11 @@ private void addSlot(Slot slot, CallbackInfoReturnable cir) { playerInventory); // Slot index zero, the leftmost hotbar slot, is used to align the new slots - /*BigInvScreenHandlerHelper.positionSlots(this.bigInvSlots, + BigInvScreenHandlerHelper.positionSlots(this.bigInvSlots, info.slotOffsetX().applyTo(slot.x - 8), info.slotOffsetY().applyTo(slot.y - 142), info.armourSlotOffsetX().applyTo(slot.x - 8), - info.armourSlotOffsetY().applyTo(slot.y - 142));*/ + info.armourSlotOffsetY().applyTo(slot.y - 142)); } if (info.shouldEmulateVanillaSlots()) { @@ -95,10 +95,10 @@ private void addSlot(Slot slot, CallbackInfoReturnable cir) { @Override public void biginv$positionSlots(int offsetX, int offsetY, int armourOffsetX, int armourOffsetY) { - /* + if (this.bigInvSlots != null) { BigInvScreenHandlerHelper.positionSlots(this.bigInvSlots, offsetX, offsetY, armourOffsetX, armourOffsetY); - }*/ + } } @Override From 7f4b5cc7a211363558c47e2971bffec3f05801f4 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Tue, 11 Apr 2023 23:01:47 -0400 Subject: [PATCH 5/7] fix equipmentslot and offhand crashes --- build.gradle | 4 + .../biginv/BigInvScreenHandlerHelper.java | 84 +++++++++++-------- src/main/resources/biginv.accesswidener | 3 + src/main/resources/fabric.mod.json | 1 + 4 files changed, 59 insertions(+), 33 deletions(-) create mode 100644 src/main/resources/biginv.accesswidener diff --git a/build.gradle b/build.gradle index c97dc62..735d3db 100644 --- a/build.gradle +++ b/build.gradle @@ -37,6 +37,10 @@ java { withSourcesJar() } +loom { + accessWidenerPath = file("src/main/resources/biginv.accesswidener") +} + publishing { publications { mavenJava(MavenPublication) { diff --git a/src/main/java/com/sollyw/biginv/BigInvScreenHandlerHelper.java b/src/main/java/com/sollyw/biginv/BigInvScreenHandlerHelper.java index ec2bb4c..6fb384d 100644 --- a/src/main/java/com/sollyw/biginv/BigInvScreenHandlerHelper.java +++ b/src/main/java/com/sollyw/biginv/BigInvScreenHandlerHelper.java @@ -1,10 +1,17 @@ package com.sollyw.biginv; +import com.mojang.datafixers.util.Pair; import com.sollyw.biginv.mixin.SlotAccessor; +import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.mob.MobEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.PlayerScreenHandler; import net.minecraft.screen.ScreenHandler; import net.minecraft.screen.slot.Slot; +import net.minecraft.util.Identifier; public class BigInvScreenHandlerHelper { public static final EquipmentSlot[] EQUIPMENT_SLOT_ORDER = { @@ -15,54 +22,65 @@ public class BigInvScreenHandlerHelper { public static Slot[] createSlots(ScreenHandler handler, PlayerInventory playerInventory) { ScreenHandlerExt handlerX = (ScreenHandlerExt) handler; - Slot[] slots = new Slot[108]; // used to be 113, but I am temporarily taking out the offhand and armour slots + Slot[] slots = new Slot[113]; handlerX.biginv$setModStage(BigInvModStage.MODDING); - int y = 0; for(int i = 0; i < 90; ++i) { int index = i + 18; - if (i % 18 == 0) { - y = y + 18; - } slots[index] = handlerX.biginv$addSlot(new Slot( playerInventory, index, - i * 18, // these are placeholder numbers until I can figure out what is wrong with positionSlots() - y)); + -9999, + -9999)); } for(int i = 0; i < 18; ++i) { slots[i] = handlerX.biginv$addSlot(new Slot( playerInventory, i, - i * 18, - 0)); + -9999, + -9999)); } -/* - slots[112] = handlerX.biginv$addSlot(SlotConstructors.OFFHAND.init( - playerInventory, - 112, - -9999, - -9999)); - - slots[111] = handlerX.biginv$addSlot(SlotConstructors.ARMOUR.init( - playerInventory, - 111, - -9999, - -9999, - EquipmentSlot.HEAD));*/ -/* + + + slots[112] = handlerX.biginv$addSlot(new Slot(playerInventory, 112, -9999, -9999) { + public void setStack(ItemStack stack) { + PlayerScreenHandler.onEquipStack(playerInventory.player, EquipmentSlot.OFFHAND, stack, this.getStack()); // I need to use PlayerEntity owner, not null + super.setStack(stack); + } + public Pair getBackgroundSprite() { + return Pair.of(PlayerScreenHandler.BLOCK_ATLAS_TEXTURE, PlayerScreenHandler.EMPTY_OFFHAND_ARMOR_SLOT); + } + }); + for(int i = 0; i < 4; ++i) { int index = 111 - i; - slots[index] = handlerX.biginv$addSlot(SlotConstructors.ARMOUR.init( - playerInventory, - index, - -9999, - -9999, - EQUIPMENT_SLOT_ORDER[i] - )); - }*/ + final EquipmentSlot equipmentSlot = EQUIPMENT_SLOT_ORDER[i]; + slots[index] = handlerX.biginv$addSlot(new Slot(playerInventory, index, -9999, -9999) { + public void setStack(ItemStack stack) { + PlayerScreenHandler.onEquipStack(playerInventory.player, equipmentSlot, stack, this.getStack()); + super.setStack(stack); + } + + public int getMaxItemCount() { + return 1; + } + + public boolean canInsert(ItemStack stack) { + return equipmentSlot == MobEntity.getPreferredEquipmentSlot(stack); + } + + public boolean canTakeItems(PlayerEntity playerEntity) { + ItemStack itemStack = this.getStack(); + return (itemStack.isEmpty() || playerEntity.isCreative() || !EnchantmentHelper.hasBindingCurse(itemStack)) && super.canTakeItems(playerEntity); + } + + public Pair getBackgroundSprite() { + return Pair.of(PlayerScreenHandler.BLOCK_ATLAS_TEXTURE, PlayerScreenHandler.EMPTY_ARMOR_SLOT_TEXTURES[equipmentSlot.getEntitySlotId()]); + } + }); + } handlerX.biginv$setModStage(BigInvModStage.FINISHED); return slots; @@ -85,7 +103,7 @@ public static void positionSlots(Slot[] slots, int offsetX, int offsetY, int arm col * 18 - 154 + offsetX, offsetY + 178); } - /* + move(slots, 112, armourOffsetX - 85, @@ -96,7 +114,7 @@ public static void positionSlots(Slot[] slots, int offsetX, int offsetY, int arm 111 - row, armourOffsetX - 154, armourOffsetY + 8 + row * 18); - }*/ + } } private static void move(Slot[] slots, int index, int x, int y) { diff --git a/src/main/resources/biginv.accesswidener b/src/main/resources/biginv.accesswidener new file mode 100644 index 0000000..6dcf010 --- /dev/null +++ b/src/main/resources/biginv.accesswidener @@ -0,0 +1,3 @@ +accessWidener v1 named +accessible method net/minecraft/screen/PlayerScreenHandler onEquipStack (Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/entity/EquipmentSlot;Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)V +accessible field net/minecraft/screen/PlayerScreenHandler EMPTY_ARMOR_SLOT_TEXTURES [Lnet/minecraft/util/Identifier; \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index b7d8c98..a5c0e64 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -23,6 +23,7 @@ "minecraft": ">=1.19.3", "java": ">=17" }, + "accessWidener" : "biginv.accesswidener", "recommends": { "roughlyenoughitems": "*" From ed2e2920b00ee5f1b701963de0927b7893150fe4 Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Wed, 12 Apr 2023 22:21:40 -0400 Subject: [PATCH 6/7] finalize 1.19.4 port --- .../com/sollyw/biginv/SlotConstructors.java | 39 ------------------- .../mixin/PlayerScreenHandler$1Mixin.java | 21 ---------- .../mixin/PlayerScreenHandler$2Mixin.java | 20 ---------- .../biginv/mixin/client/InGameHudMixin.java | 32 ++++++++------- .../mixin/client/InventoryScreenMixin.java | 8 ++-- src/main/resources/biginv.mixins.json | 2 - src/main/resources/fabric.mod.json | 5 ++- 7 files changed, 24 insertions(+), 103 deletions(-) delete mode 100644 src/main/java/com/sollyw/biginv/SlotConstructors.java delete mode 100644 src/main/java/com/sollyw/biginv/mixin/PlayerScreenHandler$1Mixin.java delete mode 100644 src/main/java/com/sollyw/biginv/mixin/PlayerScreenHandler$2Mixin.java diff --git a/src/main/java/com/sollyw/biginv/SlotConstructors.java b/src/main/java/com/sollyw/biginv/SlotConstructors.java deleted file mode 100644 index fc76efa..0000000 --- a/src/main/java/com/sollyw/biginv/SlotConstructors.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.sollyw.biginv; - -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.inventory.Inventory; -import net.minecraft.screen.PlayerScreenHandler; -import net.minecraft.screen.slot.Slot; - -/** - * Functions to create instances of the anonymous classes in {@link net.minecraft.screen.PlayerScreenHandler} - * to allow other ScreenHandlers to use them rather than copypasting - */ -public class SlotConstructors { - public static ArmourSlot ARMOUR; - public static OffhandSlot OFFHAND; - - static { - try { - /* - Load the classes to ensure the static constructor has been called, - and the above constants are not null - */ - Class.forName(PlayerScreenHandler.class.getName() + "$1"); - Class.forName(PlayerScreenHandler.class.getName() + "$2"); - } catch (ClassNotFoundException e) { - BigInv.LOGGER.error("Poking PlayerScreenHandler anonymous class failed"); - e.printStackTrace(); - } - } - - @FunctionalInterface - public interface ArmourSlot { - Slot init(Inventory inventory, int index, int x, int y, EquipmentSlot equipmentSlot); - } - - @FunctionalInterface - public interface OffhandSlot { - Slot init(Inventory inventory, int index, int x, int y); - } -} diff --git a/src/main/java/com/sollyw/biginv/mixin/PlayerScreenHandler$1Mixin.java b/src/main/java/com/sollyw/biginv/mixin/PlayerScreenHandler$1Mixin.java deleted file mode 100644 index 6c0c913..0000000 --- a/src/main/java/com/sollyw/biginv/mixin/PlayerScreenHandler$1Mixin.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.sollyw.biginv.mixin; - -import com.sollyw.biginv.SlotConstructors; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.inventory.Inventory; -import net.minecraft.screen.PlayerScreenHandler; -import net.minecraft.screen.slot.Slot; -import org.spongepowered.asm.mixin.Mixin; - -@SuppressWarnings("unused") -@Mixin(targets = "net/minecraft/screen/PlayerScreenHandler$1") -public class PlayerScreenHandler$1Mixin { - private PlayerScreenHandler$1Mixin(PlayerScreenHandler playerScreenHandler, Inventory inventory, int i, int j, int k, EquipmentSlot equipmentSlot) { - throw new IllegalStateException(); - } - - static { - SlotConstructors.ARMOUR = ((inventory, index, x, y, equipmentSlot) -> - (Slot) (Object) new PlayerScreenHandler$1Mixin(null, inventory, index, x, y, equipmentSlot)); - } -} diff --git a/src/main/java/com/sollyw/biginv/mixin/PlayerScreenHandler$2Mixin.java b/src/main/java/com/sollyw/biginv/mixin/PlayerScreenHandler$2Mixin.java deleted file mode 100644 index 3ab0b71..0000000 --- a/src/main/java/com/sollyw/biginv/mixin/PlayerScreenHandler$2Mixin.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.sollyw.biginv.mixin; - -import com.sollyw.biginv.SlotConstructors; -import net.minecraft.inventory.Inventory; -import net.minecraft.screen.PlayerScreenHandler; -import net.minecraft.screen.slot.Slot; -import org.spongepowered.asm.mixin.Mixin; - -@SuppressWarnings("unused") -@Mixin(targets = "net/minecraft/screen/PlayerScreenHandler$2") -public class PlayerScreenHandler$2Mixin { - private PlayerScreenHandler$2Mixin(PlayerScreenHandler playerScreenHandler, Inventory inventory, int i, int j, int k) { - throw new IllegalStateException(); - } - - static { - SlotConstructors.OFFHAND = ((inventory, index, x, y) -> - (Slot) (Object) new PlayerScreenHandler$2Mixin(null, inventory, index, x, y)); - } -} diff --git a/src/main/java/com/sollyw/biginv/mixin/client/InGameHudMixin.java b/src/main/java/com/sollyw/biginv/mixin/client/InGameHudMixin.java index aa7ad03..9b9d59c 100644 --- a/src/main/java/com/sollyw/biginv/mixin/client/InGameHudMixin.java +++ b/src/main/java/com/sollyw/biginv/mixin/client/InGameHudMixin.java @@ -17,9 +17,9 @@ @Mixin(InGameHud.class) public abstract class InGameHudMixin { - /* + @Shadow - protected abstract void renderHotbarItem(int x, int y, float tickDelta, PlayerEntity player, ItemStack stack, int seed); + protected abstract void renderHotbarItem(MatrixStack matrixStack, int i, int j, float f, PlayerEntity playerEntity, ItemStack itemStack, int k); @Shadow private int scaledWidth; @@ -33,18 +33,20 @@ public abstract class InGameHudMixin { @Redirect(method = "renderHotbar", at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/gui/hud/InGameHud;renderHotbarItem(IIFLnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/item/ItemStack;I)V", + target = "Lnet/minecraft/client/gui/hud/InGameHud;renderHotbarItem(Lnet/minecraft/client/util/math/MatrixStack;IIFLnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/item/ItemStack;I)V", ordinal = 0)) - private void renderHotbarItem(InGameHud instance, int x, int y, float tickDelta, PlayerEntity player, ItemStack stack, int seed) { + private void renderHotbarItem(InGameHud instance, MatrixStack matrixStack, int x, int y, float tickDelta, PlayerEntity player, ItemStack itemStack, int seed) { int n2 = (x + 88 - this.scaledWidth / 2) / 20; - this.renderHotbarItem(x - 90, + this.renderHotbarItem(matrixStack, + x - 90, y, tickDelta, player, this.getCameraPlayer().getInventory().main.get(n2), seed); - this.renderHotbarItem(x + 90, + this.renderHotbarItem(matrixStack, + x + 90, y, tickDelta, player, @@ -54,19 +56,19 @@ private void renderHotbarItem(InGameHud instance, int x, int y, float tickDelta, @ModifyArg(method = "renderHotbar", at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/gui/hud/InGameHud;renderHotbarItem(IIFLnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/item/ItemStack;I)V", + target = "Lnet/minecraft/client/gui/hud/InGameHud;renderHotbarItem(Lnet/minecraft/client/util/math/MatrixStack;IIFLnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/item/ItemStack;I)V", ordinal = 1), - index = 0) - private int moveOffhandLeft(int x, int y, float tickDelta, PlayerEntity player, ItemStack stack, int seed) { + index = 1) + private int moveOffhandLeft(int x) { return x - 90; } @ModifyArg(method = "renderHotbar", at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/gui/hud/InGameHud;renderHotbarItem(IIFLnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/item/ItemStack;I)V", + target = "Lnet/minecraft/client/gui/hud/InGameHud;renderHotbarItem(Lnet/minecraft/client/util/math/MatrixStack;IIFLnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/item/ItemStack;I)V", ordinal = 2), - index = 0) - private int moveOffhandRight(int x, int y, float tickDelta, PlayerEntity player, ItemStack stack, int seed) { + index = 1) + private int moveOffhandRight(int x) { return x + 90; } @@ -92,9 +94,9 @@ private int moveOffhandItemRight(MatrixStack matrices, int x, int y, int u, int at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/InGameHud;drawTexture(Lnet/minecraft/client/util/math/MatrixStack;IIIIII)V", ordinal = 0)) - private void drawTexture(InGameHud instance, MatrixStack matrices, int x, int y, int u, int v, int width, int height) { + private void drawTexture(MatrixStack matrices, int x, int y, int u, int v, int width, int height) { RenderSystem.setShaderTexture(0, BigInvScreenHelper.BIG_HOTBAR); - DrawableHelper.drawTexture(matrices, x - 90, y, instance.getZOffset(), 0, 0, width << 1, height, 512, 32); + DrawableHelper.drawTexture(matrices, x - 90, y, 0, 0, width << 1, height, 512, 32); RenderSystem.setShaderTexture(0, WIDGETS_TEXTURE); } @@ -104,5 +106,5 @@ private void drawTexture(InGameHud instance, MatrixStack matrices, int x, int y, ordinal = 1), index = 1) private int moveSelectionOutline(MatrixStack matrices, int x, int y, int u, int v, int width, int height) { return x - 90; - }*/ + } } diff --git a/src/main/java/com/sollyw/biginv/mixin/client/InventoryScreenMixin.java b/src/main/java/com/sollyw/biginv/mixin/client/InventoryScreenMixin.java index 595039e..f7cad69 100644 --- a/src/main/java/com/sollyw/biginv/mixin/client/InventoryScreenMixin.java +++ b/src/main/java/com/sollyw/biginv/mixin/client/InventoryScreenMixin.java @@ -32,9 +32,9 @@ private void init(CallbackInfo ci) { private void drawBackground(InventoryScreen instance, MatrixStack matrices, float delta, int mouseX, int mouseY) { // nom } -/* - @Redirect(method = "drawBackground", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/InventoryScreen;drawEntity(IIIFFLnet/minecraft/entity/LivingEntity;)V")) - private void drawEntity(int x, int y, int size, float mouseX, float mouseY, LivingEntity entity) { + + @Redirect(method = "drawBackground", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/InventoryScreen;drawEntity(Lnet/minecraft/client/util/math/MatrixStack;IIIFFLnet/minecraft/entity/LivingEntity;)V")) + private void drawEntity(MatrixStack matrices, int x, int y, int size, float mouseX, float mouseY, LivingEntity entity) { // nom - }*/ + } } diff --git a/src/main/resources/biginv.mixins.json b/src/main/resources/biginv.mixins.json index 810b0c9..1c4c426 100644 --- a/src/main/resources/biginv.mixins.json +++ b/src/main/resources/biginv.mixins.json @@ -8,8 +8,6 @@ "GenericContainerScreenHandlerMixin", "MerchantScreenHandlerMixin", "PlayerInventoryMixin", - "PlayerScreenHandler$1Mixin", - "PlayerScreenHandler$2Mixin", "PlayerScreenHandlerMixin", "ScreenHandlerMixin", "ServerPlayNetworkHandlerMixin", diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index a5c0e64..627053f 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -6,7 +6,8 @@ "name": "BigInv", "description": "Bigger inventory and hotbar", "authors": [ - "SollyW" + "SollyW", + "Andrew6rant (Andrew Grant)" ], "license": "Public Domain", @@ -20,7 +21,7 @@ "depends": { "fabricloader": ">=0.11.3", "fabric": "*", - "minecraft": ">=1.19.3", + "minecraft": ">=1.19.4", "java": ">=17" }, "accessWidener" : "biginv.accesswidener", From 354c6dde4fd878ca15dccd5df62c2c2e2b9b452c Mon Sep 17 00:00:00 2001 From: Andrew Grant Date: Thu, 13 Apr 2023 17:04:44 -0400 Subject: [PATCH 7/7] patch Trinkets with BigInv's slot IDs ServerPlayNetworkHandlerMixin conflicts with Trinkets. I've just removed it for now, since it didn't really work in 1.19.4 anyways. It is a low priority to fix right now since creative mode already is disabled. --- src/main/resources/biginv.mixins.json | 1 - src/main/resources/data/trinkets/slots/chest/group.json | 3 +++ src/main/resources/data/trinkets/slots/feet/group.json | 3 +++ src/main/resources/data/trinkets/slots/head/group.json | 3 +++ src/main/resources/data/trinkets/slots/legs/group.json | 3 +++ src/main/resources/data/trinkets/slots/offhand/group.json | 3 +++ 6 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/data/trinkets/slots/chest/group.json create mode 100644 src/main/resources/data/trinkets/slots/feet/group.json create mode 100644 src/main/resources/data/trinkets/slots/head/group.json create mode 100644 src/main/resources/data/trinkets/slots/legs/group.json create mode 100644 src/main/resources/data/trinkets/slots/offhand/group.json diff --git a/src/main/resources/biginv.mixins.json b/src/main/resources/biginv.mixins.json index 1c4c426..48379e3 100644 --- a/src/main/resources/biginv.mixins.json +++ b/src/main/resources/biginv.mixins.json @@ -10,7 +10,6 @@ "PlayerInventoryMixin", "PlayerScreenHandlerMixin", "ScreenHandlerMixin", - "ServerPlayNetworkHandlerMixin", "ShulkerBoxScreenHandlerMixin", "SlotAccessor" ], diff --git a/src/main/resources/data/trinkets/slots/chest/group.json b/src/main/resources/data/trinkets/slots/chest/group.json new file mode 100644 index 0000000..0849ebe --- /dev/null +++ b/src/main/resources/data/trinkets/slots/chest/group.json @@ -0,0 +1,3 @@ +{ + "slot_id": 115 +} \ No newline at end of file diff --git a/src/main/resources/data/trinkets/slots/feet/group.json b/src/main/resources/data/trinkets/slots/feet/group.json new file mode 100644 index 0000000..f922349 --- /dev/null +++ b/src/main/resources/data/trinkets/slots/feet/group.json @@ -0,0 +1,3 @@ +{ + "slot_id": 117 +} \ No newline at end of file diff --git a/src/main/resources/data/trinkets/slots/head/group.json b/src/main/resources/data/trinkets/slots/head/group.json new file mode 100644 index 0000000..726f7df --- /dev/null +++ b/src/main/resources/data/trinkets/slots/head/group.json @@ -0,0 +1,3 @@ +{ + "slot_id": 114 +} \ No newline at end of file diff --git a/src/main/resources/data/trinkets/slots/legs/group.json b/src/main/resources/data/trinkets/slots/legs/group.json new file mode 100644 index 0000000..9d56df9 --- /dev/null +++ b/src/main/resources/data/trinkets/slots/legs/group.json @@ -0,0 +1,3 @@ +{ + "slot_id": 116 +} \ No newline at end of file diff --git a/src/main/resources/data/trinkets/slots/offhand/group.json b/src/main/resources/data/trinkets/slots/offhand/group.json new file mode 100644 index 0000000..278b288 --- /dev/null +++ b/src/main/resources/data/trinkets/slots/offhand/group.json @@ -0,0 +1,3 @@ +{ + "slot_id": 113 +} \ No newline at end of file