From 3e50aef088a1e2dde15bcd7af2026a397330bba8 Mon Sep 17 00:00:00 2001 From: koolkrafter5 Date: Tue, 16 Jun 2026 17:23:42 -0400 Subject: [PATCH 1/7] Enable jvmdg --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 0342dd435..387201b57 100644 --- a/gradle.properties +++ b/gradle.properties @@ -44,7 +44,7 @@ developmentEnvironmentUserName = Developer # - jabel: Jabel syntax-only support, compiles to J8 bytecode # - jvmDowngrader: Full modern Java via JVM Downgrader (syntax + stdlib APIs) # - modern: Native modern Java bytecode, no downgrading -enableModernJavaSyntax = jabel +enableModernJavaSyntax = jvmDowngrader # If set, ignores the above setting and compiles with the given toolchain. This may cause unexpected issues, # and should *not* be used in most situations. -1 disables this. @@ -65,7 +65,7 @@ enableModernJavaSyntax = jabel # - external: Another dependency provides stubs (no constraint, no warning) # - (empty): Warning reminding you to configure stubs # Note: 'shade' option requires you to verify license compliance, see: https://github.com/unimined/JvmDowngrader/blob/main/LICENSE.md -# jvmDowngraderStubsProvider = +jvmDowngraderStubsProvider = gtnhlib # Enables injecting missing generics into the decompiled source code for a better coding experience. # Turns most publicly visible List, Map, etc. into proper List, Map types. From 94bcf3c69bf78350511aebc81293cf53f8a283e5 Mon Sep 17 00:00:00 2001 From: koolkrafter5 Date: Tue, 16 Jun 2026 17:43:59 -0400 Subject: [PATCH 2/7] Support automatically equipping cosmetic armor slots from grave --- dependencies.gradle | 12 +++---- .../openblocks/common/GraveAutoEquip.java | 24 +++++++++++-- .../common/GraveInventorySnapshot.java | 34 ++++++++++++++++--- .../openblocks/common/GraveSlotOrigin.java | 7 ++-- .../java/openblocks/common/ModPresence.java | 7 ++-- 5 files changed, 63 insertions(+), 21 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 06b62d6f0..581e52042 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -7,18 +7,14 @@ dependencies { compileOnly('curse.maven:computercraft-67504:2269339') compileOnly('com.github.GTNewHorizons:Mobs-Info:0.5.17-GTNH:dev') compileOnly("com.github.GTNewHorizons:Backhand:1.8.10:dev") { transitive = false } - compileOnly("com.github.GTNewHorizons:Baubles-Expanded:2.2.21-GTNH:dev") { transitive = false } - compileOnly("com.github.GTNewHorizons:AdventureBackpack2:1.4.21-GTNH:dev") { transitive = false } - compileOnly("com.github.GTNewHorizons:Minecraft-Backpack-Mod:2.6.13-GTNH:dev") { transitive = false } - compileOnly("com.github.GTNewHorizons:TinkersConstruct:1.14.91-GTNH:dev") { transitive = false } - compileOnly("com.github.GTNewHorizons:Galacticraft:3.4.29-GTNH:dev") { transitive = false } devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.102-GTNH:dev') devOnlyNonPublishable("com.github.GTNewHorizons:Baubles-Expanded:2.2.21-GTNH:dev") { transitive = false } devOnlyNonPublishable("com.github.GTNewHorizons:AdventureBackpack2:1.4.21-GTNH:dev") { transitive = false } devOnlyNonPublishable("com.github.GTNewHorizons:Minecraft-Backpack-Mod:2.6.13-GTNH:dev") { transitive = false } - devOnlyNonPublishable("com.github.GTNewHorizons:TinkersConstruct:1.14.91-GTNH:dev") { transitive = true } - devOnlyNonPublishable("com.github.GTNewHorizons:waila:1.19.30:dev") { transitive = true } - devOnlyNonPublishable("com.github.GTNewHorizons:HoloInventory:2.5.13-GTNH:dev") { transitive = true } + devOnlyNonPublishable("com.github.GTNewHorizons:TinkersConstruct:1.14.91-GTNH:dev") + devOnlyNonPublishable("com.github.GTNewHorizons:waila:1.19.30:dev") + devOnlyNonPublishable("com.github.GTNewHorizons:HoloInventory:2.5.13-GTNH:dev") devOnlyNonPublishable("com.github.GTNewHorizons:Galacticraft:3.4.29-GTNH:dev") { transitive = false } + devOnlyNonPublishable("com.github.GTNewHorizons:CosmeticArmorReworked:1.0.6-GTNH:dev") } diff --git a/src/main/java/openblocks/common/GraveAutoEquip.java b/src/main/java/openblocks/common/GraveAutoEquip.java index 99c31b357..ad75b05f0 100644 --- a/src/main/java/openblocks/common/GraveAutoEquip.java +++ b/src/main/java/openblocks/common/GraveAutoEquip.java @@ -13,6 +13,8 @@ import baubles.api.IBauble; import de.eydamos.backpack.item.ItemBackpackBase; import de.eydamos.backpack.saves.PlayerSave; +import lain.mods.cos.CosmeticArmorReworked; +import lain.mods.cos.inventory.InventoryCosArmor; import micdoodle8.mods.galacticraft.api.item.IItemThermal; import micdoodle8.mods.galacticraft.core.entities.player.GCPlayerStats; import micdoodle8.mods.galacticraft.core.inventory.InventoryExtended; @@ -37,11 +39,12 @@ public static boolean tryRestoreToOrigin(EntityPlayer player, ItemStack stack, G return switch (origin.inventoryType) { case GraveSlotOrigin.INV_MAIN -> restoreToMain(player, stack, origin.slot); case GraveSlotOrigin.INV_ARMOR -> restoreToArmor(player, stack, origin.slot); - case GraveSlotOrigin.INV_TCONSTRUCT -> restoreToTConstruct(player, stack, origin.slot); - case GraveSlotOrigin.INV_BAUBLES -> restoreToBaubles(player, stack, origin.slot); case GraveSlotOrigin.INV_ADVENTURE_BACKPACK -> restoreToAdventureBackpack(player, stack); - case GraveSlotOrigin.INV_MC_BACKPACK -> restoreToMcBackpack(player, stack); + case GraveSlotOrigin.INV_BAUBLES -> restoreToBaubles(player, stack, origin.slot); + case GraveSlotOrigin.INV_COSMETIC_ARMOR -> restoreToCosmeticArmor(player, stack, origin.slot); case GraveSlotOrigin.INV_GALACTICRAFT -> restoreToGalacticraft(player, stack, origin.slot); + case GraveSlotOrigin.INV_MC_BACKPACK -> restoreToMcBackpack(player, stack); + case GraveSlotOrigin.INV_TCONSTRUCT -> restoreToTConstruct(player, stack, origin.slot); default -> false; }; } catch (Exception e) { @@ -104,6 +107,21 @@ static boolean restore(EntityPlayer player, ItemStack stack) { } } + private static boolean restoreToCosmeticArmor(EntityPlayer player, ItemStack stack, int slot) { + if (!ModPresence.COSMETIC_ARMOR) return false; + return CosmeticArmorRestoreHelper.restore(player, stack, slot); + } + + private static final class CosmeticArmorRestoreHelper { + + static boolean restore(EntityPlayer player, ItemStack stack, int slot) { + InventoryCosArmor cosArmorInventory = CosmeticArmorReworked.invMan + .getCosArmorInventory(player.getUniqueID()); + cosArmorInventory.setInventorySlotContents(slot, stack); + return true; + } + } + private static boolean restoreToMcBackpack(EntityPlayer player, ItemStack stack) { if (!ModPresence.MC_BACKPACK) return false; return McBackpackRestoreHelper.restore(player, stack); diff --git a/src/main/java/openblocks/common/GraveInventorySnapshot.java b/src/main/java/openblocks/common/GraveInventorySnapshot.java index 4e919bf0c..cc53e7fc9 100644 --- a/src/main/java/openblocks/common/GraveInventorySnapshot.java +++ b/src/main/java/openblocks/common/GraveInventorySnapshot.java @@ -14,6 +14,8 @@ import baubles.api.BaublesApi; import de.eydamos.backpack.saves.PlayerSave; +import lain.mods.cos.CosmeticArmorReworked; +import lain.mods.cos.inventory.InventoryCosArmor; import micdoodle8.mods.galacticraft.core.entities.player.GCPlayerStats; import micdoodle8.mods.galacticraft.core.inventory.InventoryExtended; import openmods.Log; @@ -35,7 +37,7 @@ public OriginatedStack(GraveSlotOrigin origin, ItemStack stack) { } } - private final List entries = new ArrayList(); + private final List entries = new ArrayList<>(); public GraveInventorySnapshot(EntityPlayer player) { captureMain(player); @@ -45,6 +47,7 @@ public GraveInventorySnapshot(EntityPlayer player) { captureAdventureBackpack(player); captureMcBackpack(player); captureGalacticraft(player); + captureCosmeticArmor(player); } private void captureMain(EntityPlayer player) { @@ -182,6 +185,29 @@ static void capture(EntityPlayer player, List out) { } } + private void captureCosmeticArmor(EntityPlayer player) { + if (!ModPresence.COSMETIC_ARMOR) return; + try { + CosmeticArmorCaptureHelper.capture(player, entries); + } catch (Exception e) { + Log.warn("GraveInventorySnapshot: failed to capture Cosmetic Armor slots: %s", e); + } + } + + private static final class CosmeticArmorCaptureHelper { + + static void capture(EntityPlayer player, List out) { + InventoryCosArmor cosArmorInventory = CosmeticArmorReworked.invMan + .getCosArmorInventory(player.getUniqueID()); + ItemStack[] inv = cosArmorInventory.getInventory(); + for (int i = 0; i < inv.length; i++) { + ItemStack stack = inv[i]; + if (stack != null) + out.add(new OriginatedStack(new GraveSlotOrigin(GraveSlotOrigin.INV_COSMETIC_ARMOR, i), stack)); + } + } + } + /** * Builds grave inventory and slot origins from the snapshot. Only items that appear in graveLoot (matched by * item/damage/NBT) are included. @@ -192,13 +218,13 @@ static void capture(EntityPlayer player, List out) { */ public IInventory buildLoot(List graveLoot, Map originsOut) { // Build a consumable pool of drops for matching - List pool = new ArrayList(graveLoot.size()); + List pool = new ArrayList<>(graveLoot.size()); for (EntityItem ei : graveLoot) { ItemStack s = ei.getEntityItem(); if (s != null) pool.add(s); } - List matched = new ArrayList(); + List matched = new ArrayList<>(); for (OriginatedStack entry : entries) { int idx = findAndConsume(pool, entry.stack); if (idx >= 0) matched.add(entry); @@ -206,7 +232,7 @@ public IInventory buildLoot(List graveLoot, Map unmatched = new ArrayList(pool); + List unmatched = new ArrayList<>(pool); GenericInventory inv = new GenericInventory("tmpplayer", false, matched.size() + unmatched.size()); int graveSlot = 0; diff --git a/src/main/java/openblocks/common/GraveSlotOrigin.java b/src/main/java/openblocks/common/GraveSlotOrigin.java index 6cda9e7b5..ce5c0fe72 100644 --- a/src/main/java/openblocks/common/GraveSlotOrigin.java +++ b/src/main/java/openblocks/common/GraveSlotOrigin.java @@ -6,11 +6,12 @@ public class GraveSlotOrigin { public static final String INV_MAIN = "main"; public static final String INV_ARMOR = "armor"; - public static final String INV_TCONSTRUCT = "tconstruct"; - public static final String INV_BAUBLES = "baubles"; public static final String INV_ADVENTURE_BACKPACK = "adventurebackpack"; - public static final String INV_MC_BACKPACK = "mcbackpack"; + public static final String INV_BAUBLES = "baubles"; + public static final String INV_COSMETIC_ARMOR = "cosmeticarmor"; public static final String INV_GALACTICRAFT = "galacticraft"; + public static final String INV_MC_BACKPACK = "mcbackpack"; + public static final String INV_TCONSTRUCT = "tconstruct"; public final String inventoryType; public final int slot; diff --git a/src/main/java/openblocks/common/ModPresence.java b/src/main/java/openblocks/common/ModPresence.java index b1abf40d8..3620dde5c 100644 --- a/src/main/java/openblocks/common/ModPresence.java +++ b/src/main/java/openblocks/common/ModPresence.java @@ -6,9 +6,10 @@ public final class ModPresence { private ModPresence() {} - public static final boolean BAUBLES = Loader.isModLoaded("Baubles"); - public static final boolean TCONSTRUCT = Loader.isModLoaded("TConstruct"); public static final boolean ADVENTURE_BACKPACK = Loader.isModLoaded("adventurebackpack"); - public static final boolean MC_BACKPACK = Loader.isModLoaded("Backpack"); + public static final boolean BAUBLES = Loader.isModLoaded("Baubles"); + public static final boolean COSMETIC_ARMOR = Loader.isModLoaded("cosmeticarmorreworked"); public static final boolean GALACTICRAFT = Loader.isModLoaded("GalacticraftCore"); + public static final boolean MC_BACKPACK = Loader.isModLoaded("Backpack"); + public static final boolean TCONSTRUCT = Loader.isModLoaded("TConstruct"); } From d5c65059826677ba884e9453d123ada82642739a Mon Sep 17 00:00:00 2001 From: koolkrafter5 Date: Tue, 16 Jun 2026 17:45:53 -0400 Subject: [PATCH 3/7] Convert to records --- .../java/openblocks/common/GraveAutoEquip.java | 18 +++++++++--------- .../common/GraveInventorySnapshot.java | 11 +---------- .../openblocks/common/GraveSlotOrigin.java | 10 +--------- 3 files changed, 11 insertions(+), 28 deletions(-) diff --git a/src/main/java/openblocks/common/GraveAutoEquip.java b/src/main/java/openblocks/common/GraveAutoEquip.java index ad75b05f0..28ebde1b7 100644 --- a/src/main/java/openblocks/common/GraveAutoEquip.java +++ b/src/main/java/openblocks/common/GraveAutoEquip.java @@ -36,23 +36,23 @@ public class GraveAutoEquip { public static boolean tryRestoreToOrigin(EntityPlayer player, ItemStack stack, GraveSlotOrigin origin) { if (stack == null || origin == null) return false; try { - return switch (origin.inventoryType) { - case GraveSlotOrigin.INV_MAIN -> restoreToMain(player, stack, origin.slot); - case GraveSlotOrigin.INV_ARMOR -> restoreToArmor(player, stack, origin.slot); + return switch (origin.inventoryType()) { + case GraveSlotOrigin.INV_MAIN -> restoreToMain(player, stack, origin.slot()); + case GraveSlotOrigin.INV_ARMOR -> restoreToArmor(player, stack, origin.slot()); case GraveSlotOrigin.INV_ADVENTURE_BACKPACK -> restoreToAdventureBackpack(player, stack); - case GraveSlotOrigin.INV_BAUBLES -> restoreToBaubles(player, stack, origin.slot); - case GraveSlotOrigin.INV_COSMETIC_ARMOR -> restoreToCosmeticArmor(player, stack, origin.slot); - case GraveSlotOrigin.INV_GALACTICRAFT -> restoreToGalacticraft(player, stack, origin.slot); + case GraveSlotOrigin.INV_BAUBLES -> restoreToBaubles(player, stack, origin.slot()); + case GraveSlotOrigin.INV_COSMETIC_ARMOR -> restoreToCosmeticArmor(player, stack, origin.slot()); + case GraveSlotOrigin.INV_GALACTICRAFT -> restoreToGalacticraft(player, stack, origin.slot()); case GraveSlotOrigin.INV_MC_BACKPACK -> restoreToMcBackpack(player, stack); - case GraveSlotOrigin.INV_TCONSTRUCT -> restoreToTConstruct(player, stack, origin.slot); + case GraveSlotOrigin.INV_TCONSTRUCT -> restoreToTConstruct(player, stack, origin.slot()); default -> false; }; } catch (Exception e) { Log.warn( "GraveAutoEquip: error restoring %s to origin %s/%d: %s", stack.getDisplayName(), - origin.inventoryType, - origin.slot, + origin.inventoryType(), + origin.slot(), e); return false; } diff --git a/src/main/java/openblocks/common/GraveInventorySnapshot.java b/src/main/java/openblocks/common/GraveInventorySnapshot.java index cc53e7fc9..2843d3f3b 100644 --- a/src/main/java/openblocks/common/GraveInventorySnapshot.java +++ b/src/main/java/openblocks/common/GraveInventorySnapshot.java @@ -26,16 +26,7 @@ public class GraveInventorySnapshot { - public static final class OriginatedStack { - - public final GraveSlotOrigin origin; - public final ItemStack stack; - - public OriginatedStack(GraveSlotOrigin origin, ItemStack stack) { - this.origin = origin; - this.stack = stack; - } - } + public record OriginatedStack(GraveSlotOrigin origin, ItemStack stack) {} private final List entries = new ArrayList<>(); diff --git a/src/main/java/openblocks/common/GraveSlotOrigin.java b/src/main/java/openblocks/common/GraveSlotOrigin.java index ce5c0fe72..fd2ad3d26 100644 --- a/src/main/java/openblocks/common/GraveSlotOrigin.java +++ b/src/main/java/openblocks/common/GraveSlotOrigin.java @@ -2,7 +2,7 @@ import net.minecraft.nbt.NBTTagCompound; -public class GraveSlotOrigin { +public record GraveSlotOrigin(String inventoryType, int slot) { public static final String INV_MAIN = "main"; public static final String INV_ARMOR = "armor"; @@ -13,14 +13,6 @@ public class GraveSlotOrigin { public static final String INV_MC_BACKPACK = "mcbackpack"; public static final String INV_TCONSTRUCT = "tconstruct"; - public final String inventoryType; - public final int slot; - - public GraveSlotOrigin(String inventoryType, int slot) { - this.inventoryType = inventoryType; - this.slot = slot; - } - public NBTTagCompound toNBT() { NBTTagCompound tag = new NBTTagCompound(); tag.setString("inv", inventoryType); From 65022e355f2b50be4643d2d7700befed8c3e527c Mon Sep 17 00:00:00 2001 From: koolkrafter5 Date: Tue, 16 Jun 2026 17:50:24 -0400 Subject: [PATCH 4/7] Mark dirty so client gets updated --- src/main/java/openblocks/common/GraveAutoEquip.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/openblocks/common/GraveAutoEquip.java b/src/main/java/openblocks/common/GraveAutoEquip.java index 28ebde1b7..8da1df373 100644 --- a/src/main/java/openblocks/common/GraveAutoEquip.java +++ b/src/main/java/openblocks/common/GraveAutoEquip.java @@ -118,6 +118,7 @@ static boolean restore(EntityPlayer player, ItemStack stack, int slot) { InventoryCosArmor cosArmorInventory = CosmeticArmorReworked.invMan .getCosArmorInventory(player.getUniqueID()); cosArmorInventory.setInventorySlotContents(slot, stack); + cosArmorInventory.markDirty(); return true; } } From b12e1e00e37f6bea652b3870c09a72f4673750cb Mon Sep 17 00:00:00 2001 From: koolkrafter5 Date: Tue, 16 Jun 2026 17:58:05 -0400 Subject: [PATCH 5/7] Reorder deps alphabetically --- dependencies.gradle | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 581e52042..03c1be5aa 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -3,18 +3,18 @@ dependencies { api('com.github.GTNewHorizons:OpenModsLib:0.10.14:dev') - compileOnly('openperipheral:OpenPeripheralCore-API:3.4.1') + compileOnly("com.github.GTNewHorizons:Backhand:1.8.10:dev") { transitive = false } compileOnly('curse.maven:computercraft-67504:2269339') compileOnly('com.github.GTNewHorizons:Mobs-Info:0.5.17-GTNH:dev') - compileOnly("com.github.GTNewHorizons:Backhand:1.8.10:dev") { transitive = false } + compileOnly('openperipheral:OpenPeripheralCore-API:3.4.1') - devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.102-GTNH:dev') - devOnlyNonPublishable("com.github.GTNewHorizons:Baubles-Expanded:2.2.21-GTNH:dev") { transitive = false } devOnlyNonPublishable("com.github.GTNewHorizons:AdventureBackpack2:1.4.21-GTNH:dev") { transitive = false } + devOnlyNonPublishable("com.github.GTNewHorizons:Baubles-Expanded:2.2.21-GTNH:dev") { transitive = false } + devOnlyNonPublishable("com.github.GTNewHorizons:CosmeticArmorReworked:1.0.6-GTNH:dev") { transitive = false } + devOnlyNonPublishable("com.github.GTNewHorizons:Galacticraft:3.4.29-GTNH:dev") { transitive = false } + devOnlyNonPublishable("com.github.GTNewHorizons:HoloInventory:2.5.13-GTNH:dev") { transitive = false } devOnlyNonPublishable("com.github.GTNewHorizons:Minecraft-Backpack-Mod:2.6.13-GTNH:dev") { transitive = false } + devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.102-GTNH:dev') devOnlyNonPublishable("com.github.GTNewHorizons:TinkersConstruct:1.14.91-GTNH:dev") devOnlyNonPublishable("com.github.GTNewHorizons:waila:1.19.30:dev") - devOnlyNonPublishable("com.github.GTNewHorizons:HoloInventory:2.5.13-GTNH:dev") - devOnlyNonPublishable("com.github.GTNewHorizons:Galacticraft:3.4.29-GTNH:dev") { transitive = false } - devOnlyNonPublishable("com.github.GTNewHorizons:CosmeticArmorReworked:1.0.6-GTNH:dev") } From c33c11665a4530d370ab86bff51cc81ca662eff0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 18:09:11 -0400 Subject: [PATCH 6/7] Spotless apply for branch cosmetic-armor for #55 (#56) Co-authored-by: GitHub GTNH Actions <> --- src/main/java/openblocks/common/GraveAutoEquip.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/openblocks/common/GraveAutoEquip.java b/src/main/java/openblocks/common/GraveAutoEquip.java index 8da1df373..d99c61813 100644 --- a/src/main/java/openblocks/common/GraveAutoEquip.java +++ b/src/main/java/openblocks/common/GraveAutoEquip.java @@ -118,7 +118,7 @@ static boolean restore(EntityPlayer player, ItemStack stack, int slot) { InventoryCosArmor cosArmorInventory = CosmeticArmorReworked.invMan .getCosArmorInventory(player.getUniqueID()); cosArmorInventory.setInventorySlotContents(slot, stack); - cosArmorInventory.markDirty(); + cosArmorInventory.markDirty(); return true; } } From 41bd168ef6c100fb24839e405e587e0bbbf5a982 Mon Sep 17 00:00:00 2001 From: koolkrafter5 Date: Wed, 17 Jun 2026 13:03:01 -0400 Subject: [PATCH 7/7] Fix overwriting filled cosmetic armor slots --- src/main/java/openblocks/common/GraveAutoEquip.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/openblocks/common/GraveAutoEquip.java b/src/main/java/openblocks/common/GraveAutoEquip.java index d99c61813..62f25c4db 100644 --- a/src/main/java/openblocks/common/GraveAutoEquip.java +++ b/src/main/java/openblocks/common/GraveAutoEquip.java @@ -115,10 +115,10 @@ private static boolean restoreToCosmeticArmor(EntityPlayer player, ItemStack sta private static final class CosmeticArmorRestoreHelper { static boolean restore(EntityPlayer player, ItemStack stack, int slot) { - InventoryCosArmor cosArmorInventory = CosmeticArmorReworked.invMan - .getCosArmorInventory(player.getUniqueID()); - cosArmorInventory.setInventorySlotContents(slot, stack); - cosArmorInventory.markDirty(); + InventoryCosArmor inv = CosmeticArmorReworked.invMan.getCosArmorInventory(player.getUniqueID()); + if (inv.getStackInSlot(slot) != null) return false; + inv.setInventorySlotContents(slot, stack.copy()); + inv.markDirty(); return true; } }