Skip to content

Commit d94adc7

Browse files
committed
add quick loot button
1 parent ab1bc09 commit d94adc7

File tree

9 files changed

+232
-139
lines changed

9 files changed

+232
-139
lines changed

src/main/java/com/robertx22/mine_and_slash/capability/player/container/BackpackButton.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.robertx22.mine_and_slash.capability.player.container;
22

33
import com.robertx22.mine_and_slash.capability.player.data.Backpacks;
4-
import com.robertx22.mine_and_slash.vanilla_mc.packets.OpenBackpackPacket;
4+
import com.robertx22.mine_and_slash.vanilla_mc.packets.backpack.OpenBackpackPacket;
55
import com.robertx22.library_of_exile.main.Packets;
66
import com.robertx22.library_of_exile.utils.TextUTIL;
77
import net.minecraft.client.Minecraft;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.robertx22.mine_and_slash.capability.player.container;
2+
3+
import com.robertx22.library_of_exile.main.Packets;
4+
import com.robertx22.mine_and_slash.mmorpg.SlashRef;
5+
import com.robertx22.mine_and_slash.uncommon.localization.Gui;
6+
import com.robertx22.mine_and_slash.vanilla_mc.packets.backpack.BackPackLootMenuPacket;
7+
import net.minecraft.ChatFormatting;
8+
import net.minecraft.client.Minecraft;
9+
import net.minecraft.client.gui.GuiGraphics;
10+
import net.minecraft.client.gui.components.ImageButton;
11+
import net.minecraft.client.gui.components.Tooltip;
12+
import net.minecraft.client.gui.screens.inventory.ContainerScreen;
13+
import net.minecraft.resources.ResourceLocation;
14+
import net.minecraft.world.inventory.Slot;
15+
import net.minecraftforge.client.event.ScreenEvent;
16+
17+
public class BackpackQuickLootButton extends ImageButton {
18+
static ResourceLocation TEXTURE = SlashRef.id("textures/gui/backpack_button.png");
19+
public BackpackQuickLootButton(int pX, int pY, ContainerScreen screen) {
20+
super(pX, pY, 14, 14, 0, 0, 16, TEXTURE, 16, 32, x -> Packets.sendToServer(new BackPackLootMenuPacket()), Gui.MASTER_BACKPACK_LOOT_BUTTON.locName());
21+
this.setTooltip(Tooltip.create(Gui.MASTER_BACKPACK_LOOT_BUTTON.locName()));
22+
}
23+
24+
25+
public static void addLootButton(ScreenEvent.Init event){
26+
if (!(event instanceof ScreenEvent.Init.Post)) return;
27+
if (Minecraft.getInstance().screen instanceof ContainerScreen containerScreen){
28+
event.addListener(new BackpackQuickLootButton(containerScreen.getGuiLeft() + containerScreen.getXSize(), containerScreen.getGuiTop(), containerScreen));
29+
}
30+
}
31+
}

src/main/java/com/robertx22/mine_and_slash/mmorpg/MMORPG.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import com.robertx22.mine_and_slash.aoe_data.database.stat_effects.StatEffects;
2222
import com.robertx22.mine_and_slash.aoe_data.database.stats.Stats;
2323
import com.robertx22.mine_and_slash.aoe_data.datapacks.lang_file.CreateLangFile;
24+
import com.robertx22.mine_and_slash.capability.player.container.BackpackQuickLootButton;
25+
import com.robertx22.mine_and_slash.capability.player.container.BackpackScreen;
2426
import com.robertx22.mine_and_slash.characters.PlayerStats;
2527
import com.robertx22.mine_and_slash.config.forge.ClientConfigs;
2628
import com.robertx22.mine_and_slash.config.forge.ServerContainer;
@@ -55,6 +57,7 @@
5557
import net.minecraftforge.client.event.EntityRenderersEvent;
5658
import net.minecraftforge.client.event.RegisterClientTooltipComponentFactoriesEvent;
5759
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
60+
import net.minecraftforge.client.event.ScreenEvent;
5861
import net.minecraftforge.data.event.GatherDataEvent;
5962
import net.minecraftforge.eventbus.api.EventPriority;
6063
import net.minecraftforge.eventbus.api.IEventBus;
@@ -154,6 +157,10 @@ public void accept(ExileEvents.OnCheckIsDevToolsRunning event) {
154157
x.register(SocketTooltip.SocketComponent.class, SocketTooltip::new);
155158
});
156159

160+
ForgeEvents.registerForgeEvent(ScreenEvent.Init.class, x -> {
161+
BackpackQuickLootButton.addLootButton(x);
162+
});
163+
157164

158165
DistExecutor.runWhenOn(Dist.CLIENT, () -> () -> {
159166

src/main/java/com/robertx22/mine_and_slash/mmorpg/registers/common/C2SPacketRegister.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import com.robertx22.mine_and_slash.prophecy.AcceptProphecyAffixPacket;
1212
import com.robertx22.mine_and_slash.prophecy.AcceptProphecyPacket;
1313
import com.robertx22.mine_and_slash.vanilla_mc.packets.*;
14+
import com.robertx22.mine_and_slash.vanilla_mc.packets.backpack.BackPackLootMenuPacket;
15+
import com.robertx22.mine_and_slash.vanilla_mc.packets.backpack.OpenBackpackPacket;
1416
import com.robertx22.mine_and_slash.vanilla_mc.packets.perks.PerkChangePacket;
1517
import com.robertx22.mine_and_slash.vanilla_mc.packets.spells.TellServerToCancelSpellCast;
1618
import com.robertx22.mine_and_slash.vanilla_mc.packets.spells.TellServerToCastSpellPacket;
@@ -39,6 +41,8 @@ public static void register() {
3941
Packets.registerClientToServerPacket(MMORPG.NETWORK, new UnsummonPacket(), i++);
4042
Packets.registerClientToServerPacket(MMORPG.NETWORK, new RequestStatCalcInfoPacket(), i++);
4143
Packets.registerClientToServerPacket(MMORPG.NETWORK, new LockRecipePacket(""), i++);
44+
45+
Packets.registerClientToServerPacket(MMORPG.NETWORK, new BackPackLootMenuPacket(), i++);
4246

4347

4448
// Packets.registerClientToServerPacket(MMORPG.NETWORK, new SetupHotbarPacket(), i++);

src/main/java/com/robertx22/mine_and_slash/uncommon/localization/Gui.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public enum Gui implements IAutoLocName {
1010
TALENT_SCREEN_SEARCH_KEYWORD_GAME_CHANGER("game changer"),
1111
TALENT_SCREEN_SEARCH_KEYWORD_ALL("all"),
1212
TALENT_SCREEN_SEARCH_TIPS("Search Keywords: \n\n%1$s: show all allocated talents\n\n%2$s: show all game changer talents"),
13+
MASTER_BACKPACK_LOOT_BUTTON("Click to loot all eligible items to master backpack"),
1314
STATION_LOCK_RECIPE("Lock Recipe"),
1415
STATION_UNLOCK_RECIPE("Unlock Recipe"),
1516
STATION_START_CRAFTING("Start Crafting"),
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.robertx22.mine_and_slash.vanilla_mc.packets.backpack;
2+
3+
import com.robertx22.library_of_exile.main.MyPacket;
4+
import com.robertx22.library_of_exile.packets.ExilePacketContext;
5+
import com.robertx22.mine_and_slash.capability.player.data.Backpacks;
6+
import com.robertx22.mine_and_slash.mmorpg.SlashRef;
7+
import com.robertx22.mine_and_slash.uncommon.datasaving.Load;
8+
import net.minecraft.network.FriendlyByteBuf;
9+
import net.minecraft.resources.ResourceLocation;
10+
import net.minecraft.server.level.ServerPlayer;
11+
import net.minecraft.world.inventory.ChestMenu;
12+
import net.minecraft.world.inventory.Slot;
13+
import net.minecraftforge.client.event.sound.SoundEvent;
14+
15+
public class BackPackLootMenuPacket extends MyPacket<BackPackLootMenuPacket> {
16+
@Override
17+
public ResourceLocation getIdentifier() {
18+
return SlashRef.id("backpack_loot");
19+
}
20+
21+
@Override
22+
public void loadFromData(FriendlyByteBuf friendlyByteBuf) {
23+
24+
}
25+
26+
@Override
27+
public void saveToData(FriendlyByteBuf friendlyByteBuf) {
28+
29+
}
30+
31+
@Override
32+
public void onReceived(ExilePacketContext exilePacketContext) {
33+
if (exilePacketContext.getPlayer() instanceof ServerPlayer player) {
34+
Backpacks backpacks = Load.backpacks(player).getBackpacks();
35+
if (player.hasContainerOpen() && player.containerMenu instanceof ChestMenu chestMenu) {
36+
for (Slot slot : chestMenu.slots) {
37+
backpacks.tryAutoPickup(player, slot.getItem(), false);
38+
}
39+
}
40+
41+
}
42+
}
43+
44+
@Override
45+
public MyPacket<BackPackLootMenuPacket> newInstance() {
46+
return new BackPackLootMenuPacket();
47+
}
48+
}

src/main/java/com/robertx22/mine_and_slash/vanilla_mc/packets/OpenBackpackPacket.java renamed to src/main/java/com/robertx22/mine_and_slash/vanilla_mc/packets/backpack/OpenBackpackPacket.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.robertx22.mine_and_slash.vanilla_mc.packets;
1+
package com.robertx22.mine_and_slash.vanilla_mc.packets.backpack;
22

33
import com.robertx22.library_of_exile.main.MyPacket;
44
import com.robertx22.library_of_exile.packets.ExilePacketContext;

0 commit comments

Comments
 (0)