From ad0d78a5593d33409dc760998e3a96f64cc8c862 Mon Sep 17 00:00:00 2001 From: Wilhelm Schuster Date: Tue, 7 Oct 2025 11:20:23 +0200 Subject: [PATCH 1/2] Rename EnchUtils to PotionAndEnchantUtils --- .../client/render/RendererWearableEquipped.java | 4 ++-- .../adventurebackpack/handlers/PlayerEventHandler.java | 4 ++-- .../com/darkona/adventurebackpack/item/ItemAdventure.java | 4 ++-- .../adventurebackpack/item/ItemAdventureBackpack.java | 4 ++-- .../util/{EnchUtils.java => PotionAndEnchantUtils.java} | 8 +++----- 5 files changed, 11 insertions(+), 13 deletions(-) rename src/main/java/com/darkona/adventurebackpack/util/{EnchUtils.java => PotionAndEnchantUtils.java} (95%) diff --git a/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java b/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java index aa67b0d4..34569618 100644 --- a/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java +++ b/src/main/java/com/darkona/adventurebackpack/client/render/RendererWearableEquipped.java @@ -15,7 +15,7 @@ import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.item.IBackWearableItem; -import com.darkona.adventurebackpack.util.EnchUtils; +import com.darkona.adventurebackpack.util.PotionAndEnchantUtils; import com.darkona.adventurebackpack.util.Wearing; public class RendererWearableEquipped extends RendererLivingEntity { @@ -42,7 +42,7 @@ public void render(Entity entity, double x, double y, double z, float rotX, floa if (!ConfigHandler.enableBackRendering) { return; } - if (EnchUtils.getTranslucencyLevel(wearable) == 2) { + if (PotionAndEnchantUtils.getTranslucencyLevel(wearable) == 2) { return; } GL11.glPushAttrib(GL11.GL_TRANSFORM_BIT); diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index d667f223..7ac2831c 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -35,7 +35,7 @@ import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ServerProxy; import com.darkona.adventurebackpack.reference.BackpackTypes; -import com.darkona.adventurebackpack.util.EnchUtils; +import com.darkona.adventurebackpack.util.PotionAndEnchantUtils; import com.darkona.adventurebackpack.util.LogHelper; import com.darkona.adventurebackpack.util.Wearing; @@ -189,7 +189,7 @@ public void playerDeathDrop(PlayerDropsEvent event) { ItemStack pack = Wearing.getWearingWearable(player); BackpackProperty props = BackpackProperty.get(player); - if (EnchUtils.isSoulBounded(pack) + if (PotionAndEnchantUtils.isSoulBounded(pack) || (ConfigHandler.backpackDeathPlace && pack.getItem() instanceof ItemAdventureBackpack)) { ((IBackWearableItem) props.getWearable().getItem()) .onPlayerDeath(player.worldObj, player, props.getWearable()); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventure.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventure.java index 069ea4b5..a7bc2bbe 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventure.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventure.java @@ -5,7 +5,7 @@ import net.minecraft.item.ItemStack; import com.darkona.adventurebackpack.inventory.ContainerAdventure; -import com.darkona.adventurebackpack.util.EnchUtils; +import com.darkona.adventurebackpack.util.PotionAndEnchantUtils; @SuppressWarnings("WeakerAccess") public abstract class ItemAdventure extends ItemAB implements IBackWearableItem { @@ -41,7 +41,7 @@ public boolean onDroppedByPlayer(ItemStack stack, EntityPlayer player) { @Override public boolean isBookEnchantable(ItemStack stack, ItemStack book) { - return EnchUtils.isSoulBook(book) || EnchUtils.isTranslucencyBook(book); + return PotionAndEnchantUtils.isSoulBook(book) || PotionAndEnchantUtils.isTranslucencyBook(book); } } diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 81112da6..57b6e229 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -42,7 +42,7 @@ import com.darkona.adventurebackpack.reference.BackpackTypes; import com.darkona.adventurebackpack.util.BackpackUtils; import com.darkona.adventurebackpack.util.CoordsUtils; -import com.darkona.adventurebackpack.util.EnchUtils; +import com.darkona.adventurebackpack.util.PotionAndEnchantUtils; import com.darkona.adventurebackpack.util.Resources; import com.darkona.adventurebackpack.util.TipUtils; import com.darkona.adventurebackpack.util.Utils; @@ -135,7 +135,7 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla @Override public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { if (world.isRemote || !ConfigHandler.backpackDeathPlace - || EnchUtils.isSoulBounded(stack) + || PotionAndEnchantUtils.isSoulBounded(stack) || player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) { return; } diff --git a/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java b/src/main/java/com/darkona/adventurebackpack/util/PotionAndEnchantUtils.java similarity index 95% rename from src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java rename to src/main/java/com/darkona/adventurebackpack/util/PotionAndEnchantUtils.java index 9b2c0eff..3f8f7584 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/EnchUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/PotionAndEnchantUtils.java @@ -7,16 +7,15 @@ import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.reference.LoadedMods; -public final class EnchUtils { +public final class PotionAndEnchantUtils { // -3 - disabled by config - // -2 - EnderIO not found + // -2 - mod not found // -1 - enchantment not found private static final int SOUL_BOUND_ID = setSoulBoundID(); - private static final int TRANSLUCENCY_ID = setTranslucencyID(); - private EnchUtils() {} + private PotionAndEnchantUtils() {} private static int setSoulBoundID() { if (!ConfigHandler.allowSoulBound) return -3; @@ -43,7 +42,6 @@ private static int setTranslucencyID() { public static boolean isSoulBounded(ItemStack stack) { if (SOUL_BOUND_ID > 0) return EnchantmentHelper.getEnchantmentLevel(SOUL_BOUND_ID, stack) > 0; else return false; - } public static int getTranslucencyLevel(ItemStack stack) { From 96f00f6bb39cbd77a59f53b4094d1b4d3bf4493d Mon Sep 17 00:00:00 2001 From: Wilhelm Schuster Date: Tue, 7 Oct 2025 12:25:06 +0200 Subject: [PATCH 2/2] Add support for Witchery's Sticky Items potion --- .../config/ConfigHandler.java | 6 ++++++ .../handlers/PlayerEventHandler.java | 5 +++-- .../item/ItemAdventureBackpack.java | 1 + .../reference/LoadedMods.java | 1 + .../util/PotionAndEnchantUtils.java | 18 ++++++++++++++++++ 5 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java index 00cb5212..1b17c987 100644 --- a/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/config/ConfigHandler.java @@ -15,6 +15,7 @@ public class ConfigHandler { public static boolean allowSoulBound = true; public static boolean allowTranslucency = true; + public static boolean allowStickyItems = true; public static boolean backpackDeathPlace = true; public static boolean backpackAbilities = true; public static boolean enableCampfireSpawn = false; @@ -104,6 +105,11 @@ private static void loadConfiguration() { .getBoolean("Allow SoulBound", "gameplay", true, "Allow SoulBound enchant on wearable packs"); allowTranslucency = config .getBoolean("Allow Translucency", "gameplay", true, "Allow Translucency enchant on wearable packs"); + allowStickyItems = config.getBoolean( + "Allow Sticky Items", + "gameplay", + true, + "Allow Sticky Items potion effect on wearable packs"); backpackAbilities = config.getBoolean( "Backpack Abilities", "gameplay", diff --git a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java index 7ac2831c..fd86a329 100644 --- a/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java +++ b/src/main/java/com/darkona/adventurebackpack/handlers/PlayerEventHandler.java @@ -35,8 +35,8 @@ import com.darkona.adventurebackpack.playerProperties.BackpackProperty; import com.darkona.adventurebackpack.proxy.ServerProxy; import com.darkona.adventurebackpack.reference.BackpackTypes; -import com.darkona.adventurebackpack.util.PotionAndEnchantUtils; import com.darkona.adventurebackpack.util.LogHelper; +import com.darkona.adventurebackpack.util.PotionAndEnchantUtils; import com.darkona.adventurebackpack.util.Wearing; import cpw.mods.fml.common.eventhandler.Event; @@ -170,7 +170,8 @@ public void playerDies(LivingDeathEvent event) { player.worldObj.createExplosion(player, player.posX, player.posY, player.posZ, 4.0F, false); } - if (player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) { + if (player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory") + || PotionAndEnchantUtils.hasStickyItems(player)) { ((IBackWearableItem) props.getWearable().getItem()) .onPlayerDeath(player.worldObj, player, props.getWearable()); ServerProxy.storePlayerProps(player); diff --git a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java index 57b6e229..0bc49460 100644 --- a/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java +++ b/src/main/java/com/darkona/adventurebackpack/item/ItemAdventureBackpack.java @@ -136,6 +136,7 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla public void onPlayerDeath(World world, EntityPlayer player, ItemStack stack) { if (world.isRemote || !ConfigHandler.backpackDeathPlace || PotionAndEnchantUtils.isSoulBounded(stack) + || PotionAndEnchantUtils.hasStickyItems(player) || player.getEntityWorld().getGameRules().getGameRuleBooleanValue("keepInventory")) { return; } diff --git a/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java b/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java index 7ce2ae28..9ffbf51d 100644 --- a/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java +++ b/src/main/java/com/darkona/adventurebackpack/reference/LoadedMods.java @@ -19,6 +19,7 @@ public final class LoadedMods { public static final boolean THAUMCRAFT = registerMod("Thaumcraft"); public static final boolean WAILA = registerMod("waila"); public static final boolean HUNGEROVERHAUL = registerMod("HungerOverhaul"); + public static final boolean WITCHERY = registerMod("witchery"); public static final boolean WITCHINGGADGETS = registerMod("WitchingGadgets"); private LoadedMods() {} diff --git a/src/main/java/com/darkona/adventurebackpack/util/PotionAndEnchantUtils.java b/src/main/java/com/darkona/adventurebackpack/util/PotionAndEnchantUtils.java index 3f8f7584..89850e8f 100644 --- a/src/main/java/com/darkona/adventurebackpack/util/PotionAndEnchantUtils.java +++ b/src/main/java/com/darkona/adventurebackpack/util/PotionAndEnchantUtils.java @@ -2,7 +2,9 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; import com.darkona.adventurebackpack.config.ConfigHandler; import com.darkona.adventurebackpack.reference.LoadedMods; @@ -14,6 +16,7 @@ public final class PotionAndEnchantUtils { // -1 - enchantment not found private static final int SOUL_BOUND_ID = setSoulBoundID(); private static final int TRANSLUCENCY_ID = setTranslucencyID(); + private static final int STICKY_ITEMS_ID = setStickyItemsID(); private PotionAndEnchantUtils() {} @@ -39,6 +42,17 @@ private static int setTranslucencyID() { return -1; } + private static int setStickyItemsID() { + if (!ConfigHandler.allowStickyItems) return -3; + + if (!LoadedMods.WITCHERY) return -2; + + for (Potion potion : Potion.potionTypes) + if (potion != null && potion.getName().equals("witchery:potion.keepinventory")) return potion.getId(); + + return -1; + } + public static boolean isSoulBounded(ItemStack stack) { if (SOUL_BOUND_ID > 0) return EnchantmentHelper.getEnchantmentLevel(SOUL_BOUND_ID, stack) > 0; else return false; @@ -62,4 +76,8 @@ public static boolean isTranslucencyBook(ItemStack book) { } return false; } + + public static boolean hasStickyItems(EntityPlayer player) { + return (STICKY_ITEMS_ID > 0) && player.isPotionActive(STICKY_ITEMS_ID); + } }