Skip to content

Commit 70aa1e0

Browse files
committed
Refactor vault screens
This has had the unfortunate consequence of bringing back the old vault bug... :IIIIII
1 parent 85a16b8 commit 70aa1e0

File tree

9 files changed

+30
-177
lines changed

9 files changed

+30
-177
lines changed

src/main/java/dev/frydae/emcutils/EmpireMinecraftUtilities.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,8 @@
2626
package dev.frydae.emcutils;
2727

2828
import dev.frydae.emcutils.features.UsableItems;
29-
import dev.frydae.emcutils.features.VaultButtons;
29+
import dev.frydae.emcutils.features.VaultScreen;
3030
import dev.frydae.emcutils.features.VoxelMapIntegration;
31-
import dev.frydae.emcutils.features.vaultButtons.VaultScreen;
3231
import dev.frydae.emcutils.listeners.ChatListener;
3332
import dev.frydae.emcutils.listeners.CommandListener;
3433
import dev.frydae.emcutils.listeners.ServerListener;
@@ -78,7 +77,7 @@ public void onInitializeClient() {
7877

7978
Util.runResidenceCollector();
8079

81-
HandledScreens.register(VaultButtons.GENERIC_9X7, VaultScreen::new);
80+
HandledScreens.register(VaultScreen.GENERIC_9X7, VaultScreen::new);
8281

8382
Util.getOnJoinCommandQueue();
8483
if (FabricLoader.getInstance().isModLoaded("voxelmap")) Util.hasVoxelMap();

src/main/java/dev/frydae/emcutils/features/VaultButtons.java

Lines changed: 0 additions & 53 deletions
This file was deleted.

src/main/java/dev/frydae/emcutils/features/vaultButtons/VaultScreen.java renamed to src/main/java/dev/frydae/emcutils/features/VaultScreen.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* SOFTWARE.
2424
*/
2525

26-
package dev.frydae.emcutils.features.vaultButtons;
26+
package dev.frydae.emcutils.features;
2727

2828
import com.mojang.authlib.GameProfile;
2929
import com.mojang.authlib.properties.Property;
@@ -41,6 +41,8 @@
4141
import net.minecraft.item.Items;
4242
import net.minecraft.nbt.NbtCompound;
4343
import net.minecraft.nbt.NbtHelper;
44+
import net.minecraft.screen.GenericContainerScreenHandler;
45+
import net.minecraft.screen.ScreenHandlerType;
4446
import net.minecraft.sound.SoundEvents;
4547
import net.minecraft.text.LiteralText;
4648
import net.minecraft.text.Style;
@@ -51,13 +53,14 @@
5153
import org.apache.commons.lang3.math.NumberUtils;
5254

5355
@SuppressWarnings("SpellCheckingInspection")
54-
public class VaultScreen extends HandledScreen<VaultScreenHandler> implements ScreenHandlerProvider<VaultScreenHandler> {
56+
public class VaultScreen extends HandledScreen<GenericContainerScreenHandler> implements ScreenHandlerProvider<GenericContainerScreenHandler> {
57+
public static final ScreenHandlerType<GenericContainerScreenHandler> GENERIC_9X7 = ScreenHandlerType.register("generic_9x7", CreateGeneric9x7::createGeneric9x7);
5558
private static final Identifier TEXTURE = new Identifier(EmpireMinecraftUtilities.MODID, Config.returnVaultScreenOption());
5659
private final int vaultPage;
5760
private final int[] slotOffsets = {8, 26, 44, 62, 80, 98, 116, 134, 152};
5861
private boolean shouldCallClose = true;
5962

60-
public VaultScreen(VaultScreenHandler handler, PlayerInventory inventory, Text title) {
63+
public VaultScreen(GenericContainerScreenHandler handler, PlayerInventory inventory, Text title) {
6164
super(handler, inventory, title);
6265
super.init(MinecraftClient.getInstance(), MinecraftClient.getInstance().getWindow().getScaledWidth(), MinecraftClient.getInstance().getWindow().getScaledHeight());
6366
this.passEvents = false;
@@ -72,6 +75,12 @@ public VaultScreen(VaultScreenHandler handler, PlayerInventory inventory, Text t
7275
}
7376
}
7477

78+
private static final class CreateGeneric9x7 {
79+
static GenericContainerScreenHandler createGeneric9x7(int syncId, PlayerInventory playerInventory) {
80+
return new GenericContainerScreenHandler(GENERIC_9X7, syncId, playerInventory, 6);
81+
}
82+
}
83+
7584
/**
7685
* @param amount the amount of pages to go back
7786
* @return an {@link ItemStack player head} with a left arrow

src/main/java/dev/frydae/emcutils/features/vaultButtons/VaultScreenHandler.java

Lines changed: 0 additions & 109 deletions
This file was deleted.

src/main/java/dev/frydae/emcutils/mixins/ClientPlayNetworkHandlerMixin.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,17 @@
2626
package dev.frydae.emcutils.mixins;
2727

2828
import dev.frydae.emcutils.EmpireMinecraftUtilities;
29-
import dev.frydae.emcutils.interfaces.ChatCallback;
3029
import dev.frydae.emcutils.features.ChatChannels;
31-
import dev.frydae.emcutils.features.VaultButtons;
30+
import dev.frydae.emcutils.features.VaultScreen;
31+
import dev.frydae.emcutils.interfaces.ChatCallback;
3232
import dev.frydae.emcutils.utils.Util;
3333
import net.minecraft.client.MinecraftClient;
34+
import net.minecraft.client.gui.screen.ingame.HandledScreens;
3435
import net.minecraft.client.network.ClientPlayNetworkHandler;
3536
import net.minecraft.network.packet.s2c.play.GameJoinS2CPacket;
3637
import net.minecraft.network.packet.s2c.play.GameMessageS2CPacket;
3738
import net.minecraft.network.packet.s2c.play.OpenScreenS2CPacket;
39+
import net.minecraft.screen.ScreenHandlerType;
3840
import net.minecraft.util.ActionResult;
3941
import org.spongepowered.asm.mixin.Mixin;
4042
import org.spongepowered.asm.mixin.injection.At;
@@ -71,6 +73,11 @@ public void onGameJoin(GameJoinS2CPacket packet, CallbackInfo info) {
7173

7274
@Inject(at = @At("HEAD"), method = "onOpenScreen", cancellable = true)
7375
public void onOpenScreen(OpenScreenS2CPacket packet, CallbackInfo ci) {
74-
VaultButtons.handleScreenOpen(packet, ci);
76+
if (Util.isOnEMC) {
77+
if (!packet.getName().getString().startsWith("Page: ")) return;
78+
if (packet.getScreenHandlerType() != ScreenHandlerType.GENERIC_9X6) return;
79+
HandledScreens.open(VaultScreen.GENERIC_9X7, MinecraftClient.getInstance(), packet.getSyncId(), packet.getName());
80+
ci.cancel();
81+
}
7582
}
7683
}

src/main/java/dev/frydae/emcutils/mixins/MinecraftClientMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
package dev.frydae.emcutils.mixins;
2727

28-
import dev.frydae.emcutils.features.vaultButtons.VaultScreen;
28+
import dev.frydae.emcutils.features.VaultScreen;
2929
import net.minecraft.client.MinecraftClient;
3030
import net.minecraft.client.gui.screen.Screen;
3131
import net.minecraft.client.option.KeyBinding;

src/main/java/dev/frydae/emcutils/mixins/easierChests/HandledScreensMixin.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
package dev.frydae.emcutils.mixins.easierChests;
2727

2828
import de.guntram.mcmod.easierchests.ExtendedGuiChest;
29-
import dev.frydae.emcutils.features.VaultButtons;
29+
import dev.frydae.emcutils.features.VaultScreen;
3030
import net.minecraft.client.MinecraftClient;
3131
import net.minecraft.client.gui.screen.ingame.HandledScreens;
3232
import net.minecraft.screen.GenericContainerScreenHandler;
@@ -43,8 +43,7 @@
4343
public abstract class HandledScreensMixin {
4444
@Inject(method = "open", at = @At("HEAD"), cancellable = true)
4545
private static void checkVaultScreen(ScreenHandlerType type, MinecraftClient client, int any, Text component, CallbackInfo ci) {
46-
if (type == VaultButtons.GENERIC_9X7) {
47-
assert client.player != null;
46+
if (type == VaultScreen.GENERIC_9X7) {
4847
GenericContainerScreenHandler container = (GenericContainerScreenHandler) type.create(any, client.player.getInventory());
4948
ExtendedGuiChest screen = new ExtendedGuiChest(container, client.player.getInventory(), component, container.getRows());
5049
client.player.currentScreenHandler = container;

src/main/resources/emcutils.tsv

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ accessible class net/minecraft/client/gui/screen/ingame/HandledScreens$Provider
66
extendable method net/minecraft/screen/ScreenHandlerType <init> (Lnet/minecraft/screen/ScreenHandlerType$Factory;)V
77
accessible method net/minecraft/screen/ScreenHandlerType register (Ljava/lang/String;Lnet/minecraft/screen/ScreenHandlerType$Factory;)Lnet/minecraft/screen/ScreenHandlerType;
88
accessible method net/minecraft/client/gui/screen/ingame/HandledScreens register (Lnet/minecraft/screen/ScreenHandlerType;Lnet/minecraft/client/gui/screen/ingame/HandledScreens$Provider;)V
9-
accessible method net/minecraft/client/gui/screen/ingame/HandledScreen drawItem (Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V
9+
accessible method net/minecraft/client/gui/screen/ingame/HandledScreen drawItem (Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V
10+
accessible method net/minecraft/screen/GenericContainerScreenHandler <init> (Lnet/minecraft/screen/ScreenHandlerType;ILnet/minecraft/entity/player/PlayerInventory;I)V

src/main/resources/fabric.mod.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"schemaVersion": 1,
33
"id": "emcutils",
4-
"version": "2.3.1",
4+
"version": "2.3.1-alpha.build.10",
55
"name": "Empire Minecraft Utilities",
66
"description": "A collection of various utilities for the Empire Minecraft server.",
77
"authors": [

0 commit comments

Comments
 (0)