diff --git a/build.gradle b/build.gradle index 07ccf7e64..29ab913a4 100644 --- a/build.gradle +++ b/build.gradle @@ -73,7 +73,8 @@ legacyForge { ) } - // jvmArguments.add("-XX:+AllowEnhancedClassRedefinition") + // Enable Enhanced Class Redefinition (JBR) + jvmArguments.add("-XX:+AllowEnhancedClassRedefinition") } mods { diff --git a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/CurioSlots.java b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/CurioSlots.java deleted file mode 100644 index 18f05ff7a..000000000 --- a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/CurioSlots.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.robertx22.mine_and_slash.a_libraries.curios; - -public enum CurioSlots { - - NECKLACE(RefCurio.NECKLACE), - OMEN(RefCurio.OMEN), - RING(RefCurio.RING); - - public String name; - - CurioSlots(String name) { - this.name = name; - } - -} - - diff --git a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/CuriosSlots.java b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/CuriosSlots.java new file mode 100644 index 000000000..c34d3d1b5 --- /dev/null +++ b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/CuriosSlots.java @@ -0,0 +1,18 @@ +package com.robertx22.mine_and_slash.a_libraries.curios; + +public enum CuriosSlots { + + NECKLACE(RefCurios.NECKLACE), + OMEN(RefCurios.OMEN), + RING(RefCurios.RING), + MASTER_BAG(RefCurios.MASTER_BAG); + + public String name; + + CuriosSlots(String name) { + this.name = name; + } + +} + + diff --git a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/MyCurioUtils.java b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/MyCuriosUtils.java similarity index 98% rename from src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/MyCurioUtils.java rename to src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/MyCuriosUtils.java index f4441f6b8..e962dbfe6 100644 --- a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/MyCurioUtils.java +++ b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/MyCuriosUtils.java @@ -12,7 +12,7 @@ import java.util.Optional; import java.util.stream.Collectors; -public class MyCurioUtils { +public class MyCuriosUtils { public static List SLOTS = Arrays.asList("ring", "necklace", "omen", "backpack"); diff --git a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/RefCurio.java b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/RefCurios.java similarity index 71% rename from src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/RefCurio.java rename to src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/RefCurios.java index c2b6e3fbb..5a0198d45 100644 --- a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/RefCurio.java +++ b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/RefCurios.java @@ -1,10 +1,11 @@ package com.robertx22.mine_and_slash.a_libraries.curios; -public class RefCurio { +public class RefCurios { public static final String RING = "ring"; public static final String OMEN = "omen"; public static final String NECKLACE = "necklace"; + public static final String MASTER_BAG = "master_bag"; } diff --git a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/interfaces/INecklace.java b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/interfaces/INecklace.java index bf3b9031b..028fdb3ee 100644 --- a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/interfaces/INecklace.java +++ b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/interfaces/INecklace.java @@ -1,12 +1,12 @@ package com.robertx22.mine_and_slash.a_libraries.curios.interfaces; -import com.robertx22.mine_and_slash.a_libraries.curios.CurioSlots; +import com.robertx22.mine_and_slash.a_libraries.curios.CuriosSlots; public interface INecklace extends ICuriosType { @Override public default String curioTypeName() { - return CurioSlots.NECKLACE.name; + return CuriosSlots.NECKLACE.name; } } diff --git a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/interfaces/IOmen.java b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/interfaces/IOmen.java index 0c0026159..4aadb1282 100644 --- a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/interfaces/IOmen.java +++ b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/interfaces/IOmen.java @@ -1,10 +1,10 @@ package com.robertx22.mine_and_slash.a_libraries.curios.interfaces; -import com.robertx22.mine_and_slash.a_libraries.curios.CurioSlots; +import com.robertx22.mine_and_slash.a_libraries.curios.CuriosSlots; public interface IOmen extends ICuriosType { @Override public default String curioTypeName() { - return CurioSlots.OMEN.name; + return CuriosSlots.OMEN.name; } } diff --git a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/interfaces/IRing.java b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/interfaces/IRing.java index b8f22d1e7..f1a10a1d6 100644 --- a/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/interfaces/IRing.java +++ b/src/main/java/com/robertx22/mine_and_slash/a_libraries/curios/interfaces/IRing.java @@ -1,10 +1,10 @@ package com.robertx22.mine_and_slash.a_libraries.curios.interfaces; -import com.robertx22.mine_and_slash.a_libraries.curios.CurioSlots; +import com.robertx22.mine_and_slash.a_libraries.curios.CuriosSlots; public interface IRing extends ICuriosType { @Override public default String curioTypeName() { - return CurioSlots.RING.name; + return CuriosSlots.RING.name; } } diff --git a/src/main/java/com/robertx22/mine_and_slash/capability/player/PlayerData.java b/src/main/java/com/robertx22/mine_and_slash/capability/player/PlayerData.java index 57ade3bc5..b53062431 100644 --- a/src/main/java/com/robertx22/mine_and_slash/capability/player/PlayerData.java +++ b/src/main/java/com/robertx22/mine_and_slash/capability/player/PlayerData.java @@ -4,8 +4,8 @@ import com.robertx22.library_of_exile.main.Packets; import com.robertx22.library_of_exile.packets.SyncPlayerCapToClient; import com.robertx22.library_of_exile.utils.LoadSave; -import com.robertx22.mine_and_slash.a_libraries.curios.MyCurioUtils; -import com.robertx22.mine_and_slash.a_libraries.curios.RefCurio; +import com.robertx22.mine_and_slash.a_libraries.curios.MyCuriosUtils; +import com.robertx22.mine_and_slash.a_libraries.curios.RefCurios; import com.robertx22.mine_and_slash.capability.DirtySync; import com.robertx22.mine_and_slash.capability.entity.SummonedData; import com.robertx22.mine_and_slash.capability.player.data.*; @@ -233,7 +233,7 @@ private void syncData() { public void recalcOmensFilled() { try { omensFilled = 0; - ItemStack stack = MyCurioUtils.get(RefCurio.OMEN, player, 0); + ItemStack stack = MyCuriosUtils.get(RefCurios.OMEN, player, 0); if (StackSaving.OMEN.has(stack)) { var omen = StackSaving.OMEN.loadFrom(stack); this.omensFilled = omen.calcPiecesEquipped(player); @@ -245,7 +245,7 @@ public void recalcOmensFilled() { public OmenData getOmen() { try { - ItemStack stack = MyCurioUtils.get(RefCurio.OMEN, player, 0); + ItemStack stack = MyCuriosUtils.get(RefCurios.OMEN, player, 0); if (StackSaving.OMEN.has(stack)) { var omen = StackSaving.OMEN.loadFrom(stack); return omen; diff --git a/src/main/java/com/robertx22/mine_and_slash/capability/player/data/Backpacks.java b/src/main/java/com/robertx22/mine_and_slash/capability/player/data/Backpacks.java index f6d6b6175..c796a2b3a 100644 --- a/src/main/java/com/robertx22/mine_and_slash/capability/player/data/Backpacks.java +++ b/src/main/java/com/robertx22/mine_and_slash/capability/player/data/Backpacks.java @@ -2,6 +2,8 @@ import com.robertx22.addons.orbs_of_crafting.currency.IItemAsCurrency; import com.robertx22.library_of_exile.utils.SoundUtils; +import com.robertx22.mine_and_slash.a_libraries.curios.CuriosSlots; +import com.robertx22.mine_and_slash.a_libraries.curios.MyCuriosUtils; import com.robertx22.mine_and_slash.capability.player.container.BackpackMenu; import com.robertx22.mine_and_slash.capability.player.helper.BackpackInventory; import com.robertx22.mine_and_slash.mmorpg.SlashRef; @@ -99,7 +101,7 @@ public BackpackInventory getInv(BackpackType type) { public boolean tryAutoPickup(Player p, ItemStack stack, boolean shouldPlaySound) { - if (p.getInventory().countItem(SlashItems.MASTER_BAG.get()) < 1) { + if (p.getInventory().countItem(SlashItems.MASTER_BAG.get()) < 1 && !hasCuriosBackpack(p)) { return false; } boolean result = false; @@ -121,6 +123,11 @@ public boolean tryAutoPickup(Player p, ItemStack stack, boolean shouldPlaySound) } + private boolean hasCuriosBackpack(Player p) { + var backpackItem = MyCuriosUtils.get(CuriosSlots.MASTER_BAG.name, p, 0); + return !backpackItem.isEmpty(); + } + public boolean tryAutoPickup(Player p, ItemStack stack){ return tryAutoPickup(p, stack, true); } @@ -128,11 +135,6 @@ public boolean tryAutoPickup(Player p, ItemStack stack){ public void openBackpack(BackpackType type, Player p, int rows) { if (!p.level().isClientSide) { - - if (!p.getMainHandItem().is(SlashItems.MASTER_BAG.get())) { - return; - } - BackpackInventory inv = getInv(type); //inv.throwOutBlockedSlotItems(rows * 9); p.openMenu(new SimpleMenuProvider((i, playerInventory, playerEntity) -> { diff --git a/src/main/java/com/robertx22/mine_and_slash/database/data/gear_slots/GearSlot.java b/src/main/java/com/robertx22/mine_and_slash/database/data/gear_slots/GearSlot.java index b1b68f2e7..c19089351 100644 --- a/src/main/java/com/robertx22/mine_and_slash/database/data/gear_slots/GearSlot.java +++ b/src/main/java/com/robertx22/mine_and_slash/database/data/gear_slots/GearSlot.java @@ -3,7 +3,7 @@ import com.robertx22.library_of_exile.registry.ExileRegistryType; import com.robertx22.library_of_exile.registry.IAutoGson; import com.robertx22.library_of_exile.registry.JsonExileRegistry; -import com.robertx22.mine_and_slash.a_libraries.curios.RefCurio; +import com.robertx22.mine_and_slash.a_libraries.curios.RefCurios; import com.robertx22.mine_and_slash.aoe_data.database.gear_slots.GearSlots; import com.robertx22.mine_and_slash.config.forge.ServerContainer; import com.robertx22.mine_and_slash.database.data.gear_types.bases.SlotFamily; @@ -164,11 +164,11 @@ public static boolean isItemOfThisSlot(GearSlot slot, ItemStack stack) { } else if (id.equals(GearSlots.NECKLACE)) { bool = CuriosApi.getCuriosHelper() .getCurioTags(item) - .contains(RefCurio.NECKLACE); + .contains(RefCurios.NECKLACE); } else if (id.equals(GearSlots.RING)) { bool = CuriosApi.getCuriosHelper() .getCurioTags(item) - .contains(RefCurio.RING); + .contains(RefCurios.RING); } } diff --git a/src/main/java/com/robertx22/mine_and_slash/event_hooks/damage_hooks/LivingHurtUtils.java b/src/main/java/com/robertx22/mine_and_slash/event_hooks/damage_hooks/LivingHurtUtils.java index ed82ca419..1b54fd89b 100644 --- a/src/main/java/com/robertx22/mine_and_slash/event_hooks/damage_hooks/LivingHurtUtils.java +++ b/src/main/java/com/robertx22/mine_and_slash/event_hooks/damage_hooks/LivingHurtUtils.java @@ -1,6 +1,6 @@ package com.robertx22.mine_and_slash.event_hooks.damage_hooks; -import com.robertx22.mine_and_slash.a_libraries.curios.MyCurioUtils; +import com.robertx22.mine_and_slash.a_libraries.curios.MyCuriosUtils; import com.robertx22.mine_and_slash.event_hooks.damage_hooks.util.AttackInformation; import com.robertx22.mine_and_slash.event_hooks.damage_hooks.util.DmgSourceUtils; import com.robertx22.mine_and_slash.saveclasses.item_classes.GearItemData; @@ -29,7 +29,7 @@ public static void damageCurioItems(LivingEntity en, float dmg) { Player player = (Player) en; - List curios = MyCurioUtils.getAllSlots(player); + List curios = MyCuriosUtils.getAllSlots(player); curios.forEach(x -> x.hurtAndBreak(getItemDamage(dmg), player, (entity) -> { entity.broadcastBreakEvent(EquipmentSlot.MAINHAND); diff --git a/src/main/java/com/robertx22/mine_and_slash/event_hooks/my_events/CachedEntityStats.java b/src/main/java/com/robertx22/mine_and_slash/event_hooks/my_events/CachedEntityStats.java index 1a6174dc0..62b1ee64e 100644 --- a/src/main/java/com/robertx22/mine_and_slash/event_hooks/my_events/CachedEntityStats.java +++ b/src/main/java/com/robertx22/mine_and_slash/event_hooks/my_events/CachedEntityStats.java @@ -1,6 +1,6 @@ package com.robertx22.mine_and_slash.event_hooks.my_events; -import com.robertx22.mine_and_slash.a_libraries.curios.MyCurioUtils; +import com.robertx22.mine_and_slash.a_libraries.curios.MyCuriosUtils; import com.robertx22.mine_and_slash.capability.DirtySync; import com.robertx22.mine_and_slash.capability.entity.EntityData; import com.robertx22.mine_and_slash.database.data.omen.OmenSet; @@ -178,7 +178,7 @@ private void recalcGears() { } if (entity instanceof Player) { - MyCurioUtils.getAllSlots((Player) entity) + MyCuriosUtils.getAllSlots((Player) entity) .forEach(x -> { GearData data = new GearData(x, null, unitdata.get()); list.add(data); diff --git a/src/main/java/com/robertx22/mine_and_slash/event_hooks/ontick/UnequipGear.java b/src/main/java/com/robertx22/mine_and_slash/event_hooks/ontick/UnequipGear.java index a412052eb..8903b2235 100644 --- a/src/main/java/com/robertx22/mine_and_slash/event_hooks/ontick/UnequipGear.java +++ b/src/main/java/com/robertx22/mine_and_slash/event_hooks/ontick/UnequipGear.java @@ -1,6 +1,6 @@ package com.robertx22.mine_and_slash.event_hooks.ontick; -import com.robertx22.mine_and_slash.a_libraries.curios.MyCurioUtils; +import com.robertx22.mine_and_slash.a_libraries.curios.MyCuriosUtils; import com.robertx22.mine_and_slash.database.data.omen.OmenData; import com.robertx22.mine_and_slash.saveclasses.item_classes.GearItemData; import com.robertx22.mine_and_slash.uncommon.datasaving.Load; @@ -69,7 +69,7 @@ public static void check(Player player) { } } - for (ICurioStacksHandler handler : MyCurioUtils.getHandlers(player)) { + for (ICurioStacksHandler handler : MyCuriosUtils.getHandlers(player)) { for (int i = 0; i < handler .getSlots(); i++) { diff --git a/src/main/java/com/robertx22/mine_and_slash/event_hooks/player/OnKeyPress.java b/src/main/java/com/robertx22/mine_and_slash/event_hooks/player/OnKeyPress.java index 13ac2392e..c44d41f57 100644 --- a/src/main/java/com/robertx22/mine_and_slash/event_hooks/player/OnKeyPress.java +++ b/src/main/java/com/robertx22/mine_and_slash/event_hooks/player/OnKeyPress.java @@ -14,6 +14,7 @@ import com.robertx22.mine_and_slash.vanilla_mc.packets.OpenEntityStatsRequestPacket; import com.robertx22.mine_and_slash.vanilla_mc.packets.QuickUsePotionPacket; import com.robertx22.mine_and_slash.vanilla_mc.packets.UnsummonPacket; +import com.robertx22.mine_and_slash.vanilla_mc.packets.backpack.OpenCuriosBackpackPacket; import com.robertx22.mine_and_slash.vanilla_mc.packets.spells.TellServerToCastSpellPacket; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.Entity; @@ -21,6 +22,8 @@ import net.minecraft.world.entity.player.Player; import net.minecraftforge.client.settings.KeyModifier; +import java.util.Stack; + public class OnKeyPress { public static int cooldown = 0; @@ -50,21 +53,30 @@ public static void onEndTick(Minecraft mc) { return; } - if (KeybindsRegister.UNSUMMON.isDown()) { - Packets.sendToServer(new UnsummonPacket()); - cooldown = 3; - } else if (KeybindsRegister.HUB_SCREEN_KEY.isDown()) { + if (KeybindsRegister.HUB_SCREEN_KEY.isDown()) { mc.setScreen(new MainHubScreen()); cooldown = 10; - } else if (KeybindsRegister.HOTBAR_SWAP.isDown()) { + } else if (KeybindsRegister.OPEN_MASTER_BACKPACK.isDown()) { + Packets.sendToServer(new OpenCuriosBackpackPacket()); + cooldown = 10; + } else if (KeybindsRegister.SHOW_ENTITY_STATS.isDown()) { + if (showEntityStats(mc)) { + cooldown = 10; + } + } + + if (KeybindsRegister.QUICK_DRINK_POTION.consumeClick()) { + Packets.sendToServer(new QuickUsePotionPacket()); + } + + if (KeybindsRegister.HOTBAR_SWAP.isDown()) { SpellKeybind.IS_ON_SECONd_HOTBAR = !SpellKeybind.IS_ON_SECONd_HOTBAR; cooldown = 5; - } else if (KeybindsRegister.QUICK_DRINK_POTION.consumeClick()) { - Packets.sendToServer(new QuickUsePotionPacket()); - } else if (KeybindsRegister.SHOW_ENTITY_STATS.isDown()) { - if (showEntityStats(mc)) { - cooldown = 10; - } + } + + if (KeybindsRegister.UNSUMMON.isDown()) { + Packets.sendToServer(new UnsummonPacket()); + cooldown = 3; } } diff --git a/src/main/java/com/robertx22/mine_and_slash/mmorpg/MMORPG.java b/src/main/java/com/robertx22/mine_and_slash/mmorpg/MMORPG.java index 45c498359..dce53107d 100644 --- a/src/main/java/com/robertx22/mine_and_slash/mmorpg/MMORPG.java +++ b/src/main/java/com/robertx22/mine_and_slash/mmorpg/MMORPG.java @@ -15,7 +15,7 @@ import com.robertx22.library_of_exile.registry.util.ExileRegistryUtil; import com.robertx22.library_of_exile.utils.Watch; import com.robertx22.mine_and_slash.a_libraries.curios.CurioEvents; -import com.robertx22.mine_and_slash.a_libraries.curios.RefCurio; +import com.robertx22.mine_and_slash.a_libraries.curios.RefCurios; import com.robertx22.mine_and_slash.a_libraries.neat.NeatForgeConfig; import com.robertx22.mine_and_slash.aoe_data.database.stat_conditions.StatConditions; import com.robertx22.mine_and_slash.aoe_data.database.stat_effects.StatEffects; @@ -241,9 +241,9 @@ public void accept(GatherDataEvent x) { public void interMod(InterModEnqueueEvent event) { - InterModComms.sendTo("curios", SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder(RefCurio.RING).size(2).build()); - InterModComms.sendTo("curios", SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder(RefCurio.NECKLACE).size(1).build()); - InterModComms.sendTo("curios", SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder(RefCurio.OMEN).size(1).build()); + InterModComms.sendTo("curios", SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder(RefCurios.RING).size(2).build()); + InterModComms.sendTo("curios", SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder(RefCurios.NECKLACE).size(1).build()); + InterModComms.sendTo("curios", SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder(RefCurios.OMEN).size(1).build()); ModLoadingContext.get() .registerConfig(ModConfig.Type.SERVER, CompatConfig.spec, NeatForgeConfig.defaultConfigName(ModConfig.Type.SERVER, "mine_and_slash_compatibility")); diff --git a/src/main/java/com/robertx22/mine_and_slash/mmorpg/registers/client/KeybindsRegister.java b/src/main/java/com/robertx22/mine_and_slash/mmorpg/registers/client/KeybindsRegister.java index 055da868f..884591ee6 100644 --- a/src/main/java/com/robertx22/mine_and_slash/mmorpg/registers/client/KeybindsRegister.java +++ b/src/main/java/com/robertx22/mine_and_slash/mmorpg/registers/client/KeybindsRegister.java @@ -19,10 +19,12 @@ public class KeybindsRegister { public static KeyMapping HOTBAR_SWAP = new KeyMapping(prefix + "hotbar_swap", GLFW.GLFW_KEY_F1, CATEGORY); - public static KeyMapping QUICK_DRINK_POTION = new KeyMapping(prefix + "quick_drink_potion", KeyConflictContext.IN_GAME, InputConstants.Type.KEYSYM,GLFW.GLFW_KEY_P, CATEGORY); + public static KeyMapping QUICK_DRINK_POTION = new KeyMapping(prefix + "quick_drink_potion", KeyConflictContext.IN_GAME, InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_P, CATEGORY); public static KeyMapping SHOW_ENTITY_STATS = new KeyMapping(prefix + "show_entity_stats", KeyConflictContext.IN_GAME, InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_EQUAL, CATEGORY); + public static KeyMapping OPEN_MASTER_BACKPACK = new KeyMapping(prefix + "open_master_backpack", GLFW.GLFW_KEY_B, CATEGORY); + public static SpellKeybind SPELL_HOTBAR_1 = new SpellKeybind(1, GLFW.GLFW_KEY_R, null, true); public static SpellKeybind SPELL_HOTBAR_2 = new SpellKeybind(2, GLFW.GLFW_KEY_V, null, true); public static SpellKeybind SPELL_HOTBAR_3 = new SpellKeybind(3, GLFW.GLFW_KEY_C, null, true); @@ -43,6 +45,7 @@ public static void register(RegisterKeyMappingsEvent x) { x.register(HOTBAR_SWAP); x.register(QUICK_DRINK_POTION); x.register(SHOW_ENTITY_STATS); + x.register(OPEN_MASTER_BACKPACK); for (SpellKeybind k : SpellKeybind.ALL) { x.register(k.key); } diff --git a/src/main/java/com/robertx22/mine_and_slash/mmorpg/registers/common/C2SPacketRegister.java b/src/main/java/com/robertx22/mine_and_slash/mmorpg/registers/common/C2SPacketRegister.java index 6f455ba82..8c66cb9b9 100644 --- a/src/main/java/com/robertx22/mine_and_slash/mmorpg/registers/common/C2SPacketRegister.java +++ b/src/main/java/com/robertx22/mine_and_slash/mmorpg/registers/common/C2SPacketRegister.java @@ -13,6 +13,7 @@ import com.robertx22.mine_and_slash.vanilla_mc.packets.*; import com.robertx22.mine_and_slash.vanilla_mc.packets.backpack.BackPackLootMenuPacket; import com.robertx22.mine_and_slash.vanilla_mc.packets.backpack.OpenBackpackPacket; +import com.robertx22.mine_and_slash.vanilla_mc.packets.backpack.OpenCuriosBackpackPacket; import com.robertx22.mine_and_slash.vanilla_mc.packets.perks.PerkChangePacket; import com.robertx22.mine_and_slash.vanilla_mc.packets.spells.TellServerToCancelSpellCast; import com.robertx22.mine_and_slash.vanilla_mc.packets.spells.TellServerToCastSpellPacket; @@ -45,6 +46,7 @@ public static void register() { Packets.registerClientToServerPacket(MMORPG.NETWORK, new BackPackLootMenuPacket(), i++); Packets.registerClientToServerPacket(MMORPG.NETWORK, new QuickUsePotionPacket(), i++); Packets.registerClientToServerPacket(MMORPG.NETWORK, new OpenEntityStatsRequestPacket(), i++); + Packets.registerClientToServerPacket(MMORPG.NETWORK, new OpenCuriosBackpackPacket(), i++); // Packets.registerClientToServerPacket(MMORPG.NETWORK, new SetupHotbarPacket(), i++); diff --git a/src/main/java/com/robertx22/mine_and_slash/vanilla_mc/packets/backpack/OpenCuriosBackpackPacket.java b/src/main/java/com/robertx22/mine_and_slash/vanilla_mc/packets/backpack/OpenCuriosBackpackPacket.java new file mode 100644 index 000000000..118bab9fd --- /dev/null +++ b/src/main/java/com/robertx22/mine_and_slash/vanilla_mc/packets/backpack/OpenCuriosBackpackPacket.java @@ -0,0 +1,49 @@ +package com.robertx22.mine_and_slash.vanilla_mc.packets.backpack; + +import com.robertx22.library_of_exile.main.MyPacket; +import com.robertx22.library_of_exile.packets.ExilePacketContext; +import com.robertx22.mine_and_slash.a_libraries.curios.CuriosSlots; +import com.robertx22.mine_and_slash.a_libraries.curios.MyCuriosUtils; +import com.robertx22.mine_and_slash.capability.player.BackpackItem; +import com.robertx22.mine_and_slash.capability.player.data.Backpacks; +import com.robertx22.mine_and_slash.mmorpg.SlashRef; +import com.robertx22.mine_and_slash.uncommon.datasaving.Load; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; + +public class OpenCuriosBackpackPacket extends MyPacket { + + public OpenCuriosBackpackPacket() {} + + + @Override + public ResourceLocation getIdentifier() { + return SlashRef.id("open_curio_backpack"); + } + + @Override + public void loadFromData(FriendlyByteBuf buf) {} + + @Override + public void saveToData(FriendlyByteBuf buf) {} + + @Override + public void onReceived(ExilePacketContext ctx) { + Player player = ctx.getPlayer(); + var backpackItem = MyCuriosUtils.get(CuriosSlots.MASTER_BAG.name, player, 0); + if (backpackItem.isEmpty()) { + return; + } + + if (backpackItem.getItem() instanceof BackpackItem i) { + var rows = i.getSlots() / 9; + Load.backpacks(ctx.getPlayer()).getBackpacks().openBackpack(Backpacks.BackpackType.GEARS, ctx.getPlayer(), rows); + } + } + + @Override + public MyPacket newInstance() { + return new OpenCuriosBackpackPacket(); + } +} diff --git a/src/main/resources/assets/mmorpg/textures/slot/empty_master_bag_slot.png b/src/main/resources/assets/mmorpg/textures/slot/empty_master_bag_slot.png new file mode 100644 index 000000000..048ce98ff Binary files /dev/null and b/src/main/resources/assets/mmorpg/textures/slot/empty_master_bag_slot.png differ diff --git a/src/main/resources/data/curios/tags/items/master_bag.json b/src/main/resources/data/curios/tags/items/master_bag.json new file mode 100644 index 000000000..44af0f557 --- /dev/null +++ b/src/main/resources/data/curios/tags/items/master_bag.json @@ -0,0 +1,4 @@ +{ + "replace": "false", + "values": ["mmorpg:master_bag"] +} \ No newline at end of file diff --git a/src/main/resources/data/mmorpg/curios/entities/entities.json b/src/main/resources/data/mmorpg/curios/entities/entities.json new file mode 100644 index 000000000..fe676dde7 --- /dev/null +++ b/src/main/resources/data/mmorpg/curios/entities/entities.json @@ -0,0 +1,8 @@ +{ + "entities": [ + "minecraft:player" + ], + "slots": [ + "master_bag" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/mmorpg/curios/slots/master_bag.json b/src/main/resources/data/mmorpg/curios/slots/master_bag.json new file mode 100644 index 000000000..411110357 --- /dev/null +++ b/src/main/resources/data/mmorpg/curios/slots/master_bag.json @@ -0,0 +1,4 @@ +{ + "size": 1, + "icon": "mmorpg:slot/empty_master_bag_slot" +} \ No newline at end of file