From 3f632a448a6249e2a6f942744c44278ce01e7b36 Mon Sep 17 00:00:00 2001 From: "Ash (Bagel)" Date: Sat, 6 Jul 2024 00:42:20 -0500 Subject: [PATCH 1/2] Update to latest Apoth --- build.gradle | 8 +-- .../apotheosis/ApotheosisCompatibility.java | 49 ++++++++++--------- .../compat/apotheosis/gem/PSTGemBonus.java | 6 +-- .../daripher/skilltree/item/gem/GemItem.java | 4 +- .../AdventureModuleClientMixin.java | 10 ++-- .../mixin/apotheosis/AttributeBonusMixin.java | 2 +- .../apotheosis/EnchantmentBonusMixin.java | 2 +- .../apotheosis/SocketingRecipeMixin.java | 14 +++--- 8 files changed, 51 insertions(+), 44 deletions(-) diff --git a/build.gradle b/build.gradle index 8fc8936ec..8685455e3 100644 --- a/build.gradle +++ b/build.gradle @@ -138,9 +138,9 @@ dependencies { // apple skin implementation fg.deobf("curse.maven:appleskin-248787:4605078") // apotheosis - implementation fg.deobf("curse.maven:apotheosis-313970:5209354") - implementation fg.deobf("curse.maven:placebo-283644:5098182") - implementation fg.deobf("curse.maven:apothic-attributes-898963:5209162") + implementation fg.deobf("curse.maven:apotheosis-313970:5486368") + implementation fg.deobf("curse.maven:placebo-283644:5414631") + implementation fg.deobf("curse.maven:apothic-attributes-898963:5340012") // tetra implementation fg.deobf("curse.maven:tetra-289712:4857842") implementation fg.deobf("curse.maven:mutil-351914:4824501") @@ -150,7 +150,7 @@ dependencies { // item production lib implementation fg.deobf("curse.maven:item-production-lib-950401:5097458") // apothic curios - implementation fg.deobf("curse.maven:apothic-curios-950712:4966964") + implementation fg.deobf("curse.maven:apothic-curios-950712:5497444") } mixin { diff --git a/src/main/java/daripher/skilltree/compat/apotheosis/ApotheosisCompatibility.java b/src/main/java/daripher/skilltree/compat/apotheosis/ApotheosisCompatibility.java index 1f9dd11ad..6efbcf89b 100644 --- a/src/main/java/daripher/skilltree/compat/apotheosis/ApotheosisCompatibility.java +++ b/src/main/java/daripher/skilltree/compat/apotheosis/ApotheosisCompatibility.java @@ -9,17 +9,18 @@ import dev.shadowsoffire.apotheosis.Apoth; import dev.shadowsoffire.apotheosis.Apotheosis; import dev.shadowsoffire.apotheosis.adventure.affix.AffixHelper; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.SocketHelper; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.gem.Gem; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.gem.GemInstance; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.gem.GemItem; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.gem.GemRegistry; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.gem.bonus.GemBonus; import dev.shadowsoffire.apotheosis.adventure.event.GetItemSocketsEvent; import dev.shadowsoffire.apotheosis.adventure.loot.GemLootPoolEntry; import dev.shadowsoffire.apotheosis.adventure.loot.LootCategory; import dev.shadowsoffire.apotheosis.adventure.loot.LootRarity; import dev.shadowsoffire.apotheosis.adventure.loot.RarityRegistry; +import dev.shadowsoffire.apotheosis.adventure.socket.SocketHelper; +import dev.shadowsoffire.apotheosis.adventure.socket.SocketedGems; +import dev.shadowsoffire.apotheosis.adventure.socket.gem.Gem; +import dev.shadowsoffire.apotheosis.adventure.socket.gem.GemInstance; +import dev.shadowsoffire.apotheosis.adventure.socket.gem.GemItem; +import dev.shadowsoffire.apotheosis.adventure.socket.gem.GemRegistry; +import dev.shadowsoffire.apotheosis.adventure.socket.gem.bonus.GemBonus; import dev.shadowsoffire.placebo.reload.DynamicHolder; import java.util.*; import java.util.function.Consumer; @@ -45,9 +46,13 @@ public void register() { forgeEventBus.addListener(this::addItemSockets); } - public List getGems(ItemStack stack, int sockets) { - if (sockets == 0 || stack.isEmpty()) return Collections.emptyList(); - List gems = NonNullList.withSize(sockets, ItemStack.EMPTY); + public SocketedGems getGems(ItemStack stack, int sockets) { + if (sockets == 0 || stack.isEmpty()) return SocketedGems.EMPTY; + + LootCategory cat = LootCategory.forItem(stack); + if (cat.isNone()) return SocketedGems.EMPTY; + List gems = NonNullList.withSize(sockets, GemInstance.EMPTY); + int i = 0; CompoundTag afxData = stack.getTagElement(SocketHelper.AFFIX_DATA); if (afxData != null && afxData.contains(SocketHelper.GEMS)) { @@ -55,26 +60,28 @@ public List getGems(ItemStack stack, int sockets) { for (Tag tag : gemData) { ItemStack gemStack = ItemStack.of((CompoundTag) tag); gemStack.setCount(1); - if (GemInstance.unsocketed(gemStack).isValidUnsocketed()) { - gems.set(i++, gemStack); + GemInstance inst = GemInstance.socketed(stack, gemStack); + if (inst.isValid()) { + gems.set(i++, inst); } if (i >= sockets) break; } } - return ImmutableList.copyOf(gems); + + return new SocketedGems(ImmutableList.copyOf(gems)); } public List> getGemBonuses(ItemStack stack) { List> list = new ArrayList<>(); - for (ItemStack gemStack : SocketHelper.getGems(stack)) { - DynamicHolder gem = GemItem.getGem(gemStack); + for (GemInstance gemInstance : SocketHelper.getGems(stack)) { + DynamicHolder gem = gemInstance.gem(); if (!gem.isBound()) continue; List bonuses = gem.get().getBonuses(); for (GemBonus gemBonus : bonuses) { Set lootCategories = gemBonus.getGemClass().types(); if (lootCategories.stream().noneMatch(c -> c.isValid(stack))) continue; if (gemBonus instanceof PSTGemBonus aBonus) { - list.add(aBonus.getBonus(gemStack)); + list.add(aBonus.getBonus(gemInstance.gemStack())); break; } } @@ -82,7 +89,7 @@ public List> getGemBonuses(ItemStack stack) { return list; } - public List getGems(ItemStack stack) { + public SocketedGems getGems(ItemStack stack) { return getGems(stack, getSockets(stack, null)); } @@ -96,16 +103,13 @@ public int getSockets(ItemStack stack, @Nullable Player player) { } public boolean hasEmptySockets(ItemStack stack, Player player) { - return getGems(stack, getSockets(stack, player)).stream() - .map(GemItem::getGem) - .map(DynamicHolder::getOptional) - .anyMatch(Optional::isEmpty); + return getGems(stack, getSockets(stack, player)).gems().stream().anyMatch(g -> !g.isValid()); } public int getFirstEmptySocket(ItemStack stack, int sockets) { - List gems = getGems(stack, sockets); + SocketedGems gems = getGems(stack, sockets); for (int socket = 0; socket < sockets; socket++) { - if (GemItem.getGem(gems.get(socket)).getOptional().isEmpty()) { + if (gems.get(socket).isValid()) { return socket; } } @@ -139,7 +143,6 @@ public boolean adventureModuleEnabled() { } private void addItemSockets(GetItemSocketsEvent event) { - if (!Apoth.Affixes.SOCKET.isBound()) return; ItemStack stack = event.getStack(); if (!ItemHelper.hasSockets(stack)) return; int sockets = event.getSockets(); diff --git a/src/main/java/daripher/skilltree/compat/apotheosis/gem/PSTGemBonus.java b/src/main/java/daripher/skilltree/compat/apotheosis/gem/PSTGemBonus.java index 2b7f8bb5b..00ce6220a 100644 --- a/src/main/java/daripher/skilltree/compat/apotheosis/gem/PSTGemBonus.java +++ b/src/main/java/daripher/skilltree/compat/apotheosis/gem/PSTGemBonus.java @@ -14,10 +14,10 @@ import daripher.skilltree.skill.bonus.item.ItemBonus; import daripher.skilltree.skill.bonus.item.ItemSkillBonus; import daripher.skilltree.skill.bonus.player.AttributeBonus; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.gem.GemClass; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.gem.GemItem; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.gem.bonus.GemBonus; import dev.shadowsoffire.apotheosis.adventure.loot.LootRarity; +import dev.shadowsoffire.apotheosis.adventure.socket.gem.GemClass; +import dev.shadowsoffire.apotheosis.adventure.socket.gem.GemItem; +import dev.shadowsoffire.apotheosis.adventure.socket.gem.bonus.GemBonus; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/daripher/skilltree/item/gem/GemItem.java b/src/main/java/daripher/skilltree/item/gem/GemItem.java index 396f88b84..1e2ac53fa 100644 --- a/src/main/java/daripher/skilltree/item/gem/GemItem.java +++ b/src/main/java/daripher/skilltree/item/gem/GemItem.java @@ -13,6 +13,8 @@ import java.util.Set; import javax.annotation.Nonnull; import javax.annotation.Nullable; + +import dev.shadowsoffire.apotheosis.adventure.socket.gem.GemInstance; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.BakedModel; @@ -147,7 +149,7 @@ public static List> getGemBonuses(ItemStack stack) { public static List getGems(ItemStack stack) { if (SkillTreeMod.apotheosisEnabled()) { - return ApotheosisCompatibility.INSTANCE.getGems(stack); + return ApotheosisCompatibility.INSTANCE.getGems(stack).gems().stream().map(GemInstance::gemStack).toList(); } if (!stack.hasTag()) return List.of(); return stack.getOrCreateTag().getList("gems", Tag.TAG_STRING).stream() diff --git a/src/main/java/daripher/skilltree/mixin/apotheosis/AdventureModuleClientMixin.java b/src/main/java/daripher/skilltree/mixin/apotheosis/AdventureModuleClientMixin.java index 624921531..9350d9cfb 100644 --- a/src/main/java/daripher/skilltree/mixin/apotheosis/AdventureModuleClientMixin.java +++ b/src/main/java/daripher/skilltree/mixin/apotheosis/AdventureModuleClientMixin.java @@ -1,9 +1,9 @@ package daripher.skilltree.mixin.apotheosis; import daripher.skilltree.compat.apotheosis.ApotheosisCompatibility; -import java.util.List; import dev.shadowsoffire.apotheosis.adventure.client.AdventureModuleClient; +import dev.shadowsoffire.apotheosis.adventure.socket.SocketedGems; import net.minecraft.client.Minecraft; import net.minecraft.world.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; @@ -18,8 +18,8 @@ public class AdventureModuleClientMixin { @At( value = "INVOKE", target = - "Ldev/shadowsoffire/apotheosis/adventure/affix/socket/SocketHelper;getGems(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List;")) - private static List showPlayerSockets(ItemStack stack) { + "Ldev/shadowsoffire/apotheosis/adventure/socket/SocketHelper;getGems(Lnet/minecraft/world/item/ItemStack;)Ldev/shadowsoffire/apotheosis/adventure/socket/SocketedGems;")) + private static SocketedGems showPlayerSockets(ItemStack stack) { Minecraft minecraft = Minecraft.getInstance(); int sockets = ApotheosisCompatibility.INSTANCE.getSockets(stack, minecraft.player); return ApotheosisCompatibility.INSTANCE.getGems(stack, sockets); @@ -31,7 +31,7 @@ private static List showPlayerSockets(ItemStack stack) { @At( value = "INVOKE", target = - "Ldev/shadowsoffire/apotheosis/adventure/affix/socket/SocketHelper;getSockets(Lnet/minecraft/world/item/ItemStack;)I")) + "Ldev/shadowsoffire/apotheosis/adventure/socket/SocketHelper;getSockets(Lnet/minecraft/world/item/ItemStack;)I")) private static int addPlayerSockets(ItemStack stack) { return ApotheosisCompatibility.INSTANCE.getSockets(stack, Minecraft.getInstance().player); } @@ -42,7 +42,7 @@ private static int addPlayerSockets(ItemStack stack) { @At( value = "INVOKE", target = - "Ldev/shadowsoffire/apotheosis/adventure/affix/socket/SocketHelper;getSockets(Lnet/minecraft/world/item/ItemStack;)I")) + "Ldev/shadowsoffire/apotheosis/adventure/socket/SocketHelper;getSockets(Lnet/minecraft/world/item/ItemStack;)I")) private static int addPlayerSockets2(ItemStack stack) { return ApotheosisCompatibility.INSTANCE.getSockets(stack, Minecraft.getInstance().player); } diff --git a/src/main/java/daripher/skilltree/mixin/apotheosis/AttributeBonusMixin.java b/src/main/java/daripher/skilltree/mixin/apotheosis/AttributeBonusMixin.java index c0f18019c..48fc2d1ef 100644 --- a/src/main/java/daripher/skilltree/mixin/apotheosis/AttributeBonusMixin.java +++ b/src/main/java/daripher/skilltree/mixin/apotheosis/AttributeBonusMixin.java @@ -1,7 +1,7 @@ package daripher.skilltree.mixin.apotheosis; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.gem.bonus.AttributeBonus; import dev.shadowsoffire.apotheosis.adventure.loot.LootRarity; +import dev.shadowsoffire.apotheosis.adventure.socket.gem.bonus.AttributeBonus; import dev.shadowsoffire.placebo.util.StepFunction; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/daripher/skilltree/mixin/apotheosis/EnchantmentBonusMixin.java b/src/main/java/daripher/skilltree/mixin/apotheosis/EnchantmentBonusMixin.java index f5695b61e..e3e70afa7 100644 --- a/src/main/java/daripher/skilltree/mixin/apotheosis/EnchantmentBonusMixin.java +++ b/src/main/java/daripher/skilltree/mixin/apotheosis/EnchantmentBonusMixin.java @@ -2,7 +2,7 @@ import java.util.Map; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.gem.bonus.EnchantmentBonus; +import dev.shadowsoffire.apotheosis.adventure.socket.gem.bonus.EnchantmentBonus; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/daripher/skilltree/mixin/apotheosis/SocketingRecipeMixin.java b/src/main/java/daripher/skilltree/mixin/apotheosis/SocketingRecipeMixin.java index 105903ad9..1427aee45 100644 --- a/src/main/java/daripher/skilltree/mixin/apotheosis/SocketingRecipeMixin.java +++ b/src/main/java/daripher/skilltree/mixin/apotheosis/SocketingRecipeMixin.java @@ -3,9 +3,11 @@ import daripher.skilltree.compat.apotheosis.ApotheosisCompatibility; import daripher.skilltree.container.ContainerHelper; import daripher.skilltree.entity.player.PlayerHelper; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.SocketHelper; -import dev.shadowsoffire.apotheosis.adventure.affix.socket.SocketingRecipe; import java.util.List; + +import dev.shadowsoffire.apotheosis.adventure.socket.SocketHelper; +import dev.shadowsoffire.apotheosis.adventure.socket.SocketedGems; +import dev.shadowsoffire.apotheosis.adventure.socket.SocketingRecipe; import net.minecraft.world.Container; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -22,7 +24,7 @@ public class SocketingRecipeMixin { @At( value = "INVOKE", target = - "Ldev/shadowsoffire/apotheosis/adventure/affix/socket/SocketHelper;hasEmptySockets(Lnet/minecraft/world/item/ItemStack;)Z")) + "Ldev/shadowsoffire/apotheosis/adventure/socket/SocketHelper;hasEmptySockets(Lnet/minecraft/world/item/ItemStack;)Z")) private boolean checkPlayerSockets(ItemStack stack, Container container, Level level) { Player player = ContainerHelper.getViewingPlayer(container); if (player == null) return SocketHelper.hasEmptySockets(stack); @@ -50,7 +52,7 @@ private Object applyGemPower(List gems, int index, Object gem, Container @At( value = "INVOKE", target = - "Ldev/shadowsoffire/apotheosis/adventure/affix/socket/SocketHelper;getFirstEmptySocket(Lnet/minecraft/world/item/ItemStack;)I")) + "Ldev/shadowsoffire/apotheosis/adventure/socket/SocketHelper;getFirstEmptySocket(Lnet/minecraft/world/item/ItemStack;)I")) private int applyPlayerSockets(ItemStack stack, Container container) { Player player = ContainerHelper.getViewingPlayer(container); if (player == null) return SocketHelper.getFirstEmptySocket(stack); @@ -64,8 +66,8 @@ private int applyPlayerSockets(ItemStack stack, Container container) { @At( value = "INVOKE", target = - "Ldev/shadowsoffire/apotheosis/adventure/affix/socket/SocketHelper;getGems(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List;")) - private List applyPlayerSockets2(ItemStack stack, Container container) { + "Ldev/shadowsoffire/apotheosis/adventure/socket/SocketHelper;getGems(Lnet/minecraft/world/item/ItemStack;)Ldev/shadowsoffire/apotheosis/adventure/socket/SocketedGems;")) + private SocketedGems applyPlayerSockets2(ItemStack stack, Container container) { Player player = ContainerHelper.getViewingPlayer(container); if (player == null) return SocketHelper.getGems(stack); int sockets = ApotheosisCompatibility.INSTANCE.getSockets(stack, player); From d872a1f60efd314fa6d6fb64b5f3f03316202b81 Mon Sep 17 00:00:00 2001 From: "Ash (Bagel)" Date: Sun, 7 Jul 2024 00:28:39 -0500 Subject: [PATCH 2/2] Fix incorrect cast and inverted check --- .../skilltree/compat/apotheosis/ApotheosisCompatibility.java | 4 ++-- .../skilltree/mixin/apotheosis/SocketingRecipeMixin.java | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/daripher/skilltree/compat/apotheosis/ApotheosisCompatibility.java b/src/main/java/daripher/skilltree/compat/apotheosis/ApotheosisCompatibility.java index 6efbcf89b..d2dd374ef 100644 --- a/src/main/java/daripher/skilltree/compat/apotheosis/ApotheosisCompatibility.java +++ b/src/main/java/daripher/skilltree/compat/apotheosis/ApotheosisCompatibility.java @@ -109,7 +109,7 @@ public boolean hasEmptySockets(ItemStack stack, Player player) { public int getFirstEmptySocket(ItemStack stack, int sockets) { SocketedGems gems = getGems(stack, sockets); for (int socket = 0; socket < sockets; socket++) { - if (gems.get(socket).isValid()) { + if (!gems.get(socket).isValid()) { return socket; } } @@ -117,7 +117,7 @@ public int getFirstEmptySocket(ItemStack stack, int sockets) { } public void createGemStack( - Consumer consumer, LootContext context, ResourceLocation gemTypeId) { + Consumer consumer, LootContext context, ResourceLocation gemTypeId) { Player player = GemLootPoolEntry.findPlayer(context); if (player == null) return; ItemStack gemStack = getGemStack(gemTypeId); diff --git a/src/main/java/daripher/skilltree/mixin/apotheosis/SocketingRecipeMixin.java b/src/main/java/daripher/skilltree/mixin/apotheosis/SocketingRecipeMixin.java index 1427aee45..ac8338e7e 100644 --- a/src/main/java/daripher/skilltree/mixin/apotheosis/SocketingRecipeMixin.java +++ b/src/main/java/daripher/skilltree/mixin/apotheosis/SocketingRecipeMixin.java @@ -8,6 +8,7 @@ import dev.shadowsoffire.apotheosis.adventure.socket.SocketHelper; import dev.shadowsoffire.apotheosis.adventure.socket.SocketedGems; import dev.shadowsoffire.apotheosis.adventure.socket.SocketingRecipe; +import dev.shadowsoffire.apotheosis.adventure.socket.gem.GemInstance; import net.minecraft.world.Container; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -42,7 +43,7 @@ private Object applyGemPower(List gems, int index, Object gem, Container if (player == null) return gems.set(index, gem); ItemStack result = container.getItem(1); float power = PlayerHelper.getGemPower(player, result); - ((ItemStack) gem).getOrCreateTag().putFloat("gem_power", power); + ((GemInstance) gem).gemStack().getOrCreateTag().putFloat("gem_power", power); return gems.set(index, gem); }