From 7a7cfe40742719d872765f45d5d64faaa083b5ef Mon Sep 17 00:00:00 2001 From: tr7zw Date: Sun, 19 Apr 2026 20:43:03 +0200 Subject: [PATCH 1/7] Extract networking/event logic to TRansition, remove 4 mixins --- .../dev/tr7zw/itemswapper/ItemSwapperMod.java | 82 ++++------ .../itemswapper/ItemSwapperSharedMod.java | 4 +- .../accessor/CustomPayloadLoader.java | 12 +- .../java/dev/tr7zw/itemswapper/api/Event.java | 11 -- .../tr7zw/itemswapper/api/EventFactory.java | 38 ----- .../api/client/ItemSwapperClientAPI.java | 3 +- .../ControlifyItemswapperEntrypoint.java | 16 +- .../compat/MidnightControllsSupport.java | 36 ++--- .../itemswapper/gui/CopyToClipboard.java | 14 +- .../manager/BlockTextureManager.java | 12 +- .../manager/SwapperResourceLoader.java | 4 +- .../manager/shortcuts/RestockShortcut.java | 5 +- .../mixin/AbstractContainerScreenMixin.java | 4 +- .../mixin/ClientPacketListenerMixin.java | 56 ------- .../ClientboundCustomPayloadPacketMixin.java | 74 --------- .../mixin/ContainerScreenMixin.java | 4 +- .../mixin/InstrumentItemMixin.java | 30 ++-- .../mixin/KeyboardHandlerMixin.java | 28 ++-- .../itemswapper/mixin/MinecraftMixin.java | 18 +-- .../itemswapper/mixin/PlayerListMixin.java | 9 +- .../ServerGamePacketListenerImplMixin.java | 94 ----------- .../ServerboundCustomPayloadPacketMixin.java | 73 --------- .../mixin/SmithingTemplateItemMixin.java | 8 +- .../itemswapper/overlay/ItemListOverlay.java | 43 ++--- .../overlay/ItemSwapperUIAbstractInput.java | 4 +- .../overlay/SwitchItemOverlay.java | 20 +-- .../overlay/logic/ContainerWidget.java | 5 +- .../overlay/logic/ItemGridWidget.java | 16 +- .../overlay/logic/ListContentWidget.java | 5 +- .../overlay/logic/ShortcutListWidget.java | 12 +- .../packets/CustomPacketPayloadSupport.java | 30 ---- .../packets/DisableModPayload.java | 7 + .../packets/RefillItemPayload.java | 7 + .../packets/RefillSupportPayload.java | 7 + .../packets/ShulkerSupportPayload.java | 7 + .../itemswapper/packets/SwapItemPayload.java | 7 + .../provider/InstrumentItemNameProvider.java | 2 +- .../provider/PotionNameProvider.java | 12 +- .../provider/RecordNameProvider.java | 12 +- .../{ => server}/ItemSwapperServerMod.java | 3 +- .../server/ItemSwapperSharedServer.java | 34 ++-- .../dev/tr7zw/itemswapper/util/ItemUtil.java | 7 +- .../tr7zw/itemswapper/util/NetworkUtil.java | 146 ----------------- .../tr7zw/itemswapper/util/RenderHelper.java | 24 +-- .../itemswapper/util/ServerNetworkUtil.java | 150 ------------------ .../tr7zw/itemswapper/util/ServerUtil.java | 20 +-- .../tr7zw/itemswapper/util/ShulkerHelper.java | 16 +- .../tr7zw/itemswapper/util/WidgetUtil.java | 14 +- src/main/resources/fabric.mod.json | 2 +- src/main/resources/itemswapper.mixins.json | 6 +- src/test/java/dev/tr7zw/tests/MixinTests.java | 8 +- 51 files changed, 296 insertions(+), 965 deletions(-) delete mode 100644 src/main/java/dev/tr7zw/itemswapper/api/Event.java delete mode 100644 src/main/java/dev/tr7zw/itemswapper/api/EventFactory.java delete mode 100644 src/main/java/dev/tr7zw/itemswapper/mixin/ClientPacketListenerMixin.java delete mode 100644 src/main/java/dev/tr7zw/itemswapper/mixin/ClientboundCustomPayloadPacketMixin.java delete mode 100644 src/main/java/dev/tr7zw/itemswapper/mixin/ServerGamePacketListenerImplMixin.java delete mode 100644 src/main/java/dev/tr7zw/itemswapper/mixin/ServerboundCustomPayloadPacketMixin.java delete mode 100644 src/main/java/dev/tr7zw/itemswapper/packets/CustomPacketPayloadSupport.java rename src/main/java/dev/tr7zw/itemswapper/{ => server}/ItemSwapperServerMod.java (72%) delete mode 100644 src/main/java/dev/tr7zw/itemswapper/util/NetworkUtil.java delete mode 100644 src/main/java/dev/tr7zw/itemswapper/util/ServerNetworkUtil.java diff --git a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperMod.java b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperMod.java index 221fed2d..9445f6aa 100644 --- a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperMod.java +++ b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperMod.java @@ -1,28 +1,20 @@ package dev.tr7zw.itemswapper; -import java.util.Optional; - -import static dev.tr7zw.transition.mc.GeneralUtil.getResourceLocation; -import dev.tr7zw.itemswapper.compat.AmecsAPISupport; -import dev.tr7zw.itemswapper.compat.ViveCraftSupport; -import dev.tr7zw.itemswapper.manager.SwapperResourceLoader; -import dev.tr7zw.itemswapper.packets.DisableModPayload; -import dev.tr7zw.itemswapper.packets.RefillItemPayload; -import dev.tr7zw.itemswapper.packets.RefillSupportPayload; -import dev.tr7zw.itemswapper.packets.ShulkerSupportPayload; -import dev.tr7zw.itemswapper.packets.SwapItemPayload; -import dev.tr7zw.itemswapper.util.NetworkUtil; - +import dev.tr7zw.itemswapper.compat.*; +import dev.tr7zw.itemswapper.manager.*; +import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.itemswapper.server.*; import dev.tr7zw.transition.loader.*; -import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; -import net.fabricmc.fabric.api.resource.ResourceManagerHelper; -import net.fabricmc.fabric.api.resource.ResourcePackActivationType; -import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.api.ModContainer; +import dev.tr7zw.transition.loader.networking.*; +import net.fabricmc.api.*; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.*; +import net.fabricmc.fabric.api.resource.*; +import net.fabricmc.loader.api.*; +import net.minecraft.network.chat.*; + +import java.util.*; -import net.minecraft.network.chat.Component; +import static dev.tr7zw.transition.mc.GeneralUtil.*; public class ItemSwapperMod extends ItemSwapperSharedMod implements ClientModInitializer { @@ -48,7 +40,8 @@ public void initModloader() { /*FabricLoader.getInstance().getModContainer("midnightcontrols").ifPresent(mod -> { ItemSwapperBase.LOGGER.info("Adding MidnightControls support!"); - eu.midnightdust.midnightcontrols.client.compat.MidnightControlsCompat.HANDLERS.add(new dev.tr7zw.itemswapper.compat.MidnightControllsSupport()); + eu.midnightdust.midnightcontrols.client.compat.MidnightControlsCompat.HANDLERS + .add(new dev.tr7zw.itemswapper.compat.MidnightControllsSupport()); }); *///? } @@ -70,37 +63,22 @@ public void initModloader() { SwapperResourceLoader.ResourceLoaderInit.init(); - ClientPlayConnectionEvents.INIT.register((handle, client) -> { - NetworkUtil.registerServerCustomPacket(SwapItemPayload.class, SwapItemPayload.ID, SwapItemPayload::new, - (p, b) -> p.write(b)); - NetworkUtil.registerServerCustomPacket(RefillItemPayload.class, RefillItemPayload.ID, - RefillItemPayload::new, (p, b) -> p.write(b)); - - NetworkUtil.registerClientCustomPacket(ShulkerSupportPayload.class, ShulkerSupportPayload.ID, - ShulkerSupportPayload::new, (p, b) -> p.write(b), payload -> { - try { - ItemSwapperSharedMod.instance.setEnableShulkers(payload.enabled()); - } catch (Throwable th) { - ItemSwapperBase.LOGGER.error(ERROR_WHILE_PROCESSING_PACKET, th); - } - }); - NetworkUtil.registerClientCustomPacket(RefillSupportPayload.class, RefillSupportPayload.ID, - RefillSupportPayload::new, (p, b) -> p.write(b), payload -> { - try { - ItemSwapperSharedMod.instance.setEnableRefill(payload.enabled()); - } catch (Throwable th) { - ItemSwapperBase.LOGGER.error(ERROR_WHILE_PROCESSING_PACKET, th); - } - }); - NetworkUtil.registerClientCustomPacket(DisableModPayload.class, DisableModPayload.ID, - DisableModPayload::new, (p, b) -> p.write(b), payload -> { - try { - ItemSwapperSharedMod.instance.setModDisabled(payload.enabled()); - } catch (Throwable th) { - ItemSwapperBase.LOGGER.error(ERROR_WHILE_PROCESSING_PACKET, th); - } - }); + ClientNetworkUtil.registerPackets(handle -> { + // Server packets + handle.registerServerCustomPacket(SwapItemPayload.INSTANCE); + handle.registerServerCustomPacket(RefillItemPayload.INSTANCE); + // Client packets + handle.registerClientCustomPacket(ShulkerSupportPayload.INSTANCE, payload -> { + ItemSwapperSharedMod.instance.setEnableShulkers(payload.enabled()); + }); + handle.registerClientCustomPacket(RefillSupportPayload.INSTANCE, payload -> { + ItemSwapperSharedMod.instance.setEnableRefill(payload.enabled()); + }); + handle.registerClientCustomPacket(DisableModPayload.INSTANCE, payload -> { + ItemSwapperSharedMod.instance.setModDisabled(payload.enabled()); + }); }); + } @Override diff --git a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java index 4880959b..8a331b05 100644 --- a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java +++ b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java @@ -75,8 +75,8 @@ private void lateInit() { clientProviderManager.registerNameProvider(new RecordNameProvider()); //? if < 1.21.2 { - /* - clientProviderManager + + /*clientProviderManager .registerNameProvider(new dev.tr7zw.itemswapper.provider.SmithingTemplateItemNameProvider()); *///? } } diff --git a/src/main/java/dev/tr7zw/itemswapper/accessor/CustomPayloadLoader.java b/src/main/java/dev/tr7zw/itemswapper/accessor/CustomPayloadLoader.java index 929aa714..34a8e123 100644 --- a/src/main/java/dev/tr7zw/itemswapper/accessor/CustomPayloadLoader.java +++ b/src/main/java/dev/tr7zw/itemswapper/accessor/CustomPayloadLoader.java @@ -3,10 +3,10 @@ //? if >= 1.20.5 { //? } else if >= 1.20.2 { -/* - import net.minecraft.network.protocol.common.custom.CustomPacketPayload; - import net.minecraft.network.FriendlyByteBuf; - import net.minecraft.resources.*; + +/*import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.*; *///? } else { /* import dev.tr7zw.itemswapper.legacy.CustomPacketPayload; @@ -17,8 +17,8 @@ public interface CustomPayloadLoader { //? if < 1.20.5 { - /* - CustomPacketPayload resolveObject(Identifier id, FriendlyByteBuf buffer); + + /*CustomPacketPayload resolveObject(Identifier id, FriendlyByteBuf buffer); *///? } } diff --git a/src/main/java/dev/tr7zw/itemswapper/api/Event.java b/src/main/java/dev/tr7zw/itemswapper/api/Event.java deleted file mode 100644 index a402f215..00000000 --- a/src/main/java/dev/tr7zw/itemswapper/api/Event.java +++ /dev/null @@ -1,11 +0,0 @@ -package dev.tr7zw.itemswapper.api; - -import java.util.function.Consumer; - -public interface Event { - - public void register(Consumer handler); - - public T callEvent(T event); - -} diff --git a/src/main/java/dev/tr7zw/itemswapper/api/EventFactory.java b/src/main/java/dev/tr7zw/itemswapper/api/EventFactory.java deleted file mode 100644 index ff5de12b..00000000 --- a/src/main/java/dev/tr7zw/itemswapper/api/EventFactory.java +++ /dev/null @@ -1,38 +0,0 @@ -package dev.tr7zw.itemswapper.api; - -import java.util.ArrayList; -import java.util.function.Consumer; - -/** - * Cut down self-implemented version of the Fabric API events. Should do the - * job? https://en.wikipedia.org/wiki/KISS_principle - * - * @author tr7zw - * - */ -public class EventFactory { - - public static Event createEvent() { - return new EventImpl<>(); - } - - private static class EventImpl implements Event { - - private ArrayList> handler = new ArrayList<>(); - - @Override - public void register(Consumer handle) { - handler.add(handle); - } - - @Override - public T callEvent(T event) { - for (Consumer con : handler) { - con.accept(event); - } - return event; - } - - } - -} diff --git a/src/main/java/dev/tr7zw/itemswapper/api/client/ItemSwapperClientAPI.java b/src/main/java/dev/tr7zw/itemswapper/api/client/ItemSwapperClientAPI.java index 12c0a73f..7594bb0f 100644 --- a/src/main/java/dev/tr7zw/itemswapper/api/client/ItemSwapperClientAPI.java +++ b/src/main/java/dev/tr7zw/itemswapper/api/client/ItemSwapperClientAPI.java @@ -4,8 +4,7 @@ import dev.tr7zw.itemswapper.ItemSwapperSharedMod; import dev.tr7zw.itemswapper.api.AvailableSlot; -import dev.tr7zw.itemswapper.api.Event; -import dev.tr7zw.itemswapper.api.EventFactory; +import dev.tr7zw.transition.event.*; public class ItemSwapperClientAPI { diff --git a/src/main/java/dev/tr7zw/itemswapper/compat/ControlifyItemswapperEntrypoint.java b/src/main/java/dev/tr7zw/itemswapper/compat/ControlifyItemswapperEntrypoint.java index 2bdada3c..e23864ca 100644 --- a/src/main/java/dev/tr7zw/itemswapper/compat/ControlifyItemswapperEntrypoint.java +++ b/src/main/java/dev/tr7zw/itemswapper/compat/ControlifyItemswapperEntrypoint.java @@ -28,7 +28,7 @@ public class ControlifyItemswapperEntrypoint implements ControlifyEntrypoint { @Override public void onControlifyInit(dev.isxander.controlify.api.entrypoint.InitContext arg0) { } - + @Override public void onControlifyPreInit(dev.isxander.controlify.api.entrypoint.PreInitContext arg0) { ControlifySupport.getInstance().init(); @@ -38,13 +38,13 @@ public void onControlifyPreInit(dev.isxander.controlify.api.entrypoint.PreInitCo //? } //? if >= 1.20.0 && < 1.21.10 { - /^ - @Override - public void onControlifyPreInit(ControlifyApi arg0) { - ControlifySupport.getInstance().init(); - ScreenProcessorProvider.registerProvider(SwitchItemOverlay.class, ItemSwapperControlifyProcessor::new); - ScreenProcessorProvider.registerProvider(ItemListOverlay.class, ItemSwapperControlifyProcessor::new); - } + + /^@Override + public void onControlifyPreInit(ControlifyApi arg0) { + ControlifySupport.getInstance().init(); + ScreenProcessorProvider.registerProvider(SwitchItemOverlay.class, ItemSwapperControlifyProcessor::new); + ScreenProcessorProvider.registerProvider(ItemListOverlay.class, ItemSwapperControlifyProcessor::new); + } ^///? } else if < 1.20.10 { /^ @Override diff --git a/src/main/java/dev/tr7zw/itemswapper/compat/MidnightControllsSupport.java b/src/main/java/dev/tr7zw/itemswapper/compat/MidnightControllsSupport.java index 98b16e20..23131589 100644 --- a/src/main/java/dev/tr7zw/itemswapper/compat/MidnightControllsSupport.java +++ b/src/main/java/dev/tr7zw/itemswapper/compat/MidnightControllsSupport.java @@ -37,9 +37,9 @@ public void handle(@NotNull MidnightControlsClient mod) { .filter((buttonBinding) -> client.screen == null || client.screen instanceof ItemSwapperUI) //? } else { - /^ - .filter((client, buttonBinding) -> client.screen == null || client.screen instanceof ItemSwapperUI) - ^///? } + + /^.filter((client, buttonBinding) -> client.screen == null || client.screen instanceof ItemSwapperUI) + ^///? } .action(new PressAction() { @Override @@ -57,9 +57,9 @@ public boolean press(@NotNull Minecraft client, @NotNull ButtonBinding button, f .filter((buttonBinding) -> client.screen instanceof ItemSwapperUI) //? } else { - /^ - .filter((client, buttonBinding) -> client.screen instanceof ItemSwapperUI) - ^///? } + + /^.filter((client, buttonBinding) -> client.screen instanceof ItemSwapperUI) + ^///? } .action(new PressAction() { @Override @@ -79,9 +79,9 @@ public boolean press(@NotNull Minecraft client, @NotNull ButtonBinding button, f .filter((buttonBinding) -> client.screen instanceof ItemSwapperUI) //? } else { - /^ - .filter((client, buttonBinding) -> client.screen instanceof ItemSwapperUI) - ^///? } + + /^.filter((client, buttonBinding) -> client.screen instanceof ItemSwapperUI) + ^///? } .action(new PressAction() { @Override @@ -101,9 +101,9 @@ public boolean press(@NotNull Minecraft client, @NotNull ButtonBinding button, f .filter((buttonBinding) -> client.screen instanceof ItemSwapperUI) //? } else { - /^ - .filter((client, buttonBinding) -> client.screen instanceof ItemSwapperUI) - ^///? } + + /^.filter((client, buttonBinding) -> client.screen instanceof ItemSwapperUI) + ^///? } .action(new PressAction() { @Override @@ -123,9 +123,9 @@ public boolean press(@NotNull Minecraft client, @NotNull ButtonBinding button, f .filter((buttonBinding) -> client.screen instanceof ItemSwapperUI) //? } else { - /^ - .filter((client, buttonBinding) -> client.screen instanceof ItemSwapperUI) - ^///? } + + /^.filter((client, buttonBinding) -> client.screen instanceof ItemSwapperUI) + ^///? } .action(new PressAction() { @Override @@ -145,9 +145,9 @@ public boolean press(@NotNull Minecraft client, @NotNull ButtonBinding button, f .filter((buttonBinding) -> client.screen instanceof ItemSwapperUI) //? } else { - /^ - .filter((client, buttonBinding) -> client.screen instanceof ItemSwapperUI) - ^///? } + + /^.filter((client, buttonBinding) -> client.screen instanceof ItemSwapperUI) + ^///? } .action(new PressAction() { @Override diff --git a/src/main/java/dev/tr7zw/itemswapper/gui/CopyToClipboard.java b/src/main/java/dev/tr7zw/itemswapper/gui/CopyToClipboard.java index f77c76c5..989e3c60 100644 --- a/src/main/java/dev/tr7zw/itemswapper/gui/CopyToClipboard.java +++ b/src/main/java/dev/tr7zw/itemswapper/gui/CopyToClipboard.java @@ -57,15 +57,15 @@ public CopyToClipboard(Screen screen, int i, int j) { onPress(); } //? } else { - /* - null - *///? } + + /*null + *///? } , CommonComponents.EMPTY); } //? if < 1.21.10 { - /* - @Override + + /*@Override *///? } public //? if >= 1.21.10 { @@ -102,8 +102,8 @@ public void extractContents(GuiGraphicsExtractor graphics, int mouseX, int mouse /*public void renderContents(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float deltaTicks) { RenderContext renderContext = new RenderContext(graphics); *///? } else if >= 1.20.0 { - /* - public void renderWidget(@NotNull GuiGraphicsExtractor graphics, int mouseX, int mouseY, float deltaTicks) { + + /*public void renderWidget(@NotNull GuiGraphicsExtractor graphics, int mouseX, int mouseY, float deltaTicks) { RenderContext renderContext = new RenderContext(graphics); *///? } else { /* diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/BlockTextureManager.java b/src/main/java/dev/tr7zw/itemswapper/manager/BlockTextureManager.java index 82b9a749..a1341c23 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/BlockTextureManager.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/BlockTextureManager.java @@ -43,14 +43,14 @@ public void init() { //? if >= 1.21.5 { .particleIcon(); - //? } else { - /^ - .getParticleIcon(); + //? } else { + + /^.getParticleIcon(); ^///? } *///? } if (state.canOcclude() && !state.hasBlockEntity()) { for (String key : bannedKeywords) { - if (e.getKey()/*? >= 1.21.11 {*/ .identifier() /*?} else {*//* .location() *//*?}*/.toString() + if (e.getKey()/*? >= 1.21.11 {*/ .identifier() /*?} else {*/ /*.location() *//*?}*/.toString() .contains(key)) { return; } @@ -61,8 +61,8 @@ public void init() { colorMap.put(e.getValue(), ColorUtil.primaryColorDetection(img.getPixelsABGR(), ColorFormat.ABGR, 0.3f)); //? } else { - /* - colorMap.put(e.getValue(), + + /*colorMap.put(e.getValue(), ColorUtil.primaryColorDetection(img.getPixelsRGBA(), ColorFormat.RGBA, 0.3f)); *///? } // UnpackedColor[] colors = ColorUtil.primaryColorDetection(img.getPixelsRGBA(), 0.3f); diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/SwapperResourceLoader.java b/src/main/java/dev/tr7zw/itemswapper/manager/SwapperResourceLoader.java index 5579d55a..3c89aa30 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/SwapperResourceLoader.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/SwapperResourceLoader.java @@ -480,8 +480,8 @@ public static void init() { /*net.fabricmc.fabric.api.resource.v1.ResourceLoader.get(PackType.CLIENT_RESOURCES).registerReloader( GeneralUtil.getResourceLocation("itemswapper:reloader"), new SwapperResourceLoader()); *///? } else { - /* - net.fabricmc.fabric.api.resource.ResourceManagerHelper.get(PackType.CLIENT_RESOURCES) + + /*net.fabricmc.fabric.api.resource.ResourceManagerHelper.get(PackType.CLIENT_RESOURCES) .registerReloadListener( (net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener) new SwapperResourceLoader()); *///? } diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/RestockShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/RestockShortcut.java index fea02283..3f60e0bb 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/RestockShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/RestockShortcut.java @@ -6,8 +6,9 @@ import dev.tr7zw.itemswapper.manager.itemgroups.Shortcut; import dev.tr7zw.itemswapper.manager.itemgroups.Icon.ItemIcon; import dev.tr7zw.itemswapper.overlay.SwitchItemOverlay; +import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.transition.loader.networking.*; import dev.tr7zw.transition.mc.InventoryUtil; -import dev.tr7zw.itemswapper.util.NetworkUtil; import dev.tr7zw.transition.mc.ComponentProvider; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; @@ -36,7 +37,7 @@ public boolean invoke(SwitchItemOverlay overlay, ActionType action, int xOffset, ItemStack item = items.get(i); int space = item.getMaxStackSize() - item.getCount(); if (space > 0) { - NetworkUtil.refillItem(i); + ClientNetworkUtil.sendPacket(new RefillItemPayload(i)); } } return true; diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/AbstractContainerScreenMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/AbstractContainerScreenMixin.java index dccf937a..5e64ab76 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/AbstractContainerScreenMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/AbstractContainerScreenMixin.java @@ -62,8 +62,8 @@ private void init(CallbackInfo info) { @Inject(method = "extractContents", at = @At("TAIL")) //? } else { - /* - @Inject(method = "render", at = @At("TAIL")) + + /*@Inject(method = "render", at = @At("TAIL")) *///? } //? if >= 1.20.0 { diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/ClientPacketListenerMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/ClientPacketListenerMixin.java deleted file mode 100644 index 33e15816..00000000 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/ClientPacketListenerMixin.java +++ /dev/null @@ -1,56 +0,0 @@ -package dev.tr7zw.itemswapper.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import dev.tr7zw.itemswapper.ItemSwapperSharedMod; -import dev.tr7zw.itemswapper.ItemSwapperBase; -import dev.tr7zw.itemswapper.packets.DisableModPayload; -import dev.tr7zw.itemswapper.packets.RefillSupportPayload; -import dev.tr7zw.itemswapper.packets.ShulkerSupportPayload; -import net.minecraft.client.multiplayer.ClientPacketListener; - -//? if >= 1.20.2 { - -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -//? } else { -/* -import dev.tr7zw.itemswapper.legacy.CustomPacketPayload; -import net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket; -import dev.tr7zw.itemswapper.accessor.CustomPayloadLoader; -*///? } - -@Mixin(ClientPacketListener.class) -public class ClientPacketListenerMixin { - - @Inject(method = "handleCustomPayload", at = @At("HEAD")) - //? if >= 1.20.2 { - - public void handleCustomPayload(CustomPacketPayload customPacketPayload, CallbackInfo ci) { - try { - //? } else { - /* - public void handleCustomPayload(ClientboundCustomPayloadPacket clientboundCustomPayloadPacket, CallbackInfo ci) { - try { - CustomPacketPayload customPacketPayload = ((CustomPayloadLoader) clientboundCustomPayloadPacket) - .resolveObject(clientboundCustomPayloadPacket.getIdentifier(), - clientboundCustomPayloadPacket.getData()); - *///? } - - if (customPacketPayload instanceof ShulkerSupportPayload payload) { - ItemSwapperSharedMod.instance.setEnableShulkers(payload.enabled()); - } - if (customPacketPayload instanceof DisableModPayload payload) { - ItemSwapperSharedMod.instance.setModDisabled(payload.enabled()); - } - if (customPacketPayload instanceof RefillSupportPayload payload) { - ItemSwapperSharedMod.instance.setEnableRefill(payload.enabled()); - } - } catch (Throwable th) { - ItemSwapperBase.LOGGER.error("Error while processing packet!", th); - } - } - -} diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/ClientboundCustomPayloadPacketMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/ClientboundCustomPayloadPacketMixin.java deleted file mode 100644 index 1fdd0de0..00000000 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/ClientboundCustomPayloadPacketMixin.java +++ /dev/null @@ -1,74 +0,0 @@ -package dev.tr7zw.itemswapper.mixin; - -//? if >= 1.20.5 { - -import org.spongepowered.asm.mixin.Mixin; - -import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; - -@Mixin(ClientboundCustomPayloadPacket.class) -public class ClientboundCustomPayloadPacketMixin { - -} -//? } else { -/* -import java.util.HashMap; -import java.util.Map; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import dev.tr7zw.itemswapper.packets.DisableModPayload; -import dev.tr7zw.itemswapper.packets.RefillSupportPayload; -import dev.tr7zw.itemswapper.packets.ShulkerSupportPayload; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.*; -import dev.tr7zw.itemswapper.accessor.CustomPayloadLoader; - -//? if >= 1.20.2 { -import net.minecraft.network.protocol.common.*; - import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -//? } else { -/^ -import net.minecraft.network.protocol.game.*; -import dev.tr7zw.itemswapper.legacy.CustomPacketPayload; -^///? } - -@Mixin(ClientboundCustomPayloadPacket.class) -public class ClientboundCustomPayloadPacketMixin implements CustomPayloadLoader { - - private static final Map> ITEMSWAPPER_PACKETS = new HashMap<>() { - private static final long serialVersionUID = 1L; - - { - put(ShulkerSupportPayload.ID, ShulkerSupportPayload::new); - put(DisableModPayload.ID, DisableModPayload::new); - put(RefillSupportPayload.ID, RefillSupportPayload::new); - } - }; - - //? if >= 1.20.2 { - - @Inject(method = "readPayload", at = @At("HEAD"), cancellable = true) - private static void readPayload(Identifier id, FriendlyByteBuf buffer, - CallbackInfoReturnable ci) { - FriendlyByteBuf.Reader reader = ITEMSWAPPER_PACKETS.get(id); - if (reader != null) { - ci.setReturnValue(reader.apply(buffer)); - ci.cancel(); - } - } - //? } - - public CustomPacketPayload resolveObject(Identifier id, FriendlyByteBuf buffer) { - FriendlyByteBuf.Reader reader = ITEMSWAPPER_PACKETS.get(id); - if (reader != null) { - return reader.apply(buffer); - } - return null; - } - -} -*///? } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/ContainerScreenMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/ContainerScreenMixin.java index 173f881c..939bcc25 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/ContainerScreenMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/ContainerScreenMixin.java @@ -40,8 +40,8 @@ protected ContainerScreenMixin(ChestMenu abstractContainerMenu, Inventory invent //? } else { /*@Inject(method = "render", at = @At("HEAD")) - *///? } - //? if >= 1.20.0 { + *///? } + //? if >= 1.20.0 { public void render(GuiGraphicsExtractor graphics, int i, int j, float f, CallbackInfo ci) { //? } else { diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/InstrumentItemMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/InstrumentItemMixin.java index 128d3d9d..126002b5 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/InstrumentItemMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/InstrumentItemMixin.java @@ -19,8 +19,8 @@ import net.minecraft.core.HolderLookup.Provider; //? } else { -/* -import net.minecraft.tags.TagKey; + +/*import net.minecraft.tags.TagKey; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -32,8 +32,8 @@ public abstract class InstrumentItemMixin implements InstrumentItemAccess { private Set items = new HashSet<>(); //? if < 1.21.2 { - /* - @Inject(method = "", at = @At("RETURN")) + + /*@Inject(method = "", at = @At("RETURN")) public void constructor(Item.Properties properties, TagKey tagKey, CallbackInfo ci) { items.add((Item) (Object) this); } @@ -53,22 +53,22 @@ public Optional> getOptionalInstrument(ItemStack it .map(net.minecraft.world.item.component.InstrumentComponent::instrument); } //? } else { - /* - return getInstrument(itemStack, Minecraft.getInstance().level.registryAccess()); + + /*return getInstrument(itemStack, Minecraft.getInstance().level.registryAccess()); } @Shadow protected abstract Optional> getInstrument(ItemStack itemStack, Provider provider); *///? } //? } else { - /* - @Override - public Optional> getOptionalInstrument(ItemStack itemStack) { - return getInstrument(itemStack); - } - - @Shadow - protected abstract Optional> getInstrument(ItemStack itemStack); - *///? } + + /*@Override + public Optional> getOptionalInstrument(ItemStack itemStack) { + return getInstrument(itemStack); + } + + @Shadow + protected abstract Optional> getInstrument(ItemStack itemStack); + *///? } } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/KeyboardHandlerMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/KeyboardHandlerMixin.java index 2d9f6a0a..64eb31d9 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/KeyboardHandlerMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/KeyboardHandlerMixin.java @@ -32,8 +32,8 @@ public class KeyboardHandlerMixin { private void keyPress(long l, int i, net.minecraft.client.input.KeyEvent keyEvent, CallbackInfo ci) { InputConstants.Key key = InputConstants.getKey(keyEvent); //? } else { - /* - public void keyPress(long l, int i, int j, int k, int m, CallbackInfo ci) { + + /*public void keyPress(long l, int i, int j, int k, int m, CallbackInfo ci) { InputConstants.Key key = InputConstants.getKey(i, j); *///? } // restore movement, simulate "passEvents" @@ -46,24 +46,24 @@ public void keyPress(long l, int i, int j, int k, int m, CallbackInfo ci) { return; } //? } else { - /* - if (!configManager.getConfig().allowWalkingWithUI + + /*if (!configManager.getConfig().allowWalkingWithUI && !(ItemSwapperSharedMod.instance.getKeybind().matches(i, j) || ItemSwapperSharedMod.instance.getInventoryKeybind().matches(i, j))) { return; } *///? } //? if < 1.21.10 { - /* - if (k == 0) { - KeyMapping.set(key, false); - } else { - *///? } + + /*if (k == 0) { + KeyMapping.set(key, false); + } else { + *///? } boolean bl2 = InputConstants.isKeyDown(Minecraft.getInstance().getWindow() //? if < 1.21.10 { - /* - .getWindow() - *///? } + + /*.getWindow() + *///? } , 292); if (bl2) { KeyMapping.set(key, false); @@ -72,8 +72,8 @@ public void keyPress(long l, int i, int j, int k, int m, CallbackInfo ci) { KeyMapping.click(key); } //? if < 1.21.10 { - /* - } + + /*} *///? } } } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/MinecraftMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/MinecraftMixin.java index c226d7ab..097626d9 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/MinecraftMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/MinecraftMixin.java @@ -65,8 +65,8 @@ private boolean dontPauseSingleplayer(IntegratedServer server, boolean bl) { @Inject(method = "pickBlockOrEntity", at = @At("HEAD"), cancellable = true) //? } else { - /* - @Inject(method = "pickBlock", at = @At("HEAD"), cancellable = true) + + /*@Inject(method = "pickBlock", at = @At("HEAD"), cancellable = true) *///? } private void pickBlock(CallbackInfo ci) { if (screen instanceof ItemSwapperUI) { @@ -124,8 +124,8 @@ private ItemStack getHitResultStack(HitResult hitResult, boolean ctrl) { /* @Inject(method = "pickBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;hasControlDown()Z", shift = At.Shift.AFTER), cancellable = true) *///? } else { - /* - @Inject(method = "pickBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;hasControlDown()Z", shift = At.Shift.AFTER), cancellable = true) + + /*@Inject(method = "pickBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;hasControlDown()Z", shift = At.Shift.AFTER), cancellable = true) *///? } private void pickBlockShulkerSupport(CallbackInfo ci) { boolean creative = player.getAbilities().instabuild; @@ -133,14 +133,14 @@ private void pickBlockShulkerSupport(CallbackInfo ci) { boolean controlDown = this.hasControlDown(); //? } else { - /* - boolean controlDown = Screen.hasControlDown(); + + /*boolean controlDown = Screen.hasControlDown(); *///? } ItemStack stack = getHitResultStack(this.hitResult, controlDown); //? } else { - /* - @Inject(method = "pickBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Inventory;findSlotMatchingItem(Lnet/minecraft/world/item/ItemStack;)I", shift = At.Shift.AFTER), cancellable = true, locals = LocalCapture.CAPTURE_FAILHARD) - private void pickBlockShulkerSupport(CallbackInfo ci, boolean creative, BlockEntity blockEntity, ItemStack stack, + + /*@Inject(method = "pickBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Inventory;findSlotMatchingItem(Lnet/minecraft/world/item/ItemStack;)I", shift = At.Shift.AFTER), cancellable = true, locals = LocalCapture.CAPTURE_FAILHARD) + private void pickBlockShulkerSupport(CallbackInfo ci, boolean creative, BlockEntity blockEntity, ItemStack stack, Type type) { *///? } if (creative) { diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java index c4640c77..f7fc3b8d 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java @@ -1,12 +1,13 @@ package dev.tr7zw.itemswapper.mixin; +import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.transition.loader.networking.*; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import dev.tr7zw.itemswapper.config.ConfigManager; -import dev.tr7zw.itemswapper.util.ServerNetworkUtil; import net.minecraft.network.Connection; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.players.PlayerList; @@ -29,10 +30,10 @@ public void placeNewPlayer(Connection connection, ServerPlayer serverPlayer, public void placeNewPlayer(Connection connection, ServerPlayer serverPlayer, CallbackInfo ci) { *///? } if (ConfigManager.getInstance().getConfig().serverPreventModUsage) { - ServerNetworkUtil.sendDisableModPacket(serverPlayer, true); + ServerNetworkUtil.sendPacket(serverPlayer, new DisableModPayload(true)); } else { - ServerNetworkUtil.sendShulkerSupportPacket(serverPlayer, true); - ServerNetworkUtil.sendRefillSupportPacket(serverPlayer, true); + ServerNetworkUtil.sendPacket(serverPlayer, new ShulkerSupportPayload(true)); + ServerNetworkUtil.sendPacket(serverPlayer, new RefillSupportPayload(true)); } } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/ServerGamePacketListenerImplMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/ServerGamePacketListenerImplMixin.java deleted file mode 100644 index 20b5e4de..00000000 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/ServerGamePacketListenerImplMixin.java +++ /dev/null @@ -1,94 +0,0 @@ -package dev.tr7zw.itemswapper.mixin; - -//? if >= 1.20.5 { - -import org.spongepowered.asm.mixin.Mixin; - -import net.minecraft.server.network.ServerCommonPacketListenerImpl; - -@Mixin(ServerCommonPacketListenerImpl.class) -public class ServerGamePacketListenerImplMixin { - -} -//? } else { -/* -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import dev.tr7zw.itemswapper.config.ConfigManager; -import dev.tr7zw.itemswapper.ItemSwapperBase; -import dev.tr7zw.itemswapper.packets.RefillItemPayload; -import dev.tr7zw.itemswapper.packets.SwapItemPayload; -import dev.tr7zw.itemswapper.server.ItemSwapperSharedServer; -import net.minecraft.server.network.ServerGamePacketListenerImpl; -import dev.tr7zw.itemswapper.accessor.CustomPayloadLoader; - -//spotless:off - //? if >= 1.20.2 { - - import net.minecraft.server.network.ServerCommonPacketListenerImpl; - import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket; - - @Mixin(ServerCommonPacketListenerImpl.class) - //? } else { -/^ - import org.spongepowered.asm.mixin.Shadow; - import dev.tr7zw.itemswapper.legacy.CustomPacketPayload; - import net.minecraft.server.network.ServerGamePacketListenerImpl; - import net.minecraft.server.level.ServerPlayer; - import net.minecraft.network.protocol.game.ServerboundCustomPayloadPacket; - - @Mixin(ServerGamePacketListenerImpl.class) - ^///? } - //spotless:on -public class ServerGamePacketListenerImplMixin { - - private static final ConfigManager configManager = ConfigManager.getInstance(); - // spotless:off - //? if <= 1.20.1 { -/^ - @Shadow - public ServerPlayer player; - ^///? } - //spotless:on - - @Inject(method = "handleCustomPayload", at = @At("HEAD")) - public void handleCustomPayload(ServerboundCustomPayloadPacket serverboundCustomPayloadPacket, CallbackInfo ci) { - try { - // spotless:off - //? if >= 1.20.2 { - - if ((Object) this instanceof ServerGamePacketListenerImpl gamePacketListener) { - // Don't apply this logic, if the server has the mod disabled. - if (!configManager.getConfig().serverPreventModUsage - && serverboundCustomPayloadPacket.payload() instanceof SwapItemPayload bytebuf) { - ItemSwapperSharedServer.INSTANCE.getItemHandler().swapItem(gamePacketListener.player, bytebuf); - } - if (!configManager.getConfig().serverPreventModUsage - && serverboundCustomPayloadPacket.payload() instanceof RefillItemPayload bytebuf) { - ItemSwapperSharedServer.INSTANCE.getItemHandler().refillSlot(gamePacketListener.player, bytebuf); - } - } - //? } else { -/^ - CustomPacketPayload customPacketPayload = ((CustomPayloadLoader)serverboundCustomPayloadPacket).resolveObject(serverboundCustomPayloadPacket.getIdentifier(), serverboundCustomPayloadPacket.getData()); - if (customPacketPayload instanceof SwapItemPayload bytebuf - && !configManager.getConfig().serverPreventModUsage) { - ItemSwapperSharedServer.INSTANCE.getItemHandler().swapItem(player, bytebuf); - } - if (customPacketPayload instanceof RefillItemPayload bytebuf - && !configManager.getConfig().serverPreventModUsage) { - ItemSwapperSharedServer.INSTANCE.getItemHandler().refillSlot(player, bytebuf); - } - ^///? } - //spotless:on - } catch (Throwable th) { - ItemSwapperBase.LOGGER.error("Error while processing packet!", th); - } - } - -} -*///? } - //spotless:on diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/ServerboundCustomPayloadPacketMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/ServerboundCustomPayloadPacketMixin.java deleted file mode 100644 index 1494202f..00000000 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/ServerboundCustomPayloadPacketMixin.java +++ /dev/null @@ -1,73 +0,0 @@ -package dev.tr7zw.itemswapper.mixin; - -//? if >= 1.20.5 { - -import org.spongepowered.asm.mixin.Mixin; -import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket; - -@Mixin(ServerboundCustomPayloadPacket.class) -public class ServerboundCustomPayloadPacketMixin { - -} -//? } else { -/* -import java.util.HashMap; -import java.util.Map; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import dev.tr7zw.itemswapper.packets.RefillItemPayload; -import dev.tr7zw.itemswapper.packets.SwapItemPayload; -import net.minecraft.network.FriendlyByteBuf; - -import net.minecraft.resources.*; -import dev.tr7zw.itemswapper.accessor.CustomPayloadLoader; - -//? if >= 1.20.2 { - - import net.minecraft.network.protocol.common.*; - import net.minecraft.network.protocol.common.custom.CustomPacketPayload; - //? } else { -/^ -import dev.tr7zw.itemswapper.legacy.CustomPacketPayload; -import net.minecraft.network.protocol.game.*; -^///? } - -@Mixin(ServerboundCustomPayloadPacket.class) -public class ServerboundCustomPayloadPacketMixin implements CustomPayloadLoader { - - private static final Map> ITEMSWAPPER_PACKETS = new HashMap<>() { - private static final long serialVersionUID = 1L; - - { - put(SwapItemPayload.ID, SwapItemPayload::new); - put(RefillItemPayload.ID, RefillItemPayload::new); - } - }; - - //? if >= 1.20.2 { - - @Inject(method = "readPayload", at = @At("HEAD"), cancellable = true) - private static void readPayload(Identifier id, FriendlyByteBuf buffer, - CallbackInfoReturnable ci) { - FriendlyByteBuf.Reader reader = ITEMSWAPPER_PACKETS.get(id); - if (reader != null) { - ci.setReturnValue(reader.apply(buffer)); - ci.cancel(); - } - } - //? } - - public CustomPacketPayload resolveObject(Identifier id, FriendlyByteBuf buffer) { - FriendlyByteBuf.Reader reader = ITEMSWAPPER_PACKETS.get(id); - if (reader != null) { - return reader.apply(buffer); - } - return null; - } - -} -*///? } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/SmithingTemplateItemMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/SmithingTemplateItemMixin.java index 10e8a8be..669e4aed 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/SmithingTemplateItemMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/SmithingTemplateItemMixin.java @@ -2,8 +2,8 @@ import org.spongepowered.asm.mixin.Mixin; //? if < 1.21.2 { -/* -import org.spongepowered.asm.mixin.Shadow; + +/*import org.spongepowered.asm.mixin.Shadow; *///? } import dev.tr7zw.itemswapper.accessor.SmithingTemplateItemAccessor; @@ -14,8 +14,8 @@ public class SmithingTemplateItemMixin implements SmithingTemplateItemAccessor { //? if < 1.21.2 { - /* - @Shadow + + /*@Shadow *///? } private Component upgradeDescription; diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java index d239082d..77b99b78 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java @@ -15,10 +15,11 @@ import dev.tr7zw.itemswapper.manager.ItemGroupManager.ListPage; import dev.tr7zw.itemswapper.manager.ItemGroupManager.Page; import dev.tr7zw.itemswapper.manager.itemgroups.ItemList; +import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.transition.loader.networking.*; import dev.tr7zw.transition.mc.ComponentProvider; import dev.tr7zw.transition.mc.InventoryUtil; import dev.tr7zw.itemswapper.util.ItemUtil; -import dev.tr7zw.itemswapper.util.NetworkUtil; import dev.tr7zw.trender.gui.client.RenderContext; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; @@ -85,17 +86,17 @@ public void render(PoseStack pose, int mouseX, int mouseY, float f) { *///? } // com.mojang.blaze3d.systems.RenderSystem.enableBlend(); //? if < 1.21.6 { - /* - com.mojang.blaze3d.systems.RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - *///? } + + /*com.mojang.blaze3d.systems.RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + *///? } //? if >= 1.21.5 { //? } else if >= 1.21.2 { - // com.mojang.blaze3d.systems.RenderSystem.setShader(net.minecraft.client.renderer.CoreShaders.POSITION_TEX); - //? } else { - /* - com.mojang.blaze3d.systems.RenderSystem + /*com.mojang.blaze3d.systems.RenderSystem.setShader(net.minecraft.client.renderer.CoreShaders.POSITION_TEX); + *///? } else { + + /*com.mojang.blaze3d.systems.RenderSystem .setShader(net.minecraft.client.renderer.GameRenderer::getPositionTexShader); *///? } List itemRenderList = new ArrayList<>(); @@ -189,7 +190,7 @@ public boolean onPrimaryClick() { if (slot.inventory() == -1) { ItemUtil.swapWithSlot(ItemUtil.inventorySlotToHudSlot(slot.slot())); } else { - NetworkUtil.swapItem(slot.inventory(), slot.slot()); + ClientNetworkUtil.sendPacket(new SwapItemPayload(slot.inventory(), slot.slot())); } clientAPI.itemSwapSentEvent.callEvent(new SwapSent(slot)); } @@ -204,27 +205,27 @@ private void renderEntry(RenderContext graphics, Identifier background, int id, if (selectedEntry == id) { lateRenderList.add(() -> { //? if < 1.21.6 { - /* - graphics.getPose().pushPose(); + + /*graphics.getPose().pushPose(); graphics.getPose().translate(0, 0, dev.tr7zw.itemswapper.util.RenderHelper.LAYERS_SELECTION); *///? } graphics.blit(SELECTION_LOCATION, x, y, 0, 0, 24, 24, 24, 24); //? if < 1.21.6 { - /* - graphics.getPose().popPose(); + + /*graphics.getPose().popPose(); *///? } }); } lateRenderList.add(() -> { //? if < 1.21.6 { - /* - graphics.getPose().pushPose(); + + /*graphics.getPose().pushPose(); graphics.getPose().translate(0, 0, dev.tr7zw.itemswapper.util.RenderHelper.LAYERS_ITEM); *///? } renderSlot(graphics, x + 4, y + 4, minecraft.player, slot.item(), 1); //? if < 1.21.6 { - /* - graphics.getPose().popPose(); + + /*graphics.getPose().popPose(); *///? } var name = ItemUtil.getDisplayname(slot.item()); if (selectedEntry != id && name instanceof MutableComponent mutName) { @@ -241,10 +242,10 @@ private void renderSlot(RenderContext graphics, int x, int y, Player arg, ItemSt //? } else if >= 1.21.2 { - // com.mojang.blaze3d.systems.RenderSystem.setShader(net.minecraft.client.renderer.CoreShaders.POSITION_COLOR); - //? } else { - /* - com.mojang.blaze3d.systems.RenderSystem + /*com.mojang.blaze3d.systems.RenderSystem.setShader(net.minecraft.client.renderer.CoreShaders.POSITION_COLOR); + *///? } else { + + /*com.mojang.blaze3d.systems.RenderSystem .setShader(net.minecraft.client.renderer.GameRenderer::getPositionColorShader); *///? } graphics.renderItemDecorations(this.minecraft.font, arg2, x, y); diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemSwapperUIAbstractInput.java b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemSwapperUIAbstractInput.java index 5eac2aea..16d65dda 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemSwapperUIAbstractInput.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemSwapperUIAbstractInput.java @@ -40,8 +40,8 @@ public boolean mouseClicked(net.minecraft.client.input.MouseButtonEvent mouseBut //? } //? if < 1.21.10 { - /* - @Override + + /*@Override *///? } public boolean mouseClicked(double d, double e, int i) { if (i == 0) { diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/SwitchItemOverlay.java b/src/main/java/dev/tr7zw/itemswapper/overlay/SwitchItemOverlay.java index f1d94b3f..8bb8db17 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/SwitchItemOverlay.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/SwitchItemOverlay.java @@ -266,21 +266,21 @@ public void render(PoseStack pose, int mouseX, int mouseY, float f) { //? } else if >= 1.21.2 { - // RenderSystem.setShader(net.minecraft.client.renderer.CoreShaders.POSITION_TEX); - //? } else { - /* - RenderSystem.setShader(net.minecraft.client.renderer.GameRenderer::getPositionTexShader); + /*RenderSystem.setShader(net.minecraft.client.renderer.CoreShaders.POSITION_TEX); + *///? } else { + + /*RenderSystem.setShader(net.minecraft.client.renderer.GameRenderer::getPositionTexShader); *///? } //? if < 1.21.6 { - /* - renderContext.getPose().pushPose(); - renderContext.getPose().translate(0, 0, dev.tr7zw.itemswapper.util.RenderHelper.LAYERS_CURSOR); - *///? } + + /*renderContext.getPose().pushPose(); + renderContext.getPose().translate(0, 0, dev.tr7zw.itemswapper.util.RenderHelper.LAYERS_CURSOR); + *///? } renderContext.blit(WidgetUtil.CURSOR_LOCATION, originX + (int) selectionHandler.getCursorX() - 12, originY + (int) selectionHandler.getCursorY() - 12, 0, 0, 24, 24, 24, 24); //? if < 1.21.6 { - /* - renderContext.getPose().popPose(); + + /*renderContext.getPose().popPose(); *///? } } } diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ContainerWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ContainerWidget.java index c4f5c9e2..a24ec7ec 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ContainerWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ContainerWidget.java @@ -15,9 +15,10 @@ import dev.tr7zw.itemswapper.manager.ClientProviderManager; import dev.tr7zw.itemswapper.manager.itemgroups.ItemEntry; import dev.tr7zw.itemswapper.overlay.SwitchItemOverlay; +import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.transition.loader.networking.*; import dev.tr7zw.transition.mc.InventoryUtil; import dev.tr7zw.itemswapper.util.ItemUtil; -import dev.tr7zw.itemswapper.util.NetworkUtil; import dev.tr7zw.itemswapper.util.RenderHelper; import dev.tr7zw.itemswapper.util.RenderHelper.SlotEffect; import dev.tr7zw.itemswapper.util.WidgetUtil; @@ -95,7 +96,7 @@ public boolean onPrimaryClick(SwitchItemOverlay overlay, GuiSlot guiSlot, int xO // interaction canceled by some other mod return true; } - NetworkUtil.swapItem(slot.inventory(), slot.slot()); + ClientNetworkUtil.sendPacket(new SwapItemPayload(slot.inventory(), slot.slot())); clientAPI.itemSwapSentEvent.callEvent(new SwapSent(slot)); ItemSwapperSharedMod.instance.setLastItem(slot.item().getItem()); ItemSwapperSharedMod.instance.setLastPage(overlay.getLastPages().get(overlay.getLastPages().size() - 1)); diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ItemGridWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ItemGridWidget.java index 27e331f3..9bf6f8a4 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ItemGridWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ItemGridWidget.java @@ -38,13 +38,13 @@ public void render(Screen parent, RenderContext graphics, int originX, int origi itemRenderList, lateRenderList, overwrideAvailable); } //? if < 1.21.4 { - /* - com.mojang.blaze3d.systems.RenderSystem.enableBlend(); + + /*com.mojang.blaze3d.systems.RenderSystem.enableBlend(); *///? } itemRenderList.forEach(Runnable::run); //? if < 1.21.4 { - /* - com.mojang.blaze3d.systems.RenderSystem.enableBlend(); + + /*com.mojang.blaze3d.systems.RenderSystem.enableBlend(); *///? } lateRenderList.forEach(Runnable::run); } @@ -57,8 +57,8 @@ private void renderSelection(Screen parent, RenderContext graphics, int listId, graphics.blitSprite(WidgetUtil.HOTBAR_OFFHAND_LEFT_SPRITE, x, y, 29, 24, 0xFFFFFFFF); //? } else if >= 1.20.2 { - /* - graphics.blitSprite(WidgetUtil.HOTBAR_OFFHAND_LEFT_SPRITE, x, y, 29, 24, 29, 24, 256, 256); + + /*graphics.blitSprite(WidgetUtil.HOTBAR_OFFHAND_LEFT_SPRITE, x, y, 29, 24, 29, 24, 256, 256); *///? } else { /* graphics.blit(WidgetUtil.WIDGETS_LOCATION, x, y, 24, 22, 29, 24, 256, 256); @@ -68,8 +68,8 @@ private void renderSelection(Screen parent, RenderContext graphics, int listId, if (guiSlot.selected().get()) { itemRenderList = lateRenderList; //? if < 1.21.6 { - /* - graphics.getPose().translate(0, 0, dev.tr7zw.itemswapper.util.RenderHelper.LAYERS_SELECTION); + + /*graphics.getPose().translate(0, 0, dev.tr7zw.itemswapper.util.RenderHelper.LAYERS_SELECTION); *///? } graphics.blit(WidgetUtil.SELECTION_LOCATION, x - 1, y, 0, 0, 24, 24, 24, 24); } diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ListContentWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ListContentWidget.java index fa9d2582..4e12ea91 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ListContentWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ListContentWidget.java @@ -11,9 +11,10 @@ import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI.SwapSent; import dev.tr7zw.itemswapper.manager.itemgroups.ItemList; import dev.tr7zw.itemswapper.overlay.SwitchItemOverlay; +import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.transition.loader.networking.*; import dev.tr7zw.transition.mc.*; import dev.tr7zw.itemswapper.util.ItemUtil; -import dev.tr7zw.itemswapper.util.NetworkUtil; import dev.tr7zw.itemswapper.util.RenderHelper; import dev.tr7zw.itemswapper.util.RenderHelper.SlotEffect; import dev.tr7zw.itemswapper.util.WidgetUtil; @@ -105,7 +106,7 @@ public boolean onPrimaryClick(SwitchItemOverlay overlay, GuiSlot guiSlot, int xO if (entry.inventory() == -1) { ItemUtil.swapWithSlot(ItemUtil.inventorySlotToHudSlot(entry.slot())); } else { - NetworkUtil.swapItem(entry.inventory(), entry.slot()); + ClientNetworkUtil.sendPacket(new SwapItemPayload(entry.inventory(), entry.slot())); } clientAPI.itemSwapSentEvent.callEvent(new SwapSent(entry)); return false; diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ShortcutListWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ShortcutListWidget.java index 3547f2f4..2313f915 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ShortcutListWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ShortcutListWidget.java @@ -50,8 +50,8 @@ protected void renderSlot(RenderContext graphics, int x, int y, List i grayedOut ? SlotEffect.GRAY : SlotEffect.NONE, 1)); } else if (icon instanceof TextureIcon texture) { //? if < 1.21.6 { - /* - graphics.getPose().translate(0, 0, RenderHelper.LAYERS_ITEM); + + /*graphics.getPose().translate(0, 0, RenderHelper.LAYERS_ITEM); *///? } graphics.blit(texture.texture(), x - 1, y, 0, 0, 24, 24, 24, 24); } @@ -95,15 +95,15 @@ public void renderSelectedTooltip(SwitchItemOverlay overlay, RenderContext graph Shortcut shortcut = list.get(selected.id()); if (shortcut.getHoverText() != null) { //? if < 1.21.6 { - /* - graphics.getPose().pushPose(); + + /*graphics.getPose().pushPose(); graphics.getPose().translate(0, 0, RenderHelper.LAYERS_TOOLTIP); *///? } graphics.renderTooltip(minecraft.font, minecraft.font.split(shortcut.getHoverText(), 170), (int) x, (int) y); //? if < 1.21.6 { - /* - graphics.getPose().popPose(); + + /*graphics.getPose().popPose(); *///? } } } diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/CustomPacketPayloadSupport.java b/src/main/java/dev/tr7zw/itemswapper/packets/CustomPacketPayloadSupport.java deleted file mode 100644 index 33756a42..00000000 --- a/src/main/java/dev/tr7zw/itemswapper/packets/CustomPacketPayloadSupport.java +++ /dev/null @@ -1,30 +0,0 @@ -package dev.tr7zw.itemswapper.packets; - -//? if >= 1.20.5 { - -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.*; -//? } - -//? if >= 1.20.5 { - -public interface CustomPacketPayloadSupport extends CustomPacketPayload { - //? } else { - /* - public interface CustomPacketPayloadSupport { - *///? } - - //? if >= 1.20.5 { - - public Identifier id(); - - public default Type type() { - return new Type(id()); - } - - public void write(FriendlyByteBuf paramFriendlyByteBuf); - - //? } - -} diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java index e1814633..f28d8489 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java @@ -2,6 +2,7 @@ import dev.tr7zw.itemswapper.ItemSwapperMod; import dev.tr7zw.itemswapper.util.ServerUtil; +import dev.tr7zw.transition.loader.networking.*; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; @@ -15,6 +16,7 @@ public record DisableModPayload(boolean enabled) implements CustomPacketPayload, CustomPacketPayloadSupport { + public static final DisableModPayload INSTANCE = new DisableModPayload(false); public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "disable"); @Override @@ -27,6 +29,11 @@ public void write(FriendlyByteBuf paramFriendlyByteBuf) { paramFriendlyByteBuf.writeBoolean(enabled); } + @Override + public CustomPacketPayloadSupport read(FriendlyByteBuf friendlyByteBuf) { + return new DisableModPayload(friendlyByteBuf); + } + public DisableModPayload(FriendlyByteBuf buffer) { this(buffer.readBoolean()); } diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java index 58c1d960..266c3e8d 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java @@ -2,6 +2,7 @@ import dev.tr7zw.itemswapper.ItemSwapperMod; import dev.tr7zw.itemswapper.util.ServerUtil; +import dev.tr7zw.transition.loader.networking.*; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; @@ -16,6 +17,7 @@ public record RefillItemPayload(int slot) implements CustomPacketPayload, CustomPacketPayloadSupport { + public static final RefillItemPayload INSTANCE = new RefillItemPayload(0); public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "refill"); @Override @@ -28,6 +30,11 @@ public void write(FriendlyByteBuf paramFriendlyByteBuf) { paramFriendlyByteBuf.writeInt(slot); } + @Override + public CustomPacketPayloadSupport read(FriendlyByteBuf friendlyByteBuf) { + return new RefillSupportPayload(friendlyByteBuf); + } + public RefillItemPayload(FriendlyByteBuf buffer) { this(buffer.readInt()); } diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java index 1c047027..e3d7d90a 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java @@ -2,6 +2,7 @@ import dev.tr7zw.itemswapper.ItemSwapperMod; import dev.tr7zw.itemswapper.util.ServerUtil; +import dev.tr7zw.transition.loader.networking.*; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; @@ -15,6 +16,7 @@ public record RefillSupportPayload(boolean enabled) implements CustomPacketPayload, CustomPacketPayloadSupport { + public static final RefillSupportPayload INSTANCE = new RefillSupportPayload(true); public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "enablerefill"); @Override @@ -27,6 +29,11 @@ public void write(FriendlyByteBuf paramFriendlyByteBuf) { paramFriendlyByteBuf.writeBoolean(enabled); } + @Override + public CustomPacketPayloadSupport read(FriendlyByteBuf friendlyByteBuf) { + return new RefillSupportPayload(friendlyByteBuf); + } + public RefillSupportPayload(FriendlyByteBuf buffer) { this(buffer.readBoolean()); } diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java index ea9f0c2a..9843541a 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java @@ -2,6 +2,7 @@ import dev.tr7zw.itemswapper.ItemSwapperMod; import dev.tr7zw.itemswapper.util.ServerUtil; +import dev.tr7zw.transition.loader.networking.*; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; @@ -15,6 +16,7 @@ public record ShulkerSupportPayload(boolean enabled) implements CustomPacketPayload, CustomPacketPayloadSupport { + public static final ShulkerSupportPayload INSTANCE = new ShulkerSupportPayload(false); public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "enableshulker"); @Override @@ -27,6 +29,11 @@ public void write(FriendlyByteBuf paramFriendlyByteBuf) { paramFriendlyByteBuf.writeBoolean(enabled); } + @Override + public CustomPacketPayloadSupport read(FriendlyByteBuf friendlyByteBuf) { + return new ShulkerSupportPayload(friendlyByteBuf); + } + public ShulkerSupportPayload(FriendlyByteBuf buffer) { this(buffer.readBoolean()); } diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java index a3eca196..5df902ee 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java @@ -2,6 +2,7 @@ import dev.tr7zw.itemswapper.ItemSwapperMod; import dev.tr7zw.itemswapper.util.ServerUtil; +import dev.tr7zw.transition.loader.networking.*; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; @@ -15,6 +16,7 @@ public record SwapItemPayload(int inventorySlot, int slot) implements CustomPacketPayload, CustomPacketPayloadSupport { + public static final SwapItemPayload INSTANCE = new SwapItemPayload(0, 0); public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "swap"); @Override @@ -28,6 +30,11 @@ public void write(FriendlyByteBuf paramFriendlyByteBuf) { paramFriendlyByteBuf.writeInt(slot); } + @Override + public CustomPacketPayloadSupport read(FriendlyByteBuf friendlyByteBuf) { + return new SwapItemPayload(friendlyByteBuf); + } + public SwapItemPayload(FriendlyByteBuf buffer) { this(buffer.readInt(), buffer.readInt()); } diff --git a/src/main/java/dev/tr7zw/itemswapper/provider/InstrumentItemNameProvider.java b/src/main/java/dev/tr7zw/itemswapper/provider/InstrumentItemNameProvider.java index e61569ca..2e07d060 100644 --- a/src/main/java/dev/tr7zw/itemswapper/provider/InstrumentItemNameProvider.java +++ b/src/main/java/dev/tr7zw/itemswapper/provider/InstrumentItemNameProvider.java @@ -25,7 +25,7 @@ public Component getDisplayName(ItemStack item) { .getOptionalInstrument(item).flatMap(Holder::unwrapKey); if (optional.isPresent()) { return Component.translatable(Util.makeDescriptionId("instrument", - optional.get()/*? >= 1.21.11 {*/ .identifier() /*?} else {*//* .location() *//*?}*/)); + optional.get()/*? >= 1.21.11 {*/ .identifier() /*?} else {*/ /*.location() *//*?}*/)); } return item.getHoverName(); } diff --git a/src/main/java/dev/tr7zw/itemswapper/provider/PotionNameProvider.java b/src/main/java/dev/tr7zw/itemswapper/provider/PotionNameProvider.java index 8a6cebe5..6731ccb3 100644 --- a/src/main/java/dev/tr7zw/itemswapper/provider/PotionNameProvider.java +++ b/src/main/java/dev/tr7zw/itemswapper/provider/PotionNameProvider.java @@ -14,8 +14,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; //? if < 1.20.5 { -/* -import net.minecraft.world.item.alchemy.PotionUtils; + +/*import net.minecraft.world.item.alchemy.PotionUtils; import net.minecraft.util.StringUtil; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.network.chat.ComponentContents; @@ -35,8 +35,8 @@ public boolean isProvider(ItemStack item) { @Override public Component getDisplayName(ItemStack item) { //? if < 1.20.5 { - /* - List effects = PotionUtils.getPotion(item).getEffects(); + + /*List effects = PotionUtils.getPotion(item).getEffects(); if (!effects.isEmpty()) { MutableComponent comp = formatEffect(effects.get(0)); if (effects.size() >= 2) { @@ -75,8 +75,8 @@ public Component getDisplayName(ItemStack item) { } //? if < 1.20.5 { - /* - private MutableComponent formatEffect(MobEffectInstance effect) { + + /*private MutableComponent formatEffect(MobEffectInstance effect) { MutableComponent comp = ComponentProvider.empty().append(effect.getEffect().getDisplayName()); if (effect.getAmplifier() > 1) { comp.append(" ").append(ComponentProvider.translatable("potion.potency." + effect.getAmplifier())); diff --git a/src/main/java/dev/tr7zw/itemswapper/provider/RecordNameProvider.java b/src/main/java/dev/tr7zw/itemswapper/provider/RecordNameProvider.java index 029cb903..7463b057 100644 --- a/src/main/java/dev/tr7zw/itemswapper/provider/RecordNameProvider.java +++ b/src/main/java/dev/tr7zw/itemswapper/provider/RecordNameProvider.java @@ -18,8 +18,8 @@ import net.minecraft.world.item.JukeboxPlayable; import net.minecraft.world.item.JukeboxSong; //? } else { -/* -import net.minecraft.tags.ItemTags; + +/*import net.minecraft.tags.ItemTags; *///? } public class RecordNameProvider implements NameProvider { @@ -30,8 +30,8 @@ public boolean isProvider(ItemStack item) { return item.getComponents().has(DataComponents.JUKEBOX_PLAYABLE); //? } else { - /* - return item.is(ItemTags.MUSIC_DISCS); + + /*return item.is(ItemTags.MUSIC_DISCS); *///? } } @@ -55,8 +55,8 @@ public Component getDisplayName(ItemStack item) { return item.getStyledHoverName(); //? } else { - /* - return dev.tr7zw.transition.mc.ComponentProvider.translatable(item.getItem().getDescriptionId() + ".desc"); + + /*return dev.tr7zw.transition.mc.ComponentProvider.translatable(item.getItem().getDescriptionId() + ".desc"); *///? } } diff --git a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperServerMod.java b/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperServerMod.java similarity index 72% rename from src/main/java/dev/tr7zw/itemswapper/ItemSwapperServerMod.java rename to src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperServerMod.java index 048b210c..58dd68e0 100644 --- a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperServerMod.java +++ b/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperServerMod.java @@ -1,6 +1,5 @@ -package dev.tr7zw.itemswapper; +package dev.tr7zw.itemswapper.server; -import dev.tr7zw.itemswapper.server.ItemSwapperSharedServer; import net.fabricmc.api.DedicatedServerModInitializer; public class ItemSwapperServerMod extends ItemSwapperSharedServer implements DedicatedServerModInitializer { diff --git a/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java b/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java index b7bddc1b..85d59ece 100644 --- a/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java +++ b/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java @@ -1,15 +1,8 @@ package dev.tr7zw.itemswapper.server; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import dev.tr7zw.itemswapper.packets.DisableModPayload; -import dev.tr7zw.itemswapper.packets.RefillItemPayload; -import dev.tr7zw.itemswapper.packets.RefillSupportPayload; -import dev.tr7zw.itemswapper.packets.ShulkerSupportPayload; -import dev.tr7zw.itemswapper.packets.SwapItemPayload; -import dev.tr7zw.itemswapper.util.ServerNetworkUtil; -import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; +import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.transition.loader.networking.*; +import org.apache.logging.log4j.*; public abstract class ItemSwapperSharedServer { @@ -20,19 +13,14 @@ public abstract class ItemSwapperSharedServer { public void onLoad() { INSTANCE = this; LOGGER.info("Loading ItemSwapper server support."); - ServerPlayConnectionEvents.INIT.register((phase, init) -> { - ServerNetworkUtil.registerClientCustomPacket(ShulkerSupportPayload.class, ShulkerSupportPayload.ID, - b -> new ShulkerSupportPayload(b), (p, b) -> p.write(b)); - ServerNetworkUtil.registerClientCustomPacket(RefillSupportPayload.class, RefillSupportPayload.ID, - b -> new RefillSupportPayload(b), (p, b) -> p.write(b)); - ServerNetworkUtil.registerClientCustomPacket(DisableModPayload.class, DisableModPayload.ID, - b -> new DisableModPayload(b), (p, b) -> p.write(b)); - ServerNetworkUtil.registerServerCustomPacket(SwapItemPayload.class, SwapItemPayload.ID, - b -> new SwapItemPayload(b), (p, b) -> p.write(b), - (payload, player) -> getItemHandler().swapItem(player, payload)); - ServerNetworkUtil.registerServerCustomPacket(RefillItemPayload.class, RefillItemPayload.ID, - b -> new RefillItemPayload(b), (p, b) -> p.write(b), - (payload, player) -> getItemHandler().refillSlot(player, payload)); + ServerNetworkUtil.registerPackets(handler -> { + // Client packets + handler.registerClientCustomPacket(ShulkerSupportPayload.INSTANCE); + handler.registerClientCustomPacket(RefillSupportPayload.INSTANCE); + handler.registerClientCustomPacket(DisableModPayload.INSTANCE); + // Server packets + handler.registerServerCustomPacket(SwapItemPayload.INSTANCE, (payload, player) -> getItemHandler().swapItem(player, payload)); + handler.registerServerCustomPacket(RefillItemPayload.INSTANCE, (payload, player) -> getItemHandler().refillSlot(player, payload)); }); } diff --git a/src/main/java/dev/tr7zw/itemswapper/util/ItemUtil.java b/src/main/java/dev/tr7zw/itemswapper/util/ItemUtil.java index 611746c7..bec2394e 100644 --- a/src/main/java/dev/tr7zw/itemswapper/util/ItemUtil.java +++ b/src/main/java/dev/tr7zw/itemswapper/util/ItemUtil.java @@ -4,6 +4,8 @@ import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; +import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.transition.loader.networking.*; import org.jetbrains.annotations.NotNull; import dev.tr7zw.itemswapper.ItemSwapperSharedMod; @@ -94,7 +96,7 @@ public static boolean grabItem(Item item, boolean ignoreHotbar) { // Can't put a shulker into a shulker, so search a different spot continue; } - NetworkUtil.swapItem(slot.inventory(), slot.slot()); + ClientNetworkUtil.sendPacket(new SwapItemPayload(slot.inventory(), slot.slot())); } clientAPI.itemSwapSentEvent.callEvent(new SwapSent(slot)); return true; @@ -111,7 +113,8 @@ public static void swapWithSlot(int hudSlot) { //? } else { /*minecraft.gameMode.handleInventoryMouseClick(minecraft.player.inventoryMenu.containerId, hudSlot, - InventoryUtil.getSelectedId(minecraft.player.getInventory()), net.minecraft.world.inventory.ClickType.SWAP, minecraft.player); + InventoryUtil.getSelectedId(minecraft.player.getInventory()), + net.minecraft.world.inventory.ClickType.SWAP, minecraft.player); *///? } } diff --git a/src/main/java/dev/tr7zw/itemswapper/util/NetworkUtil.java b/src/main/java/dev/tr7zw/itemswapper/util/NetworkUtil.java deleted file mode 100644 index ee57110a..00000000 --- a/src/main/java/dev/tr7zw/itemswapper/util/NetworkUtil.java +++ /dev/null @@ -1,146 +0,0 @@ -package dev.tr7zw.itemswapper.util; - -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Function; - -import dev.tr7zw.itemswapper.packets.RefillItemPayload; -import dev.tr7zw.itemswapper.packets.SwapItemPayload; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; - -import net.minecraft.client.Minecraft; -import net.minecraft.network.FriendlyByteBuf; - -import net.minecraft.resources.*; - -//? if >= 1.20.2 { - -import net.minecraft.network.protocol.common.ServerboundCustomPayloadPacket; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -//? } else { -/* -import net.minecraft.network.protocol.game.ServerboundCustomPayloadPacket; -import dev.tr7zw.itemswapper.legacy.CustomPacketPayload; -*///? } - //? if <= 1.20.1 { - /* - import io.netty.buffer.ByteBuf; - import io.netty.buffer.Unpooled; - import net.minecraft.network.FriendlyByteBuf; - *///? } - //? if >= 1.20.5 { - -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload.Type; -import net.fabricmc.fabric.impl.networking.PayloadTypeRegistryImpl; -//? } else { -/* -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.PlayChannelHandler; -import net.minecraft.server.network.ServerGamePacketListenerImpl; -import net.minecraft.server.MinecraftServer; -import net.fabricmc.fabric.api.networking.v1.PacketSender; -import net.fabricmc.fabric.api.networking.v1.PacketSender; -import net.minecraft.client.multiplayer.ClientPacketListener; -*///? } - -public class NetworkUtil { - - private NetworkUtil() { - throw new IllegalStateException("Utility class"); - } - - public static void swapItem(int inventorySlot, int slot) { - //? if >= 1.20.2 { - - Minecraft.getInstance().getConnection() - .send(new ServerboundCustomPayloadPacket(new SwapItemPayload(inventorySlot, slot))); - //? } else { - /* - ByteBuf buf = Unpooled.buffer(8); - buf.writeInt(inventorySlot); - buf.writeInt(slot); - Minecraft.getInstance().getConnection() - .send(new ServerboundCustomPayloadPacket(SwapItemPayload.ID, new FriendlyByteBuf(buf))); - *///? } - } - - public static void refillItem(int targetSlot) { - //? if >= 1.20.2 { - - Minecraft.getInstance().getConnection() - .send(new ServerboundCustomPayloadPacket(new RefillItemPayload(targetSlot))); - //? } else { - /* - ByteBuf buf = Unpooled.buffer(4); - buf.writeInt(targetSlot); - Minecraft.getInstance().getConnection() - .send(new ServerboundCustomPayloadPacket(RefillItemPayload.ID, new FriendlyByteBuf(buf))); - *///? } - } - - public static void registerServerCustomPacket(Class type, Identifier id, - Function streamMemberEncoder, BiConsumer streamDecoder) { - //? if > 1.20.5 { - - if (PayloadTypeRegistryImpl.SERVERBOUND_PLAY.get(id) == null) { - PayloadTypeRegistryImpl.SERVERBOUND_PLAY.register(new Type<>(id), new StreamCodec() { - - @Override - public T decode(FriendlyByteBuf buffer) { - return streamMemberEncoder.apply(buffer); - } - - @Override - public void encode(FriendlyByteBuf buffer, T object) { - streamDecoder.accept(object, buffer); - } - - }); - } - //? } - } - - public static void registerClientCustomPacket(Class type, Identifier id, - Function streamMemberEncoder, BiConsumer streamDecoder, - Consumer action) { - //? if > 1.20.5 { - - if (PayloadTypeRegistryImpl.CLIENTBOUND_PLAY.get(id) == null) { - PayloadTypeRegistryImpl.CLIENTBOUND_PLAY.register(new Type<>(id), new StreamCodec() { - - @Override - public T decode(FriendlyByteBuf buffer) { - return streamMemberEncoder.apply(buffer); - } - - @Override - public void encode(FriendlyByteBuf buffer, T object) { - streamDecoder.accept(object, buffer); - } - - }); - } - ClientPlayNetworking.registerReceiver(new Type(id), new ClientPlayNetworking.PlayPayloadHandler() { - - @Override - public void receive(T payload, - net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking.Context context) { - action.accept(payload); - - } - }); - //? } else { - /* - ClientPlayNetworking.registerGlobalReceiver(id, - new net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking.PlayChannelHandler() { - - @Override - public void receive(Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, - PacketSender responseSender) { - action.accept(streamMemberEncoder.apply(buf)); - } - }); - *///? } - } - -} diff --git a/src/main/java/dev/tr7zw/itemswapper/util/RenderHelper.java b/src/main/java/dev/tr7zw/itemswapper/util/RenderHelper.java index 9d8e331a..7387713a 100644 --- a/src/main/java/dev/tr7zw/itemswapper/util/RenderHelper.java +++ b/src/main/java/dev/tr7zw/itemswapper/util/RenderHelper.java @@ -105,8 +105,8 @@ public static void renderSlot(RenderContext graphics, int x, int y, Player arg, SlotEffect effect, int count) { if (!arg2.isEmpty()) { //? if < 1.21.6 { - /* - graphics.getPose().pushPose(); + + /*graphics.getPose().pushPose(); graphics.getPose().translate(0, 0, 200); *///? } ItemStack copy = arg2.copy(); @@ -114,8 +114,8 @@ public static void renderSlot(RenderContext graphics, int x, int y, Player arg, if (effect != SlotEffect.NONE) { RenderHelper.renderUnavailableItem(graphics, arg, copy, x, y, k, effect); //? if < 1.21.6 { - /* - graphics.getPose().popPose(); + + /*graphics.getPose().popPose(); *///? } return; } @@ -124,10 +124,10 @@ public static void renderSlot(RenderContext graphics, int x, int y, Player arg, //? } else if >= 1.21.2 { - // com.mojang.blaze3d.systems.RenderSystem.setShader(net.minecraft.client.renderer.CoreShaders.POSITION_COLOR); - //? } else { - /* - com.mojang.blaze3d.systems.RenderSystem + /*com.mojang.blaze3d.systems.RenderSystem.setShader(net.minecraft.client.renderer.CoreShaders.POSITION_COLOR); + *///? } else { + + /*com.mojang.blaze3d.systems.RenderSystem .setShader(net.minecraft.client.renderer.GameRenderer::getPositionColorShader); *///? } graphics.renderItemDecorations(minecraft.font, copy, x, y); @@ -135,8 +135,8 @@ public static void renderSlot(RenderContext graphics, int x, int y, Player arg, if (count > 1) RenderHelper.renderGuiItemCount(minecraft.font, "" + Math.min(64, count), x, y, color, graphics); //? if < 1.21.6 { - /* - graphics.getPose().popPose(); + + /*graphics.getPose().popPose(); *///? } } } @@ -177,8 +177,8 @@ public static void renderSelectedItemName(Component comp, ItemStack arg2, boolea int originY = minecraft.getWindow().getGuiScaledHeight() / 2; TextColor textColor = arg2.getHoverName().getStyle().getColor(); //? if <= 1.20.4 { - /* - ChatFormatting rarityColor = arg2.getRarity().color; + + /*ChatFormatting rarityColor = arg2.getRarity().color; *///? } else { ChatFormatting rarityColor = arg2.getRarity().color(); diff --git a/src/main/java/dev/tr7zw/itemswapper/util/ServerNetworkUtil.java b/src/main/java/dev/tr7zw/itemswapper/util/ServerNetworkUtil.java deleted file mode 100644 index 48406149..00000000 --- a/src/main/java/dev/tr7zw/itemswapper/util/ServerNetworkUtil.java +++ /dev/null @@ -1,150 +0,0 @@ -package dev.tr7zw.itemswapper.util; - -import java.util.function.BiConsumer; -import java.util.function.Function; - -import dev.tr7zw.itemswapper.packets.DisableModPayload; -import dev.tr7zw.itemswapper.packets.RefillSupportPayload; -import dev.tr7zw.itemswapper.packets.ShulkerSupportPayload; -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; -import net.minecraft.network.FriendlyByteBuf; - -import net.minecraft.resources.*; -import net.minecraft.server.level.ServerPlayer; - -//? if >= 1.20.5 { - -import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; -//? } -//? if >= 1.20.2 { - -import net.minecraft.network.protocol.common.*; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -//? } else { -/* -import net.minecraft.network.protocol.game.*; -import dev.tr7zw.itemswapper.legacy.CustomPacketPayload; -*///? } - //? if <= 1.20.1 { - /* - import io.netty.buffer.ByteBuf; - import io.netty.buffer.Unpooled; - import net.minecraft.network.FriendlyByteBuf; - *///? } - //? if >= 1.20.5 { - -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload.Type; -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.Context; -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.PlayPayloadHandler; -import net.fabricmc.fabric.impl.networking.PayloadTypeRegistryImpl; -//? } else { -/* -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.PlayChannelHandler; -import net.minecraft.server.network.ServerGamePacketListenerImpl; -import net.minecraft.server.MinecraftServer; -import net.fabricmc.fabric.api.networking.v1.PacketSender; -*///? } - -public class ServerNetworkUtil { - - private ServerNetworkUtil() { - throw new IllegalStateException("Utility class"); - } - - public static void sendShulkerSupportPacket(ServerPlayer player, boolean enabled) { - //? if >= 1.20.2 { - - player.connection.send(new ClientboundCustomPayloadPacket(new ShulkerSupportPayload(enabled))); - //? } else { - /* - player.connection.send(new ClientboundCustomPayloadPacket(ShulkerSupportPayload.ID, - new FriendlyByteBuf(Unpooled.copyBoolean(enabled)))); - *///? } - } - - public static void sendRefillSupportPacket(ServerPlayer player, boolean enabled) { - //? if >= 1.20.2 { - - player.connection.send(new ClientboundCustomPayloadPacket(new RefillSupportPayload(enabled))); - //? } else { - /* - player.connection.send(new ClientboundCustomPayloadPacket(RefillSupportPayload.ID, - new FriendlyByteBuf(Unpooled.copyBoolean(enabled)))); - *///? } - } - - public static void sendDisableModPacket(ServerPlayer player, boolean enabled) { - //? if >= 1.20.2 { - - player.connection.send(new ClientboundCustomPayloadPacket(new DisableModPayload(enabled))); - //? } else { - /* - player.connection.send(new ClientboundCustomPayloadPacket(DisableModPayload.ID, - new FriendlyByteBuf(Unpooled.copyBoolean(enabled)))); - *///? } - } - - public static void registerClientCustomPacket(Class type, Identifier id, - Function streamMemberEncoder, BiConsumer streamDecoder) { - //? if > 1.20.5 { - - if (PayloadTypeRegistryImpl.CLIENTBOUND_PLAY.get(id) == null) { - PayloadTypeRegistry.clientboundPlay().register(new Type<>(id), new StreamCodec() { - - @Override - public T decode(FriendlyByteBuf buffer) { - return streamMemberEncoder.apply(buffer); - } - - @Override - public void encode(FriendlyByteBuf buffer, T object) { - streamDecoder.accept(object, buffer); - } - - }); - } - //? } - } - - public static void registerServerCustomPacket(Class type, Identifier id, - Function streamMemberEncoder, BiConsumer streamDecoder, - BiConsumer action) { - //? if > 1.20.5 { - - if (PayloadTypeRegistryImpl.SERVERBOUND_PLAY.get(id) == null) { - PayloadTypeRegistry.serverboundPlay().register(new Type<>(id), new StreamCodec() { - - @Override - public T decode(FriendlyByteBuf buffer) { - return streamMemberEncoder.apply(buffer); - } - - @Override - public void encode(FriendlyByteBuf buffer, T object) { - streamDecoder.accept(object, buffer); - } - - }); - } - ServerPlayNetworking.registerGlobalReceiver(new Type(id), new PlayPayloadHandler() { - - @Override - public void receive(T payload, Context context) { - action.accept(payload, context.player()); - } - }); - //? } else { - /* - ServerPlayNetworking.registerGlobalReceiver(id, new PlayChannelHandler() { - - @Override - public void receive(MinecraftServer server, ServerPlayer player, ServerGamePacketListenerImpl handler, - FriendlyByteBuf buf, PacketSender responseSender) { - action.accept(streamMemberEncoder.apply(buf), player); - } - }); - *///? } - } - -} diff --git a/src/main/java/dev/tr7zw/itemswapper/util/ServerUtil.java b/src/main/java/dev/tr7zw/itemswapper/util/ServerUtil.java index 6a04a28b..f6b8a30c 100644 --- a/src/main/java/dev/tr7zw/itemswapper/util/ServerUtil.java +++ b/src/main/java/dev/tr7zw/itemswapper/util/ServerUtil.java @@ -14,8 +14,8 @@ public static boolean isSame(ItemStack a, ItemStack b) { // return ItemStack.isSame(a, b); //? } else if <= 1.20.4 { - /* - return ItemStack.isSameItemSameTags(a, b); + + /*return ItemStack.isSameItemSameTags(a, b); *///? } else { return ItemStack.isSameItemSameComponents(a, b); @@ -27,11 +27,11 @@ public static Identifier getResourceLocation(String namespace, String path) { return Identifier.fromNamespaceAndPath(namespace, path); //? } else if >= 1.21.0 { - /* - return Identifier.fromNamespaceAndPath(namespace, path); + + /*return Identifier.fromNamespaceAndPath(namespace, path); *///? } else { - /* - return new Identifier(namespace, path); + + /*return new Identifier(namespace, path); *///? } } @@ -40,11 +40,11 @@ public static Identifier getResourceLocation(String key) { return Identifier.parse(key); //? } else if >= 1.21.0 { - /* - return Identifier.parse(key); + + /*return Identifier.parse(key); *///? } else { - /* - return new Identifier(key); + + /*return new Identifier(key); *///? } } diff --git a/src/main/java/dev/tr7zw/itemswapper/util/ShulkerHelper.java b/src/main/java/dev/tr7zw/itemswapper/util/ShulkerHelper.java index b77a08f6..df020a2e 100644 --- a/src/main/java/dev/tr7zw/itemswapper/util/ShulkerHelper.java +++ b/src/main/java/dev/tr7zw/itemswapper/util/ShulkerHelper.java @@ -9,8 +9,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; //? if <= 1.20.4 { -/* -import net.minecraft.world.level.block.entity.BlockEntityType; + +/*import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.ContainerHelper; import net.minecraft.world.item.BlockItem; @@ -29,8 +29,8 @@ public static NonNullList getItems(ItemStack shulker) { return null; } //? if <= 1.20.4 { - /* - CompoundTag tag = BlockItem.getBlockEntityData(shulker); + + /*CompoundTag tag = BlockItem.getBlockEntityData(shulker); if (tag != null && tag.contains("Items", CompoundTag.TAG_LIST)) { NonNullList items = NonNullList.withSize(3 * 9, ItemStack.EMPTY); ContainerHelper.loadAllItems(BlockItem.getBlockEntityData(shulker), items); @@ -45,8 +45,8 @@ public static NonNullList getItems(ItemStack shulker) { list.addAll( shulker.get(net.minecraft.core.component.DataComponents.CONTAINER).allItemsCopyStream().toList()); //? } else { - /* - list.addAll(shulker.get(net.minecraft.core.component.DataComponents.CONTAINER).stream().toList()); + + /*list.addAll(shulker.get(net.minecraft.core.component.DataComponents.CONTAINER).stream().toList()); *///? } return list; } @@ -56,8 +56,8 @@ public static NonNullList getItems(ItemStack shulker) { public static void setItem(ItemStack shulker, NonNullList items) { //? if <= 1.20.4 { - /* - CompoundTag tag = BlockItem.getBlockEntityData(shulker); + + /*CompoundTag tag = BlockItem.getBlockEntityData(shulker); CompoundTag rootTag = ContainerHelper.saveAllItems(tag != null ? tag : new CompoundTag(), items); BlockItem.setBlockEntityData(shulker, BlockEntityType.SHULKER_BOX, rootTag); *///? } else { diff --git a/src/main/java/dev/tr7zw/itemswapper/util/WidgetUtil.java b/src/main/java/dev/tr7zw/itemswapper/util/WidgetUtil.java index 8c99d049..8afae069 100644 --- a/src/main/java/dev/tr7zw/itemswapper/util/WidgetUtil.java +++ b/src/main/java/dev/tr7zw/itemswapper/util/WidgetUtil.java @@ -74,18 +74,18 @@ private WidgetUtil() { public static void renderBackground(WidgetArea widgetArea, RenderContext graphics, int originX, int originY) { //? if < 1.21.6 { - /* - com.mojang.blaze3d.systems.RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + + /*com.mojang.blaze3d.systems.RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); *///? } //? if >= 1.21.5 { //? } else if >= 1.21.2 { - // com.mojang.blaze3d.systems.RenderSystem.enableBlend(); - // com.mojang.blaze3d.systems.RenderSystem.setShader(net.minecraft.client.renderer.CoreShaders.POSITION_TEX); - //? } else { - /* - com.mojang.blaze3d.systems.RenderSystem.enableBlend(); + /*com.mojang.blaze3d.systems.RenderSystem.enableBlend(); + com.mojang.blaze3d.systems.RenderSystem.setShader(net.minecraft.client.renderer.CoreShaders.POSITION_TEX); + *///? } else { + + /*com.mojang.blaze3d.systems.RenderSystem.enableBlend(); com.mojang.blaze3d.systems.RenderSystem .setShader(net.minecraft.client.renderer.GameRenderer::getPositionTexShader); *///? } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 92dcc87e..678d30d9 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -55,7 +55,7 @@ "dev.tr7zw.itemswapper.ItemSwapperMod" ], "server": [ - "dev.tr7zw.itemswapper.ItemSwapperServerMod" + "dev.tr7zw.itemswapper.server.ItemSwapperServerMod" ], "modmenu": [ "dev.tr7zw.itemswapper.ItemSwapperModMenu" diff --git a/src/main/resources/itemswapper.mixins.json b/src/main/resources/itemswapper.mixins.json index dd2df16d..e98fd668 100644 --- a/src/main/resources/itemswapper.mixins.json +++ b/src/main/resources/itemswapper.mixins.json @@ -5,15 +5,11 @@ "compatibilityLevel": "JAVA_17", "plugin": "dev.tr7zw.itemswapper.compat.ItemSwapperMixinPlugin", "mixins": [ - "PlayerListMixin", - "ServerboundCustomPayloadPacketMixin", - "ServerGamePacketListenerImplMixin" + "PlayerListMixin" ], "client": [ "AbstractContainerScreenMixin", - "ClientboundCustomPayloadPacketMixin", "ClientLevelMixin", - "ClientPacketListenerMixin", "ContainerScreenMixin", "InstrumentItemMixin", "KeyboardHandlerMixin", diff --git a/src/test/java/dev/tr7zw/tests/MixinTests.java b/src/test/java/dev/tr7zw/tests/MixinTests.java index 8b4bc597..58c86965 100644 --- a/src/test/java/dev/tr7zw/tests/MixinTests.java +++ b/src/test/java/dev/tr7zw/tests/MixinTests.java @@ -20,8 +20,8 @@ import net.minecraft.world.item.Items; //? } else { -/* -import net.minecraft.world.item.RecordItem; + +/*import net.minecraft.world.item.RecordItem; *///? } public class MixinTests { @@ -46,8 +46,8 @@ public void testMixins() { objenesis.newInstance(Items.class); //? } else { - /* - objenesis.newInstance(RecordItem.class); + + /*objenesis.newInstance(RecordItem.class); *///? } objenesis.newInstance(ServerGamePacketListenerImpl.class); } From 8873f487790087c46091dd4b35003aa713e779e0 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Sun, 19 Apr 2026 20:47:47 +0200 Subject: [PATCH 2/7] Formatting, remove redundant import --- .../tr7zw/itemswapper/packets/DisableModPayload.java | 10 +--------- .../tr7zw/itemswapper/packets/RefillItemPayload.java | 11 +---------- .../itemswapper/packets/RefillSupportPayload.java | 10 +--------- .../itemswapper/packets/ShulkerSupportPayload.java | 10 +--------- .../tr7zw/itemswapper/packets/SwapItemPayload.java | 10 +--------- .../itemswapper/server/ItemSwapperSharedServer.java | 6 ++++-- 6 files changed, 9 insertions(+), 48 deletions(-) diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java index f28d8489..d32e8d74 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java @@ -6,15 +6,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; -//? if >= 1.20.2 { - -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -//? } else { -/* -import dev.tr7zw.itemswapper.legacy.CustomPacketPayload; -*///? } - -public record DisableModPayload(boolean enabled) implements CustomPacketPayload, CustomPacketPayloadSupport { +public record DisableModPayload(boolean enabled) implements CustomPacketPayloadSupport { public static final DisableModPayload INSTANCE = new DisableModPayload(false); public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "disable"); diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java index 266c3e8d..23f5f452 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java @@ -6,16 +6,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; -//? if >= 1.20.2 { - -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; - -//? } else { -/* -import dev.tr7zw.itemswapper.legacy.CustomPacketPayload; -*///? } - -public record RefillItemPayload(int slot) implements CustomPacketPayload, CustomPacketPayloadSupport { +public record RefillItemPayload(int slot) implements CustomPacketPayloadSupport { public static final RefillItemPayload INSTANCE = new RefillItemPayload(0); public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "refill"); diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java index e3d7d90a..7a185722 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java @@ -6,15 +6,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; -//? if >= 1.20.2 { - -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -//? } else { -/* -import dev.tr7zw.itemswapper.legacy.CustomPacketPayload; -*///? } - -public record RefillSupportPayload(boolean enabled) implements CustomPacketPayload, CustomPacketPayloadSupport { +public record RefillSupportPayload(boolean enabled) implements CustomPacketPayloadSupport { public static final RefillSupportPayload INSTANCE = new RefillSupportPayload(true); public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "enablerefill"); diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java index 9843541a..2e125f89 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java @@ -6,15 +6,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; -//? if >= 1.20.2 { - -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -//? } else { -/* -import dev.tr7zw.itemswapper.legacy.CustomPacketPayload; -*///? } - -public record ShulkerSupportPayload(boolean enabled) implements CustomPacketPayload, CustomPacketPayloadSupport { +public record ShulkerSupportPayload(boolean enabled) implements CustomPacketPayloadSupport { public static final ShulkerSupportPayload INSTANCE = new ShulkerSupportPayload(false); public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "enableshulker"); diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java index 5df902ee..3b0420f3 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java @@ -6,15 +6,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; -//? if >= 1.20.2 { - -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -//? } else { -/* -import dev.tr7zw.itemswapper.legacy.CustomPacketPayload; -*///? } - -public record SwapItemPayload(int inventorySlot, int slot) implements CustomPacketPayload, CustomPacketPayloadSupport { +public record SwapItemPayload(int inventorySlot, int slot) implements CustomPacketPayloadSupport { public static final SwapItemPayload INSTANCE = new SwapItemPayload(0, 0); public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "swap"); diff --git a/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java b/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java index 85d59ece..4f055441 100644 --- a/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java +++ b/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java @@ -19,8 +19,10 @@ public void onLoad() { handler.registerClientCustomPacket(RefillSupportPayload.INSTANCE); handler.registerClientCustomPacket(DisableModPayload.INSTANCE); // Server packets - handler.registerServerCustomPacket(SwapItemPayload.INSTANCE, (payload, player) -> getItemHandler().swapItem(player, payload)); - handler.registerServerCustomPacket(RefillItemPayload.INSTANCE, (payload, player) -> getItemHandler().refillSlot(player, payload)); + handler.registerServerCustomPacket(SwapItemPayload.INSTANCE, + (payload, player) -> getItemHandler().swapItem(player, payload)); + handler.registerServerCustomPacket(RefillItemPayload.INSTANCE, + (payload, player) -> getItemHandler().refillSlot(player, payload)); }); } From 346803990ee8090181e1fb17f6681bdd9fb08dcc Mon Sep 17 00:00:00 2001 From: tr7zw Date: Sun, 26 Apr 2026 15:42:02 +0200 Subject: [PATCH 3/7] Remove circular dependencies, clean util mess --- .../itemswapper/ItemSwapperSharedMod.java | 7 +- .../itemswapper/compat/ControlifySupport.java | 3 +- .../compat/ScreenCompatibilityProvider.java | 7 ++ .../itemswapper/compat/ViveCraftSupport.java | 2 +- .../itemswapper/manager/ItemManager.java | 72 +++++++++++++++++ .../manager/SwapperResourceLoader.java | 7 +- .../manager/itemgroups/ItemGroup.java | 12 +++ .../shortcuts/ClearCurrentSlotShortcut.java | 5 +- .../manager/shortcuts/LastItemShortcut.java | 3 +- .../mixin/ContainerScreenMixin.java | 4 +- .../itemswapper/mixin/LitematicaMixin.java | 8 +- .../itemswapper/mixin/MinecraftMixin.java | 3 +- .../itemswapper/overlay/ItemListOverlay.java | 2 +- .../overlay/ItemSwapperUIAbstractInput.java | 3 +- .../overlay/logic/BlockListWidget.java | 5 +- .../overlay/logic/ContainerWidget.java | 3 +- .../logic/InventoryAbstractWidget.java | 3 +- .../overlay/logic/ListContentWidget.java | 9 ++- .../overlay/logic/PaletteWidget.java | 12 +-- .../packets/DisableModPayload.java | 4 +- .../packets/RefillItemPayload.java | 4 +- .../packets/RefillSupportPayload.java | 4 +- .../packets/ShulkerSupportPayload.java | 4 +- .../itemswapper/packets/SwapItemPayload.java | 4 +- .../itemswapper/server/ServerItemHandler.java | 16 +++- .../dev/tr7zw/itemswapper/util/ItemUtil.java | 80 ++----------------- .../tr7zw/itemswapper/util/RenderHelper.java | 12 +-- .../tr7zw/itemswapper/util/ServerUtil.java | 51 ------------ 28 files changed, 163 insertions(+), 186 deletions(-) create mode 100644 src/main/java/dev/tr7zw/itemswapper/compat/ScreenCompatibilityProvider.java create mode 100644 src/main/java/dev/tr7zw/itemswapper/manager/ItemManager.java delete mode 100644 src/main/java/dev/tr7zw/itemswapper/util/ServerUtil.java diff --git a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java index 8a331b05..370d36a2 100644 --- a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java +++ b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java @@ -2,6 +2,8 @@ import java.util.List; +import dev.tr7zw.itemswapper.api.client.*; +import dev.tr7zw.itemswapper.manager.*; import dev.tr7zw.transition.mc.*; import org.jetbrains.annotations.NotNull; @@ -11,9 +13,6 @@ import dev.tr7zw.itemswapper.compat.AmecsAPISupport; import dev.tr7zw.itemswapper.compat.ViveCraftSupport; import dev.tr7zw.itemswapper.config.ConfigManager; -import dev.tr7zw.itemswapper.manager.BlockTextureManager; -import dev.tr7zw.itemswapper.manager.ClientProviderManager; -import dev.tr7zw.itemswapper.manager.ItemGroupManager; import dev.tr7zw.itemswapper.manager.ItemGroupManager.Page; import dev.tr7zw.itemswapper.manager.itemgroups.ItemGroup; import dev.tr7zw.itemswapper.manager.itemgroups.ItemList; @@ -42,6 +41,8 @@ public abstract class ItemSwapperSharedMod extends ItemSwapperBase { private final ClientProviderManager clientProviderManager = new ClientProviderManager(); @Getter private final BlockTextureManager blockTextureManager = new BlockTextureManager(); + @Getter + private final ItemManager itemManager = new ItemManager(clientProviderManager, ItemSwapperClientAPI.getInstance()); private final List enableOnIp = cacheManager.getCache().enableOnIp; private final List disableOnIp = cacheManager.getCache().disableOnIp; diff --git a/src/main/java/dev/tr7zw/itemswapper/compat/ControlifySupport.java b/src/main/java/dev/tr7zw/itemswapper/compat/ControlifySupport.java index c296f1b0..8655e091 100644 --- a/src/main/java/dev/tr7zw/itemswapper/compat/ControlifySupport.java +++ b/src/main/java/dev/tr7zw/itemswapper/compat/ControlifySupport.java @@ -1,7 +1,6 @@ package dev.tr7zw.itemswapper.compat; import dev.tr7zw.itemswapper.ItemSwapperBase; -import dev.tr7zw.itemswapper.overlay.ItemSwapperUIAbstractInput; public class ControlifySupport { @@ -25,7 +24,7 @@ public boolean isAvailable() { return isAvailable; } - public boolean isActive(ItemSwapperUIAbstractInput input) { + public boolean isActive(ScreenCompatibilityProvider input) { return isAvailable() && input.hasVCursorHandler(); } diff --git a/src/main/java/dev/tr7zw/itemswapper/compat/ScreenCompatibilityProvider.java b/src/main/java/dev/tr7zw/itemswapper/compat/ScreenCompatibilityProvider.java new file mode 100644 index 00000000..6062b2e6 --- /dev/null +++ b/src/main/java/dev/tr7zw/itemswapper/compat/ScreenCompatibilityProvider.java @@ -0,0 +1,7 @@ +package dev.tr7zw.itemswapper.compat; + +public interface ScreenCompatibilityProvider { + + boolean hasVCursorHandler(); + +} diff --git a/src/main/java/dev/tr7zw/itemswapper/compat/ViveCraftSupport.java b/src/main/java/dev/tr7zw/itemswapper/compat/ViveCraftSupport.java index d59ae50d..24408bd5 100644 --- a/src/main/java/dev/tr7zw/itemswapper/compat/ViveCraftSupport.java +++ b/src/main/java/dev/tr7zw/itemswapper/compat/ViveCraftSupport.java @@ -34,7 +34,7 @@ public boolean isAvailable() { } public boolean isActive() { - return isAvailable() && ConfigManager.getInstance().getConfig().vivecraftCompat; + return isAvailable() && configManager.getConfig().vivecraftCompat; } } diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/ItemManager.java b/src/main/java/dev/tr7zw/itemswapper/manager/ItemManager.java new file mode 100644 index 00000000..a7a81e08 --- /dev/null +++ b/src/main/java/dev/tr7zw/itemswapper/manager/ItemManager.java @@ -0,0 +1,72 @@ +package dev.tr7zw.itemswapper.manager; + +import dev.tr7zw.itemswapper.*; +import dev.tr7zw.itemswapper.api.*; +import dev.tr7zw.itemswapper.api.client.*; +import dev.tr7zw.itemswapper.manager.itemgroups.*; +import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.itemswapper.util.*; +import dev.tr7zw.itemswapper.util.ItemUtil; +import dev.tr7zw.transition.loader.networking.*; +import dev.tr7zw.transition.mc.*; +import lombok.*; +import net.minecraft.client.*; +import net.minecraft.network.chat.*; +import net.minecraft.world.item.*; + +import java.util.*; +import java.util.concurrent.atomic.*; + +@RequiredArgsConstructor +public class ItemManager { + + private final Minecraft minecraft = Minecraft.getInstance(); + private final ClientProviderManager providerManager; + private final ItemSwapperClientAPI clientAPI; + + public boolean grabItem(Item item, boolean ignoreHotbar) { + List slots = providerManager.findSlotsMatchingItem(item, false, ignoreHotbar); + for (AvailableSlot slot : slots) { + ItemSwapperClientAPI.OnSwap event = clientAPI.prepareItemSwapEvent + .callEvent(new ItemSwapperClientAPI.OnSwap(slot, new AtomicBoolean())); + if (event.canceled().get()) { + // interaction canceled by some other mod + return false; + } + if (slot.inventory() == -1) { + ItemUtil.swapWithSlot(ItemUtil.inventorySlotToHudSlot(slot.slot())); + } else { + if (ShulkerHelper.isShulker(InventoryUtil.getSelected(minecraft.player.getInventory()).getItem())) { + // Can't put a shulker into a shulker, so search a different spot + continue; + } + ClientNetworkUtil.sendPacket(new SwapItemPayload(slot.inventory(), slot.slot())); + } + clientAPI.itemSwapSentEvent.callEvent(new ItemSwapperClientAPI.SwapSent(slot)); + return true; + } + return false; + } + + public Component getDisplayname(ItemStack item) { + if (dev.tr7zw.transition.mc.ItemUtil.hasCustomName(item)) { + return item.getHoverName().copy(); + } + NameProvider provider = providerManager.getNameProvider(item); + if (provider != null) { + return provider.getDisplayName(item).copy(); + } + return item.getHoverName().copy(); + } + + public Component getDisplayname(ItemEntry entry) { + if (entry == null) { + return null; + } + if (entry.getNameOverwride() != null) { + return entry.getNameOverwride(); + } + return getDisplayname(entry.getItem().getDefaultInstance()); + } + +} diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/SwapperResourceLoader.java b/src/main/java/dev/tr7zw/itemswapper/manager/SwapperResourceLoader.java index 3c89aa30..23a85649 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/SwapperResourceLoader.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/SwapperResourceLoader.java @@ -85,7 +85,7 @@ private void processEntry(Entry entry) { } Item[] items = getItemArray(entry.getKey(), entry.getValue(), entry.getKey().getPath().startsWith("wheel")); if (items != null) { - Builder group = ItemGroup.builder().withId(entry.getKey()).withItems(ItemUtil.toDefault(items)); + Builder group = ItemGroup.builder().withId(entry.getKey()).withItems(items); if (entry.getKey().getPath().startsWith("wheel_primary/")) { itemGroups.add(group.withPriority(100)); } @@ -427,9 +427,8 @@ private void processCombined(Identifier jsonLocation, JsonElement json) { var ownId = getResourceLocation(jsonLocation.getNamespace(), jsonLocation.getPath() + i); int next = i + 1 == lists.size() ? 0 : i + 1; var nextId = getResourceLocation(jsonLocation.getNamespace(), jsonLocation.getPath() + next); - itemGroups.add( - ItemGroup.builder().withId(ownId).withForcedLink(nextId).withItems(ItemUtil.toDefault(lists.get(i))) - .withShortcuts(Arrays.asList(new LinkShortcut(nextId)))); + itemGroups.add(ItemGroup.builder().withId(ownId).withForcedLink(nextId).withItems(lists.get(i)) + .withShortcuts(Arrays.asList(new LinkShortcut(nextId)))); } } diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemGroup.java b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemGroup.java index 400aad80..0ac2c963 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemGroup.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemGroup.java @@ -153,6 +153,18 @@ public Builder withItems(ItemEntry[] items) { return this; } + public Builder withItems(Item[] items) { + return withItems(toDefault(items)); + } + + private ItemEntry[] toDefault(Item[] items) { + ItemEntry[] entries = new ItemEntry[items.length]; + for (int i = 0; i < items.length; i++) { + entries[i] = new ItemEntry(items[i], null); + } + return entries; + } + public Builder withOpenOnlyItems(Set openOnlyItems) { this.openOnlyItems = openOnlyItems; return this; diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/ClearCurrentSlotShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/ClearCurrentSlotShortcut.java index 8e1e93a3..6b3cbb50 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/ClearCurrentSlotShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/ClearCurrentSlotShortcut.java @@ -1,11 +1,12 @@ package dev.tr7zw.itemswapper.manager.shortcuts; import static dev.tr7zw.transition.mc.GeneralUtil.getResourceLocation; + +import dev.tr7zw.itemswapper.*; import dev.tr7zw.itemswapper.manager.itemgroups.Icon; import dev.tr7zw.itemswapper.manager.itemgroups.Shortcut; import dev.tr7zw.itemswapper.manager.itemgroups.Icon.TextureIcon; import dev.tr7zw.itemswapper.overlay.SwitchItemOverlay; -import dev.tr7zw.itemswapper.util.ItemUtil; import dev.tr7zw.transition.mc.ComponentProvider; import net.minecraft.client.Minecraft; @@ -28,7 +29,7 @@ public Icon getIcon() { @Override public boolean invoke(SwitchItemOverlay overlay, ActionType action, int xOffset, int yOffset) { - ItemUtil.grabItem(Items.AIR, true); + ItemSwapperSharedMod.instance.getItemManager().grabItem(Items.AIR, true); if (action == ActionType.SECONDARY_CLICK) { overlay.setHideClearSlotShortcut(true); // reopen to re-init the UI diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LastItemShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LastItemShortcut.java index 8dffffb5..15ba1741 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LastItemShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LastItemShortcut.java @@ -6,7 +6,6 @@ import dev.tr7zw.itemswapper.manager.itemgroups.Shortcut; import dev.tr7zw.itemswapper.manager.itemgroups.Icon.ItemIcon; import dev.tr7zw.itemswapper.overlay.SwitchItemOverlay; -import dev.tr7zw.itemswapper.util.ItemUtil; import dev.tr7zw.transition.mc.ComponentProvider; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; @@ -35,7 +34,7 @@ public boolean invoke(SwitchItemOverlay overlay, ActionType action, int xOffset, ItemSwapperSharedMod.instance.openPage(lastPage); return true; } else { - ItemUtil.grabItem(lastItem, true); + ItemSwapperSharedMod.instance.getItemManager().grabItem(lastItem, true); return false; } } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/ContainerScreenMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/ContainerScreenMixin.java index 939bcc25..c1c80086 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/ContainerScreenMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/ContainerScreenMixin.java @@ -60,8 +60,8 @@ public void render(PoseStack graphics, int i, int j, float f, CallbackInfo ci) { overlay.setForceAvailable(true); overlay.setHideShortcuts(true); overlay.setHideCursor(true); - overlay.openItemGroup(ItemGroup.builder().withItems(ItemUtil.toDefault(items)).build()); // init after setting - // values + overlay.openItemGroup(ItemGroup.builder().withItems(items).build()); // init after setting + // values //? if >= 26.1 { diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/LitematicaMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/LitematicaMixin.java index 24fd15e5..6864d831 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/LitematicaMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/LitematicaMixin.java @@ -31,10 +31,10 @@ private static void doSchematicWorldPickBlockHook(boolean closest, Minecraft mc, if (ConfigManager.getInstance().getConfig().pickblockOnToolsWeapons != PickBlockMode.ALLOW) { ItemList list = ItemSwapperSharedMod.instance.getItemGroupManager() .getList(mc.player.getMainHandItem().getItem()); - + if (list != null && (list.getId().equals(getResourceLocation("itemswapper", "v2/weapons")) || list.getId().equals(getResourceLocation("itemswapper", "v2/tools")))) { - + if (ConfigManager.getInstance().getConfig().pickblockOnToolsWeapons == PickBlockMode.PREVENT_ON_TOOL) { // skip Litematica logic ci.setReturnValue(true); @@ -45,7 +45,7 @@ private static void doSchematicWorldPickBlockHook(boolean closest, Minecraft mc, } } // pickblock from shulker - + BlockPos pos; pos = RayTraceUtils.getSchematicWorldTraceIfClosest(mc.level, mc.player, 6); if (pos != null) { @@ -53,7 +53,7 @@ private static void doSchematicWorldPickBlockHook(boolean closest, Minecraft mc, if (world != null) { BlockState state = world.getBlockState(pos); ItemStack stack = MaterialCache.getInstance().getRequiredBuildItemForState(state, world, pos); - ItemUtil.grabItem(stack.getItem(), false); + ItemSwapperSharedMod.instance.getItemManager().grabItem(stack.getItem(), false); ci.setReturnValue(true); ci.cancel(); } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/MinecraftMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/MinecraftMixin.java index 097626d9..f02a3979 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/MinecraftMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/MinecraftMixin.java @@ -25,7 +25,6 @@ import dev.tr7zw.itemswapper.config.PickBlockMode; import dev.tr7zw.itemswapper.manager.SwapperResourceLoader; import dev.tr7zw.itemswapper.manager.itemgroups.ItemList; -import dev.tr7zw.itemswapper.util.ItemUtil; import net.minecraft.server.packs.resources.ReloadableResourceManager; import net.minecraft.client.Minecraft; @@ -164,7 +163,7 @@ private void pickBlockShulkerSupport(CallbackInfo ci, boolean creative, BlockEnt if (slotId != -1) { return; } - ItemUtil.grabItem(stack.getItem(), false); + ItemSwapperSharedMod.instance.getItemManager().grabItem(stack.getItem(), false); ci.cancel(); } diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java index 77b99b78..fed2d81c 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java @@ -227,7 +227,7 @@ private void renderEntry(RenderContext graphics, Identifier background, int id, /*graphics.getPose().popPose(); *///? } - var name = ItemUtil.getDisplayname(slot.item()); + var name = ItemSwapperSharedMod.instance.getItemManager().getDisplayname(slot.item()); if (selectedEntry != id && name instanceof MutableComponent mutName) { mutName.withStyle(ChatFormatting.GRAY); } diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemSwapperUIAbstractInput.java b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemSwapperUIAbstractInput.java index 16d65dda..99fa0ca7 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemSwapperUIAbstractInput.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemSwapperUIAbstractInput.java @@ -4,10 +4,11 @@ import dev.tr7zw.itemswapper.ItemSwapperSharedMod; import dev.tr7zw.itemswapper.ItemSwapperUI; +import dev.tr7zw.itemswapper.compat.*; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; -public abstract class ItemSwapperUIAbstractInput extends Screen implements ItemSwapperUI { +public abstract class ItemSwapperUIAbstractInput extends Screen implements ItemSwapperUI, ScreenCompatibilityProvider { private BiConsumer vCursorHandler = null; diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/BlockListWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/BlockListWidget.java index 54d43f19..57fb24ef 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/BlockListWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/BlockListWidget.java @@ -70,7 +70,7 @@ public boolean onPrimaryClick(SwitchItemOverlay overlay, GuiSlot guiSlot, int xO .setLastPage(overlay.getLastPages().get(overlay.getLastPages().size() - 1)); return false; } - boolean changed = ItemUtil.grabItem(item, false); + boolean changed = ItemSwapperSharedMod.instance.getItemManager().grabItem(item, false); if (changed) { ItemSwapperSharedMod.instance.setLastItem(item); ItemSwapperSharedMod.instance @@ -100,7 +100,8 @@ public void renderSelectedSlotName(GuiSlot selected, int yOffset, int maxWidth, availableSlots.get(0).item(), false, yOffset, maxWidth, graphics); } else { RenderHelper.renderSelectedItemName( - ItemUtil.getDisplayname(blocks.get(selected.id()).asItem().getDefaultInstance()), + ItemSwapperSharedMod.instance.getItemManager() + .getDisplayname(blocks.get(selected.id()).asItem().getDefaultInstance()), blocks.get(selected.id()).asItem().getDefaultInstance(), !overwrideAvailable, yOffset, maxWidth, graphics); } diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ContainerWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ContainerWidget.java index a24ec7ec..77553343 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ContainerWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ContainerWidget.java @@ -110,7 +110,8 @@ public void renderSelectedSlotName(GuiSlot selected, int yOffset, int maxWidth, RenderContext graphics) { List availableSlots = getItem(selected.id()); if (!availableSlots.isEmpty() && !overwrideAvailable) { - RenderHelper.renderSelectedItemName(ItemUtil.getDisplayname(availableSlots.get(0).item()), + RenderHelper.renderSelectedItemName( + ItemSwapperSharedMod.instance.getItemManager().getDisplayname(availableSlots.get(0).item()), availableSlots.get(0).item(), false, yOffset, maxWidth, graphics); } } diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/InventoryAbstractWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/InventoryAbstractWidget.java index c982f2d0..5c0e4d71 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/InventoryAbstractWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/InventoryAbstractWidget.java @@ -74,7 +74,8 @@ public void renderSelectedSlotName(GuiSlot selected, int yOffset, int maxWidth, RenderContext graphics) { List availableSlots = getItem(selected.id()); if (!availableSlots.isEmpty() && !overwrideAvailable) { - RenderHelper.renderSelectedItemName(ItemUtil.getDisplayname(availableSlots.get(0).item()), + RenderHelper.renderSelectedItemName( + ItemSwapperSharedMod.instance.getItemManager().getDisplayname(availableSlots.get(0).item()), availableSlots.get(0).item(), false, yOffset, maxWidth, graphics); } } diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ListContentWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ListContentWidget.java index 4e12ea91..b9ebb8e1 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ListContentWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ListContentWidget.java @@ -116,7 +116,7 @@ public boolean onPrimaryClick(SwitchItemOverlay overlay, GuiSlot guiSlot, int xO ItemStack itemInHand = GeneralUtil.getPlayer().getMainHandItem(); if (!itemInHand.isEmpty() && !dev.tr7zw.transition.mc.ItemUtil.isSame(itemInHand, itemInHand.getItem().getDefaultInstance())) { - ItemUtil.grabItem(Items.AIR, true); + ItemSwapperSharedMod.instance.getItemManager().grabItem(Items.AIR, true); } minecraft.gameMode.handleCreativeModeItemAdd( itemSelection.getItems()[guiSlot.id()].getDefaultInstance().copy(), @@ -140,14 +140,15 @@ public void renderSelectedSlotName(GuiSlot selected, int yOffset, int maxWidth, if (slot == null) { if (itemSelection.isPaletteList()) { RenderHelper.renderSelectedItemName( - ItemUtil.getDisplayname(itemSelection.getItems()[selected.id()].getDefaultInstance()), + ItemSwapperSharedMod.instance.getItemManager() + .getDisplayname(itemSelection.getItems()[selected.id()].getDefaultInstance()), itemSelection.getItems()[selected.id()].getDefaultInstance(), false, yOffset, maxWidth, graphics); } return; } - RenderHelper.renderSelectedItemName(ItemUtil.getDisplayname(slot.item()), slot.item(), false, yOffset, maxWidth, - graphics); + RenderHelper.renderSelectedItemName(ItemSwapperSharedMod.instance.getItemManager().getDisplayname(slot.item()), + slot.item(), false, yOffset, maxWidth, graphics); } diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/PaletteWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/PaletteWidget.java index d4fd691f..8b33ac14 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/PaletteWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/PaletteWidget.java @@ -9,7 +9,6 @@ import dev.tr7zw.itemswapper.manager.itemgroups.ItemGroup; import dev.tr7zw.itemswapper.overlay.SwitchItemOverlay; import dev.tr7zw.transition.mc.InventoryUtil; -import dev.tr7zw.itemswapper.util.ItemUtil; import dev.tr7zw.itemswapper.util.RenderHelper; import dev.tr7zw.itemswapper.util.RenderHelper.SlotEffect; import dev.tr7zw.itemswapper.util.WidgetUtil; @@ -91,7 +90,7 @@ public boolean onPrimaryClick(SwitchItemOverlay overlay, GuiSlot guiSlot, int xO ItemSwapperMod.instance.getItemGroupManager().setLastPickedItem(entry.getItem(), itemGroup); return false; } - boolean changed = ItemUtil.grabItem(entry.getItem(), false); + boolean changed = ItemSwapperSharedMod.instance.getItemManager().grabItem(entry.getItem(), false); if (changed) { ItemSwapperSharedMod.instance.setLastItem(entry.getItem()); ItemSwapperSharedMod.instance @@ -111,16 +110,19 @@ public void renderSelectedSlotName(GuiSlot selected, int yOffset, int maxWidth, return; } if (slot.isActAsLink()) { - RenderHelper.renderSelectedItemName(RenderHelper.getName(itemGroup.getItem(selected.id())), + RenderHelper.renderSelectedItemName( + ItemSwapperSharedMod.instance.getItemManager().getDisplayname(itemGroup.getItem(selected.id())), slot.getItem().getDefaultInstance(), false, yOffset, maxWidth, graphics); return; } List availableSlots = getItem(selected.id()); if (!availableSlots.isEmpty() && !overwrideAvailable) { - RenderHelper.renderSelectedItemName(RenderHelper.getName(itemGroup.getItem(selected.id())), + RenderHelper.renderSelectedItemName( + ItemSwapperSharedMod.instance.getItemManager().getDisplayname(itemGroup.getItem(selected.id())), availableSlots.get(0).item(), false, yOffset, maxWidth, graphics); } else { - RenderHelper.renderSelectedItemName(RenderHelper.getName(itemGroup.getItem(selected.id())), + RenderHelper.renderSelectedItemName( + ItemSwapperSharedMod.instance.getItemManager().getDisplayname(itemGroup.getItem(selected.id())), slot.getItem().getDefaultInstance(), !overwrideAvailable, yOffset, maxWidth, graphics); } diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java index d32e8d74..dc7389ad 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java @@ -1,15 +1,15 @@ package dev.tr7zw.itemswapper.packets; import dev.tr7zw.itemswapper.ItemSwapperMod; -import dev.tr7zw.itemswapper.util.ServerUtil; import dev.tr7zw.transition.loader.networking.*; +import dev.tr7zw.transition.mc.*; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; public record DisableModPayload(boolean enabled) implements CustomPacketPayloadSupport { public static final DisableModPayload INSTANCE = new DisableModPayload(false); - public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "disable"); + public static final Identifier ID = McId.create(ItemSwapperMod.MODID, "disable").id(); @Override public Identifier id() { diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java index 23f5f452..3278c915 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java @@ -1,15 +1,15 @@ package dev.tr7zw.itemswapper.packets; import dev.tr7zw.itemswapper.ItemSwapperMod; -import dev.tr7zw.itemswapper.util.ServerUtil; import dev.tr7zw.transition.loader.networking.*; +import dev.tr7zw.transition.mc.*; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; public record RefillItemPayload(int slot) implements CustomPacketPayloadSupport { public static final RefillItemPayload INSTANCE = new RefillItemPayload(0); - public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "refill"); + public static final Identifier ID = McId.create(ItemSwapperMod.MODID, "refill").id(); @Override public Identifier id() { diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java index 7a185722..7a2b1c4b 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java @@ -1,15 +1,15 @@ package dev.tr7zw.itemswapper.packets; import dev.tr7zw.itemswapper.ItemSwapperMod; -import dev.tr7zw.itemswapper.util.ServerUtil; import dev.tr7zw.transition.loader.networking.*; +import dev.tr7zw.transition.mc.*; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; public record RefillSupportPayload(boolean enabled) implements CustomPacketPayloadSupport { public static final RefillSupportPayload INSTANCE = new RefillSupportPayload(true); - public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "enablerefill"); + public static final Identifier ID = McId.create(ItemSwapperMod.MODID, "enablerefill").id(); @Override public Identifier id() { diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java index 2e125f89..b1f9e487 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java @@ -1,15 +1,15 @@ package dev.tr7zw.itemswapper.packets; import dev.tr7zw.itemswapper.ItemSwapperMod; -import dev.tr7zw.itemswapper.util.ServerUtil; import dev.tr7zw.transition.loader.networking.*; +import dev.tr7zw.transition.mc.*; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; public record ShulkerSupportPayload(boolean enabled) implements CustomPacketPayloadSupport { public static final ShulkerSupportPayload INSTANCE = new ShulkerSupportPayload(false); - public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "enableshulker"); + public static final Identifier ID = McId.create(ItemSwapperMod.MODID, "enableshulker").id(); @Override public Identifier id() { diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java index 3b0420f3..eae09dfb 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java @@ -1,15 +1,15 @@ package dev.tr7zw.itemswapper.packets; import dev.tr7zw.itemswapper.ItemSwapperMod; -import dev.tr7zw.itemswapper.util.ServerUtil; import dev.tr7zw.transition.loader.networking.*; +import dev.tr7zw.transition.mc.*; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; public record SwapItemPayload(int inventorySlot, int slot) implements CustomPacketPayloadSupport { public static final SwapItemPayload INSTANCE = new SwapItemPayload(0, 0); - public static final Identifier ID = ServerUtil.getResourceLocation(ItemSwapperMod.MODID, "swap"); + public static final Identifier ID = McId.create(ItemSwapperMod.MODID, "swap").id(); @Override public Identifier id() { diff --git a/src/main/java/dev/tr7zw/itemswapper/server/ServerItemHandler.java b/src/main/java/dev/tr7zw/itemswapper/server/ServerItemHandler.java index 22d70be2..8097459c 100644 --- a/src/main/java/dev/tr7zw/itemswapper/server/ServerItemHandler.java +++ b/src/main/java/dev/tr7zw/itemswapper/server/ServerItemHandler.java @@ -6,7 +6,6 @@ import dev.tr7zw.itemswapper.config.ConfigManager; import dev.tr7zw.itemswapper.packets.RefillItemPayload; import dev.tr7zw.itemswapper.packets.SwapItemPayload; -import dev.tr7zw.itemswapper.util.ServerUtil; import dev.tr7zw.itemswapper.util.ShulkerHelper; import dev.tr7zw.transition.mc.InventoryUtil; import net.minecraft.core.NonNullList; @@ -63,7 +62,7 @@ public void refillSlot(ServerPlayer player, RefillItemPayload payload) { boolean boxChanged = false; for (int entry = 0; entry < content.size(); entry++) { ItemStack boxItem = content.get(entry); - if (ServerUtil.isSame(boxItem, target)) { + if (isSame(boxItem, target)) { // same, use to restock int amount = Math.min(space, boxItem.getCount()); target.setCount(target.getCount() + amount); @@ -85,4 +84,17 @@ public void refillSlot(ServerPlayer player, RefillItemPayload payload) { } } + private boolean isSame(ItemStack a, ItemStack b) { + //? if < 1.17.0 { + + // return ItemStack.isSame(a, b); + //? } else if <= 1.20.4 { + + /*return ItemStack.isSameItemSameTags(a, b); + *///? } else { + + return ItemStack.isSameItemSameComponents(a, b); + //? } + } + } diff --git a/src/main/java/dev/tr7zw/itemswapper/util/ItemUtil.java b/src/main/java/dev/tr7zw/itemswapper/util/ItemUtil.java index bec2394e..1acb87dc 100644 --- a/src/main/java/dev/tr7zw/itemswapper/util/ItemUtil.java +++ b/src/main/java/dev/tr7zw/itemswapper/util/ItemUtil.java @@ -1,34 +1,15 @@ package dev.tr7zw.itemswapper.util; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; +import dev.tr7zw.transition.mc.*; +import net.minecraft.client.*; +import net.minecraft.world.item.*; +import org.jetbrains.annotations.*; -import dev.tr7zw.itemswapper.packets.*; -import dev.tr7zw.transition.loader.networking.*; -import org.jetbrains.annotations.NotNull; - -import dev.tr7zw.itemswapper.ItemSwapperSharedMod; -import dev.tr7zw.itemswapper.api.AvailableSlot; -import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI; -import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI.OnSwap; -import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI.SwapSent; -import dev.tr7zw.itemswapper.api.client.NameProvider; -import dev.tr7zw.itemswapper.manager.ClientProviderManager; -import dev.tr7zw.itemswapper.manager.itemgroups.ItemEntry; -import dev.tr7zw.transition.mc.InventoryUtil; -import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.Component; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; +import java.util.*; public final class ItemUtil { private static final Minecraft minecraft = Minecraft.getInstance(); - private static final ClientProviderManager providerManager = ItemSwapperSharedMod.instance - .getClientProviderManager(); - private static final ItemSwapperClientAPI clientAPI = ItemSwapperClientAPI.getInstance(); private ItemUtil() { // private @@ -41,23 +22,6 @@ public static int inventorySlotToHudSlot(int slot) { return slot; } - public static boolean inArray(Item[] items, Item item) { - for (Item i : items) { - if (i == item) { - return true; - } - } - return false; - } - - public static ItemEntry[] toDefault(Item[] items) { - ItemEntry[] entries = new ItemEntry[items.length]; - for (int i = 0; i < items.length; i++) { - entries[i] = new ItemEntry(items[i], null); - } - return entries; - } - @NotNull public static Item[] itemstackToSingleItem(Item[] items) { int lastItem = 0; @@ -70,40 +34,6 @@ public static Item[] itemstackToSingleItem(Item[] items) { return items; } - public static Component getDisplayname(ItemStack item) { - if (dev.tr7zw.transition.mc.ItemUtil.hasCustomName(item)) { - return item.getHoverName().copy(); - } - NameProvider provider = ItemSwapperSharedMod.instance.getClientProviderManager().getNameProvider(item); - if (provider != null) { - return provider.getDisplayName(item).copy(); - } - return item.getHoverName().copy(); - } - - public static boolean grabItem(Item item, boolean ignoreHotbar) { - List slots = providerManager.findSlotsMatchingItem(item, false, ignoreHotbar); - for (AvailableSlot slot : slots) { - OnSwap event = clientAPI.prepareItemSwapEvent.callEvent(new OnSwap(slot, new AtomicBoolean())); - if (event.canceled().get()) { - // interaction canceled by some other mod - return false; - } - if (slot.inventory() == -1) { - swapWithSlot(ItemUtil.inventorySlotToHudSlot(slot.slot())); - } else { - if (ShulkerHelper.isShulker(InventoryUtil.getSelected(minecraft.player.getInventory()).getItem())) { - // Can't put a shulker into a shulker, so search a different spot - continue; - } - ClientNetworkUtil.sendPacket(new SwapItemPayload(slot.inventory(), slot.slot())); - } - clientAPI.itemSwapSentEvent.callEvent(new SwapSent(slot)); - return true; - } - return false; - } - public static void swapWithSlot(int hudSlot) { //? if >= 26.1 { diff --git a/src/main/java/dev/tr7zw/itemswapper/util/RenderHelper.java b/src/main/java/dev/tr7zw/itemswapper/util/RenderHelper.java index 7387713a..2df8111c 100644 --- a/src/main/java/dev/tr7zw/itemswapper/util/RenderHelper.java +++ b/src/main/java/dev/tr7zw/itemswapper/util/RenderHelper.java @@ -4,9 +4,9 @@ import com.mojang.blaze3d.vertex.PoseStack; +import dev.tr7zw.itemswapper.*; import dev.tr7zw.itemswapper.manager.itemgroups.Icon.ItemIcon; import dev.tr7zw.itemswapper.manager.itemgroups.Icon.LinkIcon; -import dev.tr7zw.itemswapper.manager.itemgroups.ItemEntry; import dev.tr7zw.trender.gui.client.RenderContext; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; @@ -141,16 +141,6 @@ public static void renderSlot(RenderContext graphics, int x, int y, Player arg, } } - public static Component getName(ItemEntry entry) { - if (entry == null) { - return null; - } - if (entry.getNameOverwride() != null) { - return entry.getNameOverwride(); - } - return ItemUtil.getDisplayname(entry.getItem().getDefaultInstance()); - } - public static Component getName(ItemIcon entry) { if (entry == null) { return null; diff --git a/src/main/java/dev/tr7zw/itemswapper/util/ServerUtil.java b/src/main/java/dev/tr7zw/itemswapper/util/ServerUtil.java deleted file mode 100644 index f6b8a30c..00000000 --- a/src/main/java/dev/tr7zw/itemswapper/util/ServerUtil.java +++ /dev/null @@ -1,51 +0,0 @@ -package dev.tr7zw.itemswapper.util; - -import net.minecraft.resources.*; -import net.minecraft.world.item.ItemStack; - -/** - * Contains copies from NMSHelper, because NMSHelper pulls the Minecraft class, - * which will crash on servers - */ -public class ServerUtil { - - public static boolean isSame(ItemStack a, ItemStack b) { - //? if < 1.17.0 { - - // return ItemStack.isSame(a, b); - //? } else if <= 1.20.4 { - - /*return ItemStack.isSameItemSameTags(a, b); - *///? } else { - - return ItemStack.isSameItemSameComponents(a, b); - //? } - } - - public static Identifier getResourceLocation(String namespace, String path) { - //? if >= 1.21.11 { - - return Identifier.fromNamespaceAndPath(namespace, path); - //? } else if >= 1.21.0 { - - /*return Identifier.fromNamespaceAndPath(namespace, path); - *///? } else { - - /*return new Identifier(namespace, path); - *///? } - } - - public static Identifier getResourceLocation(String key) { - //? if >= 1.21.11 { - - return Identifier.parse(key); - //? } else if >= 1.21.0 { - - /*return Identifier.parse(key); - *///? } else { - - /*return new Identifier(key); - *///? } - } - -} From efe46817135bf2d73c0cd5fa57320e4a27083d26 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Sun, 26 Apr 2026 16:17:29 +0200 Subject: [PATCH 4/7] Switch classes to record, remove public from interfaces --- .../accessor/ExtendedMouseHandler.java | 2 +- .../accessor/InstrumentItemAccess.java | 4 +-- .../accessor/ItemVariantAccess.java | 2 +- .../SmithingTemplateItemAccessor.java | 2 +- .../accessor/SpriteContentsAccess.java | 2 +- .../itemswapper/manager/itemgroups/Icon.java | 6 ++-- .../manager/itemgroups/ItemEntry.java | 14 +-------- .../manager/itemgroups/ItemGroup.java | 30 ++++--------------- .../manager/itemgroups/ItemGroupModifier.java | 10 ++----- .../manager/itemgroups/ItemList.java | 27 ++++------------- .../manager/itemgroups/ItemListModifier.java | 10 ++----- .../manager/itemgroups/Shortcut.java | 16 +++++----- .../manager/shortcuts/BackShortcut.java | 12 ++------ .../manager/shortcuts/BlockColorShortcut.java | 2 +- .../shortcuts/ClearCurrentSlotShortcut.java | 8 ++--- .../manager/shortcuts/LastItemShortcut.java | 13 ++------ .../manager/shortcuts/LinkShortcut.java | 17 ++--------- .../shortcuts/OpenInventoryShortcut.java | 11 ++----- .../manager/shortcuts/RestockShortcut.java | 10 ++----- 19 files changed, 53 insertions(+), 145 deletions(-) diff --git a/src/main/java/dev/tr7zw/itemswapper/accessor/ExtendedMouseHandler.java b/src/main/java/dev/tr7zw/itemswapper/accessor/ExtendedMouseHandler.java index d78707ad..0a45fac5 100644 --- a/src/main/java/dev/tr7zw/itemswapper/accessor/ExtendedMouseHandler.java +++ b/src/main/java/dev/tr7zw/itemswapper/accessor/ExtendedMouseHandler.java @@ -2,6 +2,6 @@ public interface ExtendedMouseHandler { - public void keepMouseGrabbed(boolean value); + void keepMouseGrabbed(boolean value); } diff --git a/src/main/java/dev/tr7zw/itemswapper/accessor/InstrumentItemAccess.java b/src/main/java/dev/tr7zw/itemswapper/accessor/InstrumentItemAccess.java index 0e9bafda..1432535b 100644 --- a/src/main/java/dev/tr7zw/itemswapper/accessor/InstrumentItemAccess.java +++ b/src/main/java/dev/tr7zw/itemswapper/accessor/InstrumentItemAccess.java @@ -10,8 +10,8 @@ public interface InstrumentItemAccess { - public Set getItems(); + Set getItems(); - public Optional> getOptionalInstrument(ItemStack itemStack); + Optional> getOptionalInstrument(ItemStack itemStack); } diff --git a/src/main/java/dev/tr7zw/itemswapper/accessor/ItemVariantAccess.java b/src/main/java/dev/tr7zw/itemswapper/accessor/ItemVariantAccess.java index 4b2e9b35..9403fbfd 100644 --- a/src/main/java/dev/tr7zw/itemswapper/accessor/ItemVariantAccess.java +++ b/src/main/java/dev/tr7zw/itemswapper/accessor/ItemVariantAccess.java @@ -12,6 +12,6 @@ */ public interface ItemVariantAccess { - public Set getAllItemVariants(); + Set getAllItemVariants(); } diff --git a/src/main/java/dev/tr7zw/itemswapper/accessor/SmithingTemplateItemAccessor.java b/src/main/java/dev/tr7zw/itemswapper/accessor/SmithingTemplateItemAccessor.java index 1a84fd49..f3fce520 100644 --- a/src/main/java/dev/tr7zw/itemswapper/accessor/SmithingTemplateItemAccessor.java +++ b/src/main/java/dev/tr7zw/itemswapper/accessor/SmithingTemplateItemAccessor.java @@ -4,6 +4,6 @@ public interface SmithingTemplateItemAccessor { - public Component getUpgradeDescription(); + Component getUpgradeDescription(); } diff --git a/src/main/java/dev/tr7zw/itemswapper/accessor/SpriteContentsAccess.java b/src/main/java/dev/tr7zw/itemswapper/accessor/SpriteContentsAccess.java index f04a950a..8224566d 100644 --- a/src/main/java/dev/tr7zw/itemswapper/accessor/SpriteContentsAccess.java +++ b/src/main/java/dev/tr7zw/itemswapper/accessor/SpriteContentsAccess.java @@ -4,6 +4,6 @@ public interface SpriteContentsAccess { - public NativeImage getOriginalImage(); + NativeImage getOriginalImage(); } diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/Icon.java b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/Icon.java index 49c28eed..b9329dfe 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/Icon.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/Icon.java @@ -6,13 +6,13 @@ public sealed interface Icon { - public record ItemIcon(ItemStack item, Component nameOverwrite) implements Icon { + record ItemIcon(ItemStack item, Component nameOverwrite) implements Icon { }; - public record TextureIcon(Identifier texture, Component name) implements Icon { + record TextureIcon(Identifier texture, Component name) implements Icon { }; - public record LinkIcon(ItemStack item, Component nameOverwrite, Identifier nextId) implements Icon { + record LinkIcon(ItemStack item, Component nameOverwrite, Identifier nextId) implements Icon { }; } diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemEntry.java b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemEntry.java index 00872fbc..7c64d0ed 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemEntry.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemEntry.java @@ -4,24 +4,12 @@ import net.minecraft.resources.*; import net.minecraft.world.item.Item; -public class ItemEntry { - - private final Item item; - private final Identifier link; - private final Component nameOverwride; - private final boolean actAsLink; +public record ItemEntry(Item item, Identifier link, Component nameOverwride, boolean actAsLink) { public ItemEntry(Item item, Identifier link) { this(item, link, null, false); } - public ItemEntry(Item item, Identifier link, Component nameOverwride, boolean actAsLink) { - this.item = item; - this.link = link; - this.nameOverwride = nameOverwride; - this.actAsLink = actAsLink; - } - public Item getItem() { return item; } diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemGroup.java b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemGroup.java index 0ac2c963..7068f8de 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemGroup.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemGroup.java @@ -14,32 +14,14 @@ * @author tr7zw * */ -public class ItemGroup { - - private final Identifier id; - private final Component displayName; - private final Item icon; - private final int priority; - private final boolean disableAutoLink; - private final Identifier fallbackLink; - private final Identifier forcedLink; - private final ItemEntry[] items; - private final Set openOnlyItems; - private final Set ignoreItems; - private final List shortcuts; +public record ItemGroup(Identifier id, Component displayName, Item icon, int priority, boolean disableAutoLink, + Identifier fallbackLink, Identifier forcedLink, ItemEntry[] items, Set openOnlyItems, + Set ignoreItems, List shortcuts) { private ItemGroup(Builder builder) { - this.id = builder.id; - this.displayName = builder.displayName; - this.icon = builder.icon; - this.priority = builder.priority; - this.disableAutoLink = builder.disableAutoLink; - this.fallbackLink = builder.fallbackLink; - this.forcedLink = builder.forcedLink; - this.items = builder.items; - this.openOnlyItems = builder.openOnlyItems; - this.ignoreItems = builder.ignoreItems; - this.shortcuts = builder.shortcuts; + this(builder.id, builder.displayName, builder.icon, builder.priority, builder.disableAutoLink, + builder.fallbackLink, builder.forcedLink, builder.items, builder.openOnlyItems, builder.ignoreItems, + builder.shortcuts); } public Identifier getId() { diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemGroupModifier.java b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemGroupModifier.java index ee810f2a..5bbacae0 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemGroupModifier.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemGroupModifier.java @@ -2,16 +2,10 @@ import net.minecraft.resources.*; -public class ItemGroupModifier { - - private final Identifier target; - private final ItemEntry[] addItems; - private final ItemEntry[] removeItems; +public record ItemGroupModifier(Identifier target, ItemEntry[] addItems, ItemEntry[] removeItems) { private ItemGroupModifier(Builder builder) { - this.target = builder.target; - this.addItems = builder.addItems; - this.removeItems = builder.removeItems; + this(builder.target, builder.addItems, builder.removeItems); } public Identifier getTarget() { diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemList.java b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemList.java index bda08e74..79f72188 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemList.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemList.java @@ -6,30 +6,13 @@ import net.minecraft.resources.*; import net.minecraft.world.item.Item; -public class ItemList { - - private final Identifier id; - private final Component displayName; - private final Item icon; - private final Item[] items; - private final Set openOnlyItems; - private final Set ignoreItems; - private final boolean disableAutoLink; - private final Identifier link; - private final List shortcuts; - private boolean paletteList = false; +public record ItemList(Identifier id, Component displayName, Item icon, Item[] items, Set openOnlyItems, + Set ignoreItems, boolean disableAutoLink, Identifier link, List shortcuts, + boolean paletteList) { private ItemList(Builder builder) { - this.id = builder.id; - this.displayName = builder.displayName; - this.icon = builder.icon; - this.items = builder.items; - this.openOnlyItems = builder.openOnlyItems; - this.ignoreItems = builder.ignoreItems; - this.disableAutoLink = builder.disableAutoLink; - this.link = builder.link; - this.shortcuts = builder.shortcuts; - this.paletteList = builder.paletteList; + this(builder.id, builder.displayName, builder.icon, builder.items, builder.openOnlyItems, builder.ignoreItems, + builder.disableAutoLink, builder.link, builder.shortcuts, builder.paletteList); } public Identifier getId() { diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemListModifier.java b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemListModifier.java index 5f5302a8..9ec3e084 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemListModifier.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/ItemListModifier.java @@ -3,16 +3,10 @@ import net.minecraft.resources.*; import net.minecraft.world.item.Item; -public class ItemListModifier { - - private final Identifier target; - private final Item[] addItems; - private final Item[] removeItems; +public record ItemListModifier(Identifier target, Item[] addItems, Item[] removeItems) { private ItemListModifier(Builder builder) { - this.target = builder.target; - this.addItems = builder.addItems; - this.removeItems = builder.removeItems; + this(builder.target, builder.addItems, builder.removeItems); } public Identifier getTarget() { diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/Shortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/Shortcut.java index 5cae60e4..fd972db4 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/Shortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/itemgroups/Shortcut.java @@ -5,34 +5,34 @@ public interface Shortcut { - public Icon getIcon(); + Icon getIcon(); /** * * @param action * @return true if the UI should be kept open if possible */ - public boolean invoke(SwitchItemOverlay overlay, ActionType action, int xOffset, int yOffset); + boolean invoke(SwitchItemOverlay overlay, ActionType action, int xOffset, int yOffset); - public default boolean acceptPrimaryClick() { + default boolean acceptPrimaryClick() { return true; } - public default boolean acceptSecondaryClick() { + default boolean acceptSecondaryClick() { return true; } - public default Component getHoverText() { + default Component getHoverText() { return null; } - public default boolean isVisible() { + default boolean isVisible() { return true; } - public String getSelector(); + String getSelector(); - public enum ActionType { + enum ActionType { SECONDARY_CLICK, PRIMARY_CLICK } diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/BackShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/BackShortcut.java index e3e90782..d7edc9a5 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/BackShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/BackShortcut.java @@ -8,17 +8,11 @@ import dev.tr7zw.transition.mc.ComponentProvider; import net.minecraft.network.chat.Component; -public class BackShortcut implements Shortcut { +public record BackShortcut(SwitchItemOverlay overlay) implements Shortcut { - private final Icon icon = new TextureIcon(getResourceLocation("itemswapper", "textures/gui/back.png"), + private static final Icon icon = new TextureIcon(getResourceLocation("itemswapper", "textures/gui/back.png"), ComponentProvider.translatable("text.itemswapper.back")); - - private final SwitchItemOverlay overlay; - private final Component hoverText = ComponentProvider.translatable("text.itemswapper.back.tooltip"); - - public BackShortcut(SwitchItemOverlay overlay) { - this.overlay = overlay; - } + private static final Component hoverText = ComponentProvider.translatable("text.itemswapper.back.tooltip"); @Override public Icon getIcon() { diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/BlockColorShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/BlockColorShortcut.java index 40a68b32..6c93136f 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/BlockColorShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/BlockColorShortcut.java @@ -18,7 +18,7 @@ public class BlockColorShortcut implements Shortcut { - private int offset; + private final int offset; private final UnpackedColor color; private final Icon icon; private final Component hoverText = ComponentProvider.translatable("text.itemswapper.openPalette.tooltip"); diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/ClearCurrentSlotShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/ClearCurrentSlotShortcut.java index 6b3cbb50..b940055d 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/ClearCurrentSlotShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/ClearCurrentSlotShortcut.java @@ -14,13 +14,13 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.item.Items; -public class ClearCurrentSlotShortcut implements Shortcut { +public record ClearCurrentSlotShortcut() implements Shortcut { - private final Icon icon = new TextureIcon(getResourceLocation("itemswapper", "textures/gui/clear_slot.png"), + private static final Icon icon = new TextureIcon(getResourceLocation("itemswapper", "textures/gui/clear_slot.png"), ComponentProvider.translatable("text.itemswapper.clearSlot")); - private final Minecraft minecraft = Minecraft.getInstance(); - private final Component hoverText = ComponentProvider.translatable("text.itemswapper.clearSlot.tooltip"); + private static final Minecraft minecraft = Minecraft.getInstance(); + private static final Component hoverText = ComponentProvider.translatable("text.itemswapper.clearSlot.tooltip"); @Override public Icon getIcon() { diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LastItemShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LastItemShortcut.java index 15ba1741..6d269874 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LastItemShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LastItemShortcut.java @@ -11,17 +11,10 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.item.Item; -public class LastItemShortcut implements Shortcut { +public record LastItemShortcut(Item lastItem, Page lastPage) implements Shortcut { - private Item lastItem; - private Page lastPage; - private Component displayName = ComponentProvider.translatable("text.itemswapper.lastItem"); - private final Component hoverText = ComponentProvider.translatable("text.itemswapper.lastItem.tooltip"); - - public LastItemShortcut(Item lastItem, Page lastPage) { - this.lastItem = lastItem; - this.lastPage = lastPage; - } + private static final Component displayName = ComponentProvider.translatable("text.itemswapper.lastItem"); + private static final Component hoverText = ComponentProvider.translatable("text.itemswapper.lastItem.tooltip"); @Override public Icon getIcon() { diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LinkShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LinkShortcut.java index 522cbc3f..717f4f60 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LinkShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LinkShortcut.java @@ -18,23 +18,12 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -public class LinkShortcut implements Shortcut { +public record LinkShortcut(Identifier nextId, Component displayName, Item displayIcon) implements Shortcut { - private final ItemGroupManager manager = ItemSwapperSharedMod.instance.getItemGroupManager(); - private final Identifier nextId; - private final Component displayName; - private final Item displayIcon; + private final static ItemGroupManager manager = ItemSwapperSharedMod.instance.getItemGroupManager(); public LinkShortcut(Identifier nextId) { - this.nextId = nextId; - this.displayName = null; - this.displayIcon = null; - } - - public LinkShortcut(Identifier nextId, Component displayName, Item icon) { - this.nextId = nextId; - this.displayName = displayName; - this.displayIcon = icon; + this(nextId, null, null); } @Override diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/OpenInventoryShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/OpenInventoryShortcut.java index 83c3d751..29e793e2 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/OpenInventoryShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/OpenInventoryShortcut.java @@ -10,16 +10,11 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.item.Items; -public class OpenInventoryShortcut implements Shortcut { +public record OpenInventoryShortcut(SwitchItemOverlay overlay) implements Shortcut { - private final Icon icon = new ItemIcon(Items.CHEST.getDefaultInstance(), + private static final Icon icon = new ItemIcon(Items.CHEST.getDefaultInstance(), ComponentProvider.translatable("text.itemswapper.openInventory")); - private final SwitchItemOverlay overlay; - private final Component hoverText = ComponentProvider.translatable("text.itemswapper.openInventory.tooltip"); - - public OpenInventoryShortcut(SwitchItemOverlay overlay) { - this.overlay = overlay; - } + private static final Component hoverText = ComponentProvider.translatable("text.itemswapper.openInventory.tooltip"); @Override public Icon getIcon() { diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/RestockShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/RestockShortcut.java index 3f60e0bb..1bc4ebe4 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/RestockShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/RestockShortcut.java @@ -15,15 +15,11 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -public class RestockShortcut implements Shortcut { +public record RestockShortcut() implements Shortcut { - private final Icon icon = new ItemIcon(Items.SHULKER_BOX.getDefaultInstance(), + private static final Icon icon = new ItemIcon(Items.SHULKER_BOX.getDefaultInstance(), ComponentProvider.translatable("text.itemswapper.restockAll")); - private final Component hoverText = ComponentProvider.translatable("text.itemswapper.restockAll.tooltip"); - - public RestockShortcut() { - - } + private static final Component hoverText = ComponentProvider.translatable("text.itemswapper.restockAll.tooltip"); @Override public Icon getIcon() { From a44efa92e90e28e9dc78e4a71fe43ac4c49b24e2 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Sun, 26 Apr 2026 19:07:28 +0200 Subject: [PATCH 5/7] Use TRansition Config logic, remove from god class --- .../tr7zw/itemswapper/ItemSwapperBase.java | 5 - .../itemswapper/config/CacheManager.java | 59 --------- .../itemswapper/config/ConfigHolder.java | 24 ++++ .../itemswapper/config/ConfigManager.java | 65 ---------- .../itemswapper/ConfigScreenProvider.java | 114 ++++++++++-------- .../itemswapper/ItemSwapperSharedMod.java | 24 ++-- .../compat/MidnightControllsSupport.java | 5 +- .../itemswapper/compat/ViveCraftSupport.java | 6 +- .../itemswapper/manager/ItemGroupManager.java | 6 +- .../mixin/AbstractContainerScreenMixin.java | 6 +- .../mixin/ContainerScreenMixin.java | 6 +- .../itemswapper/mixin/KeyMappingMixin.java | 5 +- .../mixin/KeyboardHandlerMixin.java | 5 +- .../itemswapper/mixin/LitematicaMixin.java | 10 +- .../itemswapper/mixin/MinecraftMixin.java | 27 +++-- .../itemswapper/mixin/MouseHandlerMixin.java | 7 +- .../itemswapper/mixin/PlayerListMixin.java | 5 +- .../itemswapper/overlay/ItemListOverlay.java | 7 +- .../overlay/SwitchItemOverlay.java | 11 +- .../overlay/logic/ItemGridWidget.java | 5 +- .../itemswapper/server/ServerItemHandler.java | 5 +- 21 files changed, 164 insertions(+), 243 deletions(-) delete mode 100644 XTVersionless/src/main/java/dev/tr7zw/itemswapper/config/CacheManager.java create mode 100644 XTVersionless/src/main/java/dev/tr7zw/itemswapper/config/ConfigHolder.java delete mode 100644 XTVersionless/src/main/java/dev/tr7zw/itemswapper/config/ConfigManager.java diff --git a/XTVersionless/src/main/java/dev/tr7zw/itemswapper/ItemSwapperBase.java b/XTVersionless/src/main/java/dev/tr7zw/itemswapper/ItemSwapperBase.java index ca5ff4e9..633899df 100644 --- a/XTVersionless/src/main/java/dev/tr7zw/itemswapper/ItemSwapperBase.java +++ b/XTVersionless/src/main/java/dev/tr7zw/itemswapper/ItemSwapperBase.java @@ -3,15 +3,10 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import dev.tr7zw.itemswapper.config.CacheManager; -import dev.tr7zw.itemswapper.config.ConfigManager; - public class ItemSwapperBase { public static final Logger LOGGER = LogManager.getLogger("ItemSwapper"); public static final String MODID = "itemswapper"; - protected final ConfigManager configManager = ConfigManager.getInstance(); - protected final CacheManager cacheManager = CacheManager.getInstance(); public ItemSwapperBase() { super(); diff --git a/XTVersionless/src/main/java/dev/tr7zw/itemswapper/config/CacheManager.java b/XTVersionless/src/main/java/dev/tr7zw/itemswapper/config/CacheManager.java deleted file mode 100644 index 5b7c34ba..00000000 --- a/XTVersionless/src/main/java/dev/tr7zw/itemswapper/config/CacheManager.java +++ /dev/null @@ -1,59 +0,0 @@ -package dev.tr7zw.itemswapper.config; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonSyntaxException; - -import dev.tr7zw.itemswapper.ItemSwapperBase; - -public final class CacheManager { - private CacheServerAddresses cache; - private static final CacheManager INSTANCE = new CacheManager(); - private final Gson gson = new GsonBuilder().setPrettyPrinting().create(); - private final File cacheFile = new File("config", "itemswapper-server-cache.json"); - - private CacheManager() { - if (cacheFile.exists()) { - try { - cache = gson.fromJson(Files.readString(cacheFile.toPath()), CacheServerAddresses.class); - } catch (JsonSyntaxException | IOException exception) { - ItemSwapperBase.LOGGER.warn("Error while loading config: " + exception.getMessage()); - ItemSwapperBase.LOGGER.warn("A new configuration will be created!"); - } - } - - if (cache == null) { - reset(); - } - } - - public CacheServerAddresses getCache() { - return cache; - } - - public static CacheManager getInstance() { - return INSTANCE; - } - - public void reset() { - cache = new CacheServerAddresses(); - writeConfig(); - } - - public void writeConfig() { - if (cacheFile.exists()) { - boolean isDeleted = cacheFile.delete(); - ItemSwapperBase.LOGGER.debug("Config could be deleted before writing to it: " + isDeleted); - } - - try { - Files.writeString(cacheFile.toPath(), gson.toJson(cache)); - } catch (IOException ioException) { - ItemSwapperBase.LOGGER.warn(ioException.getMessage()); - } - } -} diff --git a/XTVersionless/src/main/java/dev/tr7zw/itemswapper/config/ConfigHolder.java b/XTVersionless/src/main/java/dev/tr7zw/itemswapper/config/ConfigHolder.java new file mode 100644 index 00000000..508aeb1c --- /dev/null +++ b/XTVersionless/src/main/java/dev/tr7zw/itemswapper/config/ConfigHolder.java @@ -0,0 +1,24 @@ +package dev.tr7zw.itemswapper.config; + +import dev.tr7zw.transition.config.ConfigManager; +import lombok.*; + +@Getter +public class ConfigHolder { + @Getter + private final static ConfigHolder instance = new ConfigHolder(); + private final ConfigManager general = new ConfigManager<>("itemswapper.json", Config::new, + ConfigUpgrader::upgradeConfig); + private final ConfigManager serverCache = new ConfigManager<>("itemswapper-server-cache.json", + CacheServerAddresses::new, null); + + public void save() { + general.writeConfig(); + serverCache.writeConfig(); + } + + public void reset() { + general.reset(); + serverCache.reset(); + } +} diff --git a/XTVersionless/src/main/java/dev/tr7zw/itemswapper/config/ConfigManager.java b/XTVersionless/src/main/java/dev/tr7zw/itemswapper/config/ConfigManager.java deleted file mode 100644 index cf2a63bb..00000000 --- a/XTVersionless/src/main/java/dev/tr7zw/itemswapper/config/ConfigManager.java +++ /dev/null @@ -1,65 +0,0 @@ -package dev.tr7zw.itemswapper.config; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonSyntaxException; - -import dev.tr7zw.itemswapper.ItemSwapperBase; - -public final class ConfigManager { - - private Config config; - private static final ConfigManager INSTANCE = new ConfigManager(); - private final Gson gson = new GsonBuilder().setPrettyPrinting().create(); - private final File configFile = new File("config", "itemswapper.json"); - - private ConfigManager() { - if (configFile.exists()) { - try { - config = gson.fromJson(Files.readString(configFile.toPath()), Config.class); - } catch (JsonSyntaxException | IOException exception) { - ItemSwapperBase.LOGGER.warn("Error while loading config: " + exception.getMessage()); - ItemSwapperBase.LOGGER.warn("A new configuration will be created!"); - } - } - - if (config == null) { - reset(); - } else { - if (ConfigUpgrader.upgradeConfig(config)) { - writeConfig(); // Config got modified - } - } - } - - public Config getConfig() { - return config; - } - - public static ConfigManager getInstance() { - return INSTANCE; - } - - public void reset() { - config = new Config(); - writeConfig(); - } - - public void writeConfig() { - if (configFile.exists()) { - boolean isDeleted = configFile.delete(); - ItemSwapperBase.LOGGER.debug("Config could be deleted before writing to it: " + isDeleted); - } - - try { - Files.writeString(configFile.toPath(), gson.toJson(config)); - } catch (IOException ioException) { - ItemSwapperBase.LOGGER.warn(ioException.getMessage()); - } - } - -} diff --git a/src/main/java/dev/tr7zw/itemswapper/ConfigScreenProvider.java b/src/main/java/dev/tr7zw/itemswapper/ConfigScreenProvider.java index cf963429..954abc57 100644 --- a/src/main/java/dev/tr7zw/itemswapper/ConfigScreenProvider.java +++ b/src/main/java/dev/tr7zw/itemswapper/ConfigScreenProvider.java @@ -4,9 +4,8 @@ import java.util.List; import dev.tr7zw.itemswapper.compat.ViveCraftSupport; -import dev.tr7zw.itemswapper.config.CacheManager; -import dev.tr7zw.itemswapper.config.ConfigManager; -import dev.tr7zw.itemswapper.config.PickBlockMode; +import dev.tr7zw.itemswapper.config.*; +import dev.tr7zw.transition.config.*; import dev.tr7zw.transition.mc.ComponentProvider; import dev.tr7zw.trender.gui.client.AbstractConfigScreen; import dev.tr7zw.trender.gui.client.BackgroundPainter; @@ -25,7 +24,7 @@ public class ConfigScreenProvider { - private static final ConfigManager configManager = ConfigManager.getInstance(); + private static final ConfigHolder configHolder = ConfigHolder.getInstance(); public static Screen createConfigScreen(Screen parent) { return new ConfigScreen(parent).createScreen(); @@ -43,67 +42,76 @@ public ConfigScreen(Screen previous) { // options page List options = new ArrayList<>(); options.add(getSplitLine("text.itemswapper.category.visuals")); - options.add(getOnOffOption("text.itemswapper.showCursor", () -> configManager.getConfig().showCursor, - b -> configManager.getConfig().showCursor = b)); - options.add(getOnOffOption("text.itemswapper.showTooltips", () -> configManager.getConfig().showTooltips, - b -> configManager.getConfig().showTooltips = b)); + options.add(getOnOffOption("text.itemswapper.showCursor", + () -> configHolder.getGeneral().getConfig().showCursor, + b -> configHolder.getGeneral().getConfig().showCursor = b)); + options.add(getOnOffOption("text.itemswapper.showTooltips", + () -> configHolder.getGeneral().getConfig().showTooltips, + b -> configHolder.getGeneral().getConfig().showTooltips = b)); options.add(getSplitLine("text.itemswapper.category.controls")); - options.add(getOnOffOption("text.itemswapper.toggleMode", () -> configManager.getConfig().toggleMode, - b -> configManager.getConfig().toggleMode = b)); - options.add( - getOnOffOption("text.itemswapper.unlockListMouse", () -> configManager.getConfig().unlockListMouse, - b -> configManager.getConfig().unlockListMouse = b)); + options.add(getOnOffOption("text.itemswapper.toggleMode", + () -> configHolder.getGeneral().getConfig().toggleMode, + b -> configHolder.getGeneral().getConfig().toggleMode = b)); + options.add(getOnOffOption("text.itemswapper.unlockListMouse", + () -> configHolder.getGeneral().getConfig().unlockListMouse, + b -> configHolder.getGeneral().getConfig().unlockListMouse = b)); options.add(getDoubleOption("text.itemswapper.controllerSpeed", 1, 16, 0.1f, - () -> configManager.getConfig().controllerSpeed, - d -> configManager.getConfig().controllerSpeed = (float) d)); + () -> configHolder.getGeneral().getConfig().controllerSpeed, + d -> configHolder.getGeneral().getConfig().controllerSpeed = (float) d)); options.add(getDoubleOption("text.itemswapper.mouseSpeed", 0.1f, 3, 0.1f, - () -> configManager.getConfig().mouseSpeed, d -> configManager.getConfig().mouseSpeed = (float) d)); + () -> configHolder.getGeneral().getConfig().mouseSpeed, + d -> configHolder.getGeneral().getConfig().mouseSpeed = (float) d)); options.add(getSplitLine("text.itemswapper.category.behavior")); options.add(getOnOffOption("text.itemswapper.creativeCheatMode", - () -> configManager.getConfig().creativeCheatMode, - b -> configManager.getConfig().creativeCheatMode = b)); - options.add(getOnOffOption("text.itemswapper.ignoreHotbar", () -> configManager.getConfig().ignoreHotbar, - b -> configManager.getConfig().ignoreHotbar = b)); - options.add( - getOnOffOption("text.itemswapper.disableShulkers", () -> configManager.getConfig().disableShulkers, - b -> configManager.getConfig().disableShulkers = b)); + () -> configHolder.getGeneral().getConfig().creativeCheatMode, + b -> configHolder.getGeneral().getConfig().creativeCheatMode = b)); + options.add(getOnOffOption("text.itemswapper.ignoreHotbar", + () -> configHolder.getGeneral().getConfig().ignoreHotbar, + b -> configHolder.getGeneral().getConfig().ignoreHotbar = b)); + options.add(getOnOffOption("text.itemswapper.disableShulkers", + () -> configHolder.getGeneral().getConfig().disableShulkers, + b -> configHolder.getGeneral().getConfig().disableShulkers = b)); options.add(getOnOffOption("text.itemswapper.showOpenInventoryButton", - () -> configManager.getConfig().showOpenInventoryButton, - b -> configManager.getConfig().showOpenInventoryButton = b)); + () -> configHolder.getGeneral().getConfig().showOpenInventoryButton, + b -> configHolder.getGeneral().getConfig().showOpenInventoryButton = b)); options.add(getOnOffOption("text.itemswapper.fallbackInventory", - () -> configManager.getConfig().fallbackInventory, - b -> configManager.getConfig().fallbackInventory = b)); + () -> configHolder.getGeneral().getConfig().fallbackInventory, + b -> configHolder.getGeneral().getConfig().fallbackInventory = b)); options.add(getEnumOption("text.itemswapper.disablePickblockOnToolsWeapons", PickBlockMode.class, - () -> configManager.getConfig().pickblockOnToolsWeapons, - b -> configManager.getConfig().pickblockOnToolsWeapons = b)); + () -> configHolder.getGeneral().getConfig().pickblockOnToolsWeapons, + b -> configHolder.getGeneral().getConfig().pickblockOnToolsWeapons = b)); options.add(getOnOffOption("text.itemswapper.allowWalkingWithUI", - () -> configManager.getConfig().allowWalkingWithUI, - b -> configManager.getConfig().allowWalkingWithUI = b)); - options.add(getOnOffOption("text.itemswapper.startOnItem", () -> configManager.getConfig().startOnItem, - b -> configManager.getConfig().startOnItem = b)); - options.add( - getOnOffOption("text.itemswapper.alwaysInventory", () -> configManager.getConfig().alwaysInventory, - b -> configManager.getConfig().alwaysInventory = b)); - options.add(getOnOffOption("text.itemswapper.showHotbar", () -> configManager.getConfig().showHotbar, - b -> configManager.getConfig().showHotbar = b)); - options.add( - getOnOffOption("text.itemswapper.rememberPalette", () -> configManager.getConfig().rememberPalette, - b -> configManager.getConfig().rememberPalette = b)); + () -> configHolder.getGeneral().getConfig().allowWalkingWithUI, + b -> configHolder.getGeneral().getConfig().allowWalkingWithUI = b)); + options.add(getOnOffOption("text.itemswapper.startOnItem", + () -> configHolder.getGeneral().getConfig().startOnItem, + b -> configHolder.getGeneral().getConfig().startOnItem = b)); + options.add(getOnOffOption("text.itemswapper.alwaysInventory", + () -> configHolder.getGeneral().getConfig().alwaysInventory, + b -> configHolder.getGeneral().getConfig().alwaysInventory = b)); + options.add(getOnOffOption("text.itemswapper.showHotbar", + () -> configHolder.getGeneral().getConfig().showHotbar, + b -> configHolder.getGeneral().getConfig().showHotbar = b)); + options.add(getOnOffOption("text.itemswapper.rememberPalette", + () -> configHolder.getGeneral().getConfig().rememberPalette, + b -> configHolder.getGeneral().getConfig().rememberPalette = b)); options.add(getOnOffOption("text.itemswapper.autoPalette", - () -> configManager.getConfig().experimentalAutoPalette, - b -> configManager.getConfig().experimentalAutoPalette = b)); + () -> configHolder.getGeneral().getConfig().experimentalAutoPalette, + b -> configHolder.getGeneral().getConfig().experimentalAutoPalette = b)); options.add(getOnOffOption("text.itemswapper.listsAsPalette", - () -> configManager.getConfig().listsAsPalette, b -> configManager.getConfig().listsAsPalette = b)); + () -> configHolder.getGeneral().getConfig().listsAsPalette, + b -> configHolder.getGeneral().getConfig().listsAsPalette = b)); options.add(getSplitLine("text.itemswapper.category.misc")); - options.add(getOnOffOption("text.itemswapper.editMode", () -> configManager.getConfig().editMode, - b -> configManager.getConfig().editMode = b)); + options.add( + getOnOffOption("text.itemswapper.editMode", () -> configHolder.getGeneral().getConfig().editMode, + b -> configHolder.getGeneral().getConfig().editMode = b)); if (ViveCraftSupport.getInstance().isAvailable()) { options.add(getOnOffOption("text.itemswapper.vivecraftCompat", - () -> configManager.getConfig().vivecraftCompat, - b -> configManager.getConfig().vivecraftCompat = b)); + () -> configHolder.getGeneral().getConfig().vivecraftCompat, + b -> configHolder.getGeneral().getConfig().vivecraftCompat = b)); } var optionList = createOptionList(options); @@ -112,9 +120,9 @@ public ConfigScreen(Screen previous) { wTabPanel.add(optionList, b -> b.title(ComponentProvider.translatable("key.itemswapper.tab.options"))); - wTabPanel.add(getList(CacheManager.getInstance().getCache().disableOnIp), + wTabPanel.add(getList(configHolder.getServerCache().getConfig().disableOnIp), b -> b.title(ComponentProvider.translatable("text.itemswapper.blacklist"))); - wTabPanel.add(getList(CacheManager.getInstance().getCache().enableOnIp), + wTabPanel.add(getList(configHolder.getServerCache().getConfig().enableOnIp), b -> b.title(ComponentProvider.translatable("text.itemswapper.whitelist"))); root.add(wTabPanel, 0, 1); @@ -148,7 +156,7 @@ public WWidget getList(List list) { button.setOnClick(() -> { list.remove(s); panel.getParent().layout(); - CacheManager.getInstance().writeConfig(); + configHolder.save(); }); panel.add(button, 0, 0, 2, 2); panel.add(new WLabel(ComponentProvider.literal(s)), 23, 5); @@ -159,12 +167,12 @@ public WWidget getList(List list) { @Override public void save() { - configManager.writeConfig(); + configHolder.save(); } @Override public void reset() { - configManager.reset(); + configHolder.reset(); } } diff --git a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java index 370d36a2..5a22ea74 100644 --- a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java +++ b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java @@ -3,7 +3,9 @@ import java.util.List; import dev.tr7zw.itemswapper.api.client.*; +import dev.tr7zw.itemswapper.config.*; import dev.tr7zw.itemswapper.manager.*; +import dev.tr7zw.transition.config.*; import dev.tr7zw.transition.mc.*; import org.jetbrains.annotations.NotNull; @@ -12,7 +14,6 @@ import dev.tr7zw.itemswapper.accessor.ExtendedMouseHandler; import dev.tr7zw.itemswapper.compat.AmecsAPISupport; import dev.tr7zw.itemswapper.compat.ViveCraftSupport; -import dev.tr7zw.itemswapper.config.ConfigManager; import dev.tr7zw.itemswapper.manager.ItemGroupManager.Page; import dev.tr7zw.itemswapper.manager.itemgroups.ItemGroup; import dev.tr7zw.itemswapper.manager.itemgroups.ItemList; @@ -43,8 +44,10 @@ public abstract class ItemSwapperSharedMod extends ItemSwapperBase { private final BlockTextureManager blockTextureManager = new BlockTextureManager(); @Getter private final ItemManager itemManager = new ItemManager(clientProviderManager, ItemSwapperClientAPI.getInstance()); - private final List enableOnIp = cacheManager.getCache().enableOnIp; - private final List disableOnIp = cacheManager.getCache().disableOnIp; + @Deprecated + private final ConfigManager configManager = ConfigHolder.getInstance().getGeneral(); + @Deprecated + private final ConfigManager serverCache = ConfigHolder.getInstance().getServerCache(); protected KeyMapping keybind = GeneralUtil.createKeyMapping("key.itemswapper.itemswitcher", InputConstants.KEY_R, "itemswapper"); @@ -92,7 +95,7 @@ public void clientTick() { ServerData server = Minecraft.getInstance().getCurrentServer(); - if (server != null && disableOnIp.contains(server.ip) && !disabledByPlayer) { + if (server != null && serverCache.getConfig().disableOnIp.contains(server.ip) && !disabledByPlayer) { setDisabledByPlayer(true); LOGGER.info("Itemswapper is deactivated for the server {}, because the player did not accept the warning!", server.ip); @@ -147,10 +150,11 @@ private void onPress(ItemSwapperUI overlay) { if (isDisabledByPlayer()) { ClientUtil.sendActionBarMessage(ComponentProvider.translatable("text.itemswapper.disabledByPlayer") .withStyle(ChatFormatting.RED)); - } else if (server != null && !enableOnIp.contains(server.ip) && !enableShulkers && !bypassAccepted) { + } else if (server != null && !serverCache.getConfig().enableOnIp.contains(server.ip) && !enableShulkers + && !bypassAccepted) { openConfirmationScreen(); } else if (overlay == null) { - if (!bypassAccepted && server != null && enableOnIp.contains(server.ip)) { + if (!bypassAccepted && server != null && serverCache.getConfig().enableOnIp.contains(server.ip)) { bypassAccepted = true; ClientUtil.sendActionBarMessage(ComponentProvider.translatable("text.itemswapper.usedwhitelist") .withStyle(ChatFormatting.GOLD)); @@ -257,7 +261,7 @@ public static void onPrimaryClick(@NotNull ItemSwapperUI xtOverlay, boolean forc boolean keepOpen = xtOverlay.onPrimaryClick(); if (forceClose || !keepOpen) { minecraft.setScreen(null); - if (!ConfigManager.getInstance().getConfig().allowWalkingWithUI) { + if (!ConfigHolder.getInstance().getGeneral().getConfig().allowWalkingWithUI) { KeyMapping.setAll(); } } @@ -303,11 +307,11 @@ private void acceptBypassCallback(boolean accepted) { if (server != null) { if (accepted) { bypassAccepted = true; - cacheManager.getCache().enableOnIp.add(server.ip); + serverCache.getConfig().enableOnIp.add(server.ip); } else { - cacheManager.getCache().disableOnIp.add(server.ip); + serverCache.getConfig().disableOnIp.add(server.ip); } - cacheManager.writeConfig(); + serverCache.writeConfig(); ItemSwapperSharedMod.LOGGER.info("Add {} to cached ip-addresses", server.ip); } minecraft.setScreen(null); diff --git a/src/main/java/dev/tr7zw/itemswapper/compat/MidnightControllsSupport.java b/src/main/java/dev/tr7zw/itemswapper/compat/MidnightControllsSupport.java index 23131589..59a8d7ba 100644 --- a/src/main/java/dev/tr7zw/itemswapper/compat/MidnightControllsSupport.java +++ b/src/main/java/dev/tr7zw/itemswapper/compat/MidnightControllsSupport.java @@ -1,12 +1,13 @@ //? if < 26.1 { /*package dev.tr7zw.itemswapper.compat; +import dev.tr7zw.itemswapper.config.*; +import dev.tr7zw.transition.config.*; import org.jetbrains.annotations.NotNull; import org.lwjgl.glfw.GLFW; import dev.tr7zw.itemswapper.ItemSwapperSharedMod; import dev.tr7zw.itemswapper.ItemSwapperUI; -import dev.tr7zw.itemswapper.config.ConfigManager; import eu.midnightdust.midnightcontrols.client.MidnightControlsClient; import eu.midnightdust.midnightcontrols.client.compat.CompatHandler; import eu.midnightdust.midnightcontrols.client.controller.ButtonBinding; @@ -24,7 +25,7 @@ public class MidnightControllsSupport implements CompatHandler { - private final ConfigManager configManager = ConfigManager.getInstance(); + private final ConfigManager configManager = ConfigHolder.getInstance().getGeneral(); private ButtonCategory CATEGORY; private Minecraft client = Minecraft.getInstance(); diff --git a/src/main/java/dev/tr7zw/itemswapper/compat/ViveCraftSupport.java b/src/main/java/dev/tr7zw/itemswapper/compat/ViveCraftSupport.java index 24408bd5..da2a2580 100644 --- a/src/main/java/dev/tr7zw/itemswapper/compat/ViveCraftSupport.java +++ b/src/main/java/dev/tr7zw/itemswapper/compat/ViveCraftSupport.java @@ -1,13 +1,13 @@ package dev.tr7zw.itemswapper.compat; -import dev.tr7zw.itemswapper.config.Config; -import dev.tr7zw.itemswapper.config.ConfigManager; +import dev.tr7zw.itemswapper.config.*; import dev.tr7zw.itemswapper.ItemSwapperBase; +import dev.tr7zw.transition.config.*; public class ViveCraftSupport { private static final ViveCraftSupport INSTANCE = new ViveCraftSupport(); - private final ConfigManager configManager = ConfigManager.getInstance(); + private final ConfigManager configManager = ConfigHolder.getInstance().getGeneral(); private boolean isAvailable = false; private ViveCraftSupport() { diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/ItemGroupManager.java b/src/main/java/dev/tr7zw/itemswapper/manager/ItemGroupManager.java index 524a587e..4190faa3 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/ItemGroupManager.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/ItemGroupManager.java @@ -6,9 +6,10 @@ import dev.tr7zw.itemswapper.ItemSwapperBase; import dev.tr7zw.itemswapper.ItemSwapperSharedMod; import dev.tr7zw.itemswapper.api.client.ContainerProvider; -import dev.tr7zw.itemswapper.config.ConfigManager; +import dev.tr7zw.itemswapper.config.*; import dev.tr7zw.itemswapper.manager.itemgroups.*; import dev.tr7zw.itemswapper.util.ColorUtil.UnpackedColor; +import dev.tr7zw.transition.config.*; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.*; @@ -19,6 +20,7 @@ public class ItemGroupManager { + private static final ConfigManager configManager = ConfigHolder.getInstance().getGeneral(); private final Map groupMapping = new HashMap<>(); private final Map> paletteMapping = new HashMap<>(); private final Map listKeyMapping = new HashMap<>(); @@ -87,7 +89,7 @@ public Page getNextPage(ItemGroup current, ItemEntry clicked, int slot) { } } // check if it's a valid container that can be opened - if (current == null && slot != -1 && !ConfigManager.getInstance().getConfig().disableShulkers) { + if (current == null && slot != -1 && !configManager.getConfig().disableShulkers) { ContainerProvider provider = ItemSwapperSharedMod.instance.getClientProviderManager() .getContainerProvider(clicked.getItem()); if (provider != null) { diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/AbstractContainerScreenMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/AbstractContainerScreenMixin.java index 5e64ab76..df19d0e5 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/AbstractContainerScreenMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/AbstractContainerScreenMixin.java @@ -2,6 +2,8 @@ import java.util.Objects; +import dev.tr7zw.itemswapper.config.*; +import dev.tr7zw.transition.config.*; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -9,7 +11,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import dev.tr7zw.itemswapper.ItemSwapperMod; -import dev.tr7zw.itemswapper.config.ConfigManager; import dev.tr7zw.itemswapper.gui.CopyToClipboard; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; @@ -45,7 +46,8 @@ protected AbstractContainerScreenMixin(Component component) { @Inject(method = "init", at = @At("TAIL")) private void init(CallbackInfo info) { - if (!ConfigManager.getInstance().getConfig().editMode || minecraft == null || minecraft.player == null) { + if (!ConfigHolder.getInstance().getGeneral().getConfig().editMode || minecraft == null + || minecraft.player == null) { return; } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/ContainerScreenMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/ContainerScreenMixin.java index c1c80086..148706fb 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/ContainerScreenMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/ContainerScreenMixin.java @@ -2,15 +2,15 @@ import static dev.tr7zw.itemswapper.util.ItemUtil.itemstackToSingleItem; +import dev.tr7zw.itemswapper.config.*; +import dev.tr7zw.transition.config.*; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.tr7zw.itemswapper.config.ConfigManager; import dev.tr7zw.itemswapper.manager.itemgroups.ItemGroup; import dev.tr7zw.itemswapper.overlay.SwitchItemOverlay; -import dev.tr7zw.itemswapper.util.ItemUtil; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.gui.screens.inventory.ContainerScreen; import net.minecraft.network.chat.Component; @@ -48,7 +48,7 @@ public void render(GuiGraphicsExtractor graphics, int i, int j, float f, Callbac /* public void render(PoseStack graphics, int i, int j, float f, CallbackInfo ci) { *///? } - if (!ConfigManager.getInstance().getConfig().editMode) { + if (!ConfigHolder.getInstance().getGeneral().getConfig().editMode) { return; } int limit = 25; diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/KeyMappingMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/KeyMappingMixin.java index c110d18d..dc771b8c 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/KeyMappingMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/KeyMappingMixin.java @@ -2,6 +2,8 @@ import java.util.Map; +import dev.tr7zw.itemswapper.config.*; +import dev.tr7zw.transition.config.*; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -10,7 +12,6 @@ import dev.tr7zw.itemswapper.ItemSwapperSharedMod; import dev.tr7zw.itemswapper.ItemSwapperUI; -import dev.tr7zw.itemswapper.config.ConfigManager; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; @@ -19,7 +20,7 @@ public class KeyMappingMixin { @Shadow private static Map ALL; - private static final ConfigManager configManager = ConfigManager.getInstance(); + private static final ConfigManager configManager = ConfigHolder.getInstance().getGeneral(); @Inject(method = "releaseAll", at = @At("HEAD"), cancellable = true) private static void releaseAll(CallbackInfo ci) { diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/KeyboardHandlerMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/KeyboardHandlerMixin.java index 64eb31d9..0635d44d 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/KeyboardHandlerMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/KeyboardHandlerMixin.java @@ -1,5 +1,7 @@ package dev.tr7zw.itemswapper.mixin; +import dev.tr7zw.itemswapper.config.*; +import dev.tr7zw.transition.config.*; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -12,7 +14,6 @@ import dev.tr7zw.itemswapper.ItemSwapperSharedMod; import dev.tr7zw.itemswapper.ItemSwapperUI; -import dev.tr7zw.itemswapper.config.ConfigManager; import net.minecraft.client.KeyMapping; import net.minecraft.client.KeyboardHandler; import net.minecraft.client.Minecraft; @@ -24,7 +25,7 @@ public class KeyboardHandlerMixin { @Final private Minecraft minecraft; - private final ConfigManager configManager = ConfigManager.getInstance(); + private final ConfigManager configManager = ConfigHolder.getInstance().getGeneral(); @Inject(method = "keyPress", at = @At("TAIL"), locals = LocalCapture.CAPTURE_FAILHARD) //? if >= 1.21.10 { diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/LitematicaMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/LitematicaMixin.java index 6864d831..2d87ac0a 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/LitematicaMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/LitematicaMixin.java @@ -1,5 +1,7 @@ package dev.tr7zw.itemswapper.mixin; +import dev.tr7zw.itemswapper.config.*; +import dev.tr7zw.transition.config.*; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -7,10 +9,7 @@ import static dev.tr7zw.transition.mc.GeneralUtil.getResourceLocation; import dev.tr7zw.itemswapper.ItemSwapperSharedMod; -import dev.tr7zw.itemswapper.config.ConfigManager; -import dev.tr7zw.itemswapper.config.PickBlockMode; import dev.tr7zw.itemswapper.manager.itemgroups.ItemList; -import dev.tr7zw.itemswapper.util.ItemUtil; import fi.dy.masa.litematica.materials.MaterialCache; import fi.dy.masa.litematica.util.RayTraceUtils; @@ -28,14 +27,15 @@ public class LitematicaMixin { @Inject(method = "doSchematicWorldPickBlock", at = @At("HEAD"), remap = true, cancellable = true) private static void doSchematicWorldPickBlockHook(boolean closest, Minecraft mc, CallbackInfoReturnable ci) { - if (ConfigManager.getInstance().getConfig().pickblockOnToolsWeapons != PickBlockMode.ALLOW) { + if (ConfigHolder.getInstance().getGeneral().getConfig().pickblockOnToolsWeapons != PickBlockMode.ALLOW) { ItemList list = ItemSwapperSharedMod.instance.getItemGroupManager() .getList(mc.player.getMainHandItem().getItem()); if (list != null && (list.getId().equals(getResourceLocation("itemswapper", "v2/weapons")) || list.getId().equals(getResourceLocation("itemswapper", "v2/tools")))) { - if (ConfigManager.getInstance().getConfig().pickblockOnToolsWeapons == PickBlockMode.PREVENT_ON_TOOL) { + if (ConfigHolder.getInstance().getGeneral() + .getConfig().pickblockOnToolsWeapons == PickBlockMode.PREVENT_ON_TOOL) { // skip Litematica logic ci.setReturnValue(true); ci.cancel(); diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/MinecraftMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/MinecraftMixin.java index f02a3979..81bc82b2 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/MinecraftMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/MinecraftMixin.java @@ -1,17 +1,22 @@ package dev.tr7zw.itemswapper.mixin; +import dev.tr7zw.itemswapper.*; +import dev.tr7zw.itemswapper.config.*; +import dev.tr7zw.transition.config.*; +import net.minecraft.client.*; import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.player.*; +import net.minecraft.client.server.*; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.EntityHitResult; -import net.minecraft.world.phys.HitResult; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; +import net.minecraft.world.phys.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.callback.*; + import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; @@ -21,7 +26,6 @@ import static dev.tr7zw.transition.mc.GeneralUtil.getResourceLocation; import dev.tr7zw.itemswapper.ItemSwapperSharedMod; import dev.tr7zw.itemswapper.ItemSwapperUI; -import dev.tr7zw.itemswapper.config.ConfigManager; import dev.tr7zw.itemswapper.config.PickBlockMode; import dev.tr7zw.itemswapper.manager.SwapperResourceLoader; import dev.tr7zw.itemswapper.manager.itemgroups.ItemList; @@ -120,8 +124,8 @@ private ItemStack getHitResultStack(HitResult hitResult, boolean ctrl) { @Inject(method = "pickBlockOrEntity", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;hasControlDown()Z", shift = At.Shift.AFTER), cancellable = true) //? } else if >= 1.21.10 { - /* - @Inject(method = "pickBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;hasControlDown()Z", shift = At.Shift.AFTER), cancellable = true) + + /*@Inject(method = "pickBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;hasControlDown()Z", shift = At.Shift.AFTER), cancellable = true) *///? } else { /*@Inject(method = "pickBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;hasControlDown()Z", shift = At.Shift.AFTER), cancellable = true) @@ -145,13 +149,14 @@ private void pickBlockShulkerSupport(CallbackInfo ci, boolean creative, BlockEnt if (creative) { return; } - if (ConfigManager.getInstance().getConfig().pickblockOnToolsWeapons != PickBlockMode.ALLOW) { + if (ConfigHolder.getInstance().getGeneral().getConfig().pickblockOnToolsWeapons != PickBlockMode.ALLOW) { ItemList list = ItemSwapperSharedMod.instance.getItemGroupManager() .getList(player.getMainHandItem().getItem()); if (list != null && (list.getId().equals(getResourceLocation("itemswapper", "v2/weapons")) || list.getId().equals(getResourceLocation("itemswapper", "v2/tools")))) { - if (ConfigManager.getInstance().getConfig().pickblockOnToolsWeapons == PickBlockMode.PREVENT_ON_TOOL) { + if (ConfigHolder.getInstance().getGeneral() + .getConfig().pickblockOnToolsWeapons == PickBlockMode.PREVENT_ON_TOOL) { // skip vanilla logic ci.cancel(); } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/MouseHandlerMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/MouseHandlerMixin.java index 1ae08c82..2dadbc78 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/MouseHandlerMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/MouseHandlerMixin.java @@ -1,5 +1,7 @@ package dev.tr7zw.itemswapper.mixin; +import dev.tr7zw.itemswapper.config.*; +import dev.tr7zw.transition.config.*; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -7,12 +9,9 @@ import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import com.mojang.blaze3d.Blaze3D; - import dev.tr7zw.itemswapper.ItemSwapperUI; import dev.tr7zw.itemswapper.accessor.ExtendedMouseHandler; import dev.tr7zw.itemswapper.compat.AmecsAPISupport; -import dev.tr7zw.itemswapper.config.ConfigManager; import net.minecraft.client.Minecraft; import net.minecraft.client.MouseHandler; import net.minecraft.client.gui.screens.Screen; @@ -31,7 +30,7 @@ public class MouseHandlerMixin implements ExtendedMouseHandler { @Shadow private int fakeRightMouse; - private final ConfigManager configManager = ConfigManager.getInstance(); + private final ConfigManager configManager = ConfigHolder.getInstance().getGeneral(); private boolean keepMouseGrabbed = false; @Inject(method = "turnPlayer", at = @At("HEAD"), cancellable = true) diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java index f7fc3b8d..2c95a561 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java @@ -1,13 +1,14 @@ package dev.tr7zw.itemswapper.mixin; +import dev.tr7zw.itemswapper.config.*; import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.transition.config.*; import dev.tr7zw.transition.loader.networking.*; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import dev.tr7zw.itemswapper.config.ConfigManager; import net.minecraft.network.Connection; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.players.PlayerList; @@ -29,7 +30,7 @@ public void placeNewPlayer(Connection connection, ServerPlayer serverPlayer, /* public void placeNewPlayer(Connection connection, ServerPlayer serverPlayer, CallbackInfo ci) { *///? } - if (ConfigManager.getInstance().getConfig().serverPreventModUsage) { + if (ConfigHolder.getInstance().getGeneral().getConfig().serverPreventModUsage) { ServerNetworkUtil.sendPacket(serverPlayer, new DisableModPayload(true)); } else { ServerNetworkUtil.sendPacket(serverPlayer, new ShulkerSupportPayload(true)); diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java index fed2d81c..55311a02 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java @@ -10,12 +10,13 @@ import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI; import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI.OnSwap; import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI.SwapSent; -import dev.tr7zw.itemswapper.config.ConfigManager; +import dev.tr7zw.itemswapper.config.*; import dev.tr7zw.itemswapper.manager.ClientProviderManager; import dev.tr7zw.itemswapper.manager.ItemGroupManager.ListPage; import dev.tr7zw.itemswapper.manager.ItemGroupManager.Page; import dev.tr7zw.itemswapper.manager.itemgroups.ItemList; import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.transition.config.*; import dev.tr7zw.transition.loader.networking.*; import dev.tr7zw.transition.mc.ComponentProvider; import dev.tr7zw.transition.mc.InventoryUtil; @@ -150,7 +151,7 @@ private void refreshList() { InventoryUtil.getSelected(minecraft.player.getInventory()))); for (Item item : itemSelection.getItems()) { List ids = providerManager.findSlotsMatchingItem(item, false, - ConfigManager.getInstance().getConfig().ignoreHotbar); + ConfigHolder.getInstance().getGeneral().getConfig().ignoreHotbar); for (AvailableSlot id : ids) { if (!entries.contains(id)) { entries.add(id); @@ -175,7 +176,7 @@ public void onSecondaryClick() { @Override public boolean lockMouse() { - return !ConfigManager.getInstance().getConfig().unlockListMouse; + return !ConfigHolder.getInstance().getGeneral().getConfig().unlockListMouse; } @Override diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/SwitchItemOverlay.java b/src/main/java/dev/tr7zw/itemswapper/overlay/SwitchItemOverlay.java index 8bb8db17..45ccb146 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/SwitchItemOverlay.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/SwitchItemOverlay.java @@ -4,15 +4,13 @@ import java.util.Collections; import java.util.List; -import com.mojang.blaze3d.systems.RenderSystem; - import static dev.tr7zw.transition.mc.GeneralUtil.getResourceLocation; import dev.tr7zw.itemswapper.ItemSwapperSharedMod; import dev.tr7zw.itemswapper.ItemSwapperUI; import dev.tr7zw.itemswapper.api.client.ContainerProvider; import dev.tr7zw.itemswapper.compat.ControlifySupport; import dev.tr7zw.itemswapper.compat.ViveCraftSupport; -import dev.tr7zw.itemswapper.config.ConfigManager; +import dev.tr7zw.itemswapper.config.*; import dev.tr7zw.itemswapper.manager.ClientProviderManager; import dev.tr7zw.itemswapper.manager.ItemGroupManager.ContainerPage; import dev.tr7zw.itemswapper.manager.ItemGroupManager.InventoryPage; @@ -42,6 +40,7 @@ import dev.tr7zw.itemswapper.overlay.logic.ShortcutListWidget; import dev.tr7zw.itemswapper.util.ColorUtil.UnpackedColor; import dev.tr7zw.itemswapper.util.WidgetUtil; +import dev.tr7zw.transition.config.*; import dev.tr7zw.transition.mc.ComponentProvider; import dev.tr7zw.transition.mc.InventoryUtil; import dev.tr7zw.trender.gui.client.RenderContext; @@ -79,7 +78,7 @@ public class SwitchItemOverlay extends ItemSwapperUIAbstractInput { @Setter private boolean hideClearSlotShortcut = false; - private final ConfigManager configManager = ConfigManager.getInstance(); + private final ConfigManager configManager = ConfigHolder.getInstance().getGeneral(); private SwitchItemOverlay() { super(ComponentProvider.empty()); @@ -266,10 +265,10 @@ public void render(PoseStack pose, int mouseX, int mouseY, float f) { //? } else if >= 1.21.2 { - /*RenderSystem.setShader(net.minecraft.client.renderer.CoreShaders.POSITION_TEX); + /*com.mojang.blaze3d.systems.RenderSystem.setShader(net.minecraft.client.renderer.CoreShaders.POSITION_TEX); *///? } else { - /*RenderSystem.setShader(net.minecraft.client.renderer.GameRenderer::getPositionTexShader); + /*com.mojang.blaze3d.systems.RenderSystem.setShader(net.minecraft.client.renderer.GameRenderer::getPositionTexShader); *///? } //? if < 1.21.6 { diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ItemGridWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ItemGridWidget.java index 9bf6f8a4..656d4419 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ItemGridWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ItemGridWidget.java @@ -5,9 +5,10 @@ import dev.tr7zw.itemswapper.ItemSwapperSharedMod; import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI; -import dev.tr7zw.itemswapper.config.ConfigManager; +import dev.tr7zw.itemswapper.config.*; import dev.tr7zw.itemswapper.manager.ClientProviderManager; import dev.tr7zw.itemswapper.util.WidgetUtil; +import dev.tr7zw.transition.config.*; import dev.tr7zw.trender.gui.client.RenderContext; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; @@ -16,7 +17,7 @@ public abstract class ItemGridWidget implements GuiWidget { protected final Minecraft minecraft = Minecraft.getInstance(); protected final ClientProviderManager providerManager = ItemSwapperSharedMod.instance.getClientProviderManager(); - protected final ConfigManager configManager = ConfigManager.getInstance(); + protected final ConfigManager configManager = ConfigHolder.getInstance().getGeneral(); protected final ItemSwapperClientAPI clientAPI = ItemSwapperClientAPI.getInstance(); protected final List slots = new ArrayList<>(); protected WidgetArea widgetArea = new WidgetArea(0, 0, 128, 128, null, 0, 0); diff --git a/src/main/java/dev/tr7zw/itemswapper/server/ServerItemHandler.java b/src/main/java/dev/tr7zw/itemswapper/server/ServerItemHandler.java index 8097459c..e19cee84 100644 --- a/src/main/java/dev/tr7zw/itemswapper/server/ServerItemHandler.java +++ b/src/main/java/dev/tr7zw/itemswapper/server/ServerItemHandler.java @@ -1,9 +1,10 @@ package dev.tr7zw.itemswapper.server; +import dev.tr7zw.itemswapper.config.*; +import dev.tr7zw.transition.config.*; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import dev.tr7zw.itemswapper.config.ConfigManager; import dev.tr7zw.itemswapper.packets.RefillItemPayload; import dev.tr7zw.itemswapper.packets.SwapItemPayload; import dev.tr7zw.itemswapper.util.ShulkerHelper; @@ -15,7 +16,7 @@ public class ServerItemHandler { private static final Logger network_logger = LogManager.getLogger("ItemSwapper-Network"); - private static final ConfigManager configManager = ConfigManager.getInstance(); + private static final ConfigManager configManager = ConfigHolder.getInstance().getGeneral(); public void swapItem(ServerPlayer player, SwapItemPayload payload) { if (configManager.getConfig().disableShulkers) { From 3edd5502113b38e14ea518475187ee07ec83c80a Mon Sep 17 00:00:00 2001 From: tr7zw Date: Thu, 30 Apr 2026 18:26:24 +0200 Subject: [PATCH 6/7] Further networking cleanup, SwapItemPayload only gets created from one place and is deprecated --- .../dev/tr7zw/itemswapper/ItemSwapperMod.java | 4 +- .../itemswapper/manager/ItemManager.java | 44 +++++++++++-------- .../manager/shortcuts/RestockShortcut.java | 2 +- .../itemswapper/mixin/PlayerListMixin.java | 3 +- .../itemswapper/overlay/ItemListOverlay.java | 22 ++-------- .../overlay/logic/ContainerWidget.java | 14 ++---- .../overlay/logic/ListContentWidget.java | 21 ++------- .../{ => clientbound}/DisableModPayload.java | 8 +++- .../RefillSupportPayload.java | 7 ++- .../ShulkerSupportPayload.java | 7 ++- .../{ => serverbound}/RefillItemPayload.java | 9 +++- .../{ => serverbound}/SwapItemPayload.java | 10 ++++- .../server/ItemSwapperSharedServer.java | 3 +- .../itemswapper/server/ServerItemHandler.java | 4 +- 14 files changed, 81 insertions(+), 77 deletions(-) rename src/main/java/dev/tr7zw/itemswapper/packets/{ => clientbound}/DisableModPayload.java (81%) rename src/main/java/dev/tr7zw/itemswapper/packets/{ => clientbound}/RefillSupportPayload.java (87%) rename src/main/java/dev/tr7zw/itemswapper/packets/{ => clientbound}/ShulkerSupportPayload.java (87%) rename src/main/java/dev/tr7zw/itemswapper/packets/{ => serverbound}/RefillItemPayload.java (80%) rename src/main/java/dev/tr7zw/itemswapper/packets/{ => serverbound}/SwapItemPayload.java (76%) diff --git a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperMod.java b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperMod.java index 9445f6aa..7b040b05 100644 --- a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperMod.java +++ b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperMod.java @@ -2,7 +2,8 @@ import dev.tr7zw.itemswapper.compat.*; import dev.tr7zw.itemswapper.manager.*; -import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.itemswapper.packets.clientbound.*; +import dev.tr7zw.itemswapper.packets.serverbound.*; import dev.tr7zw.itemswapper.server.*; import dev.tr7zw.transition.loader.*; import dev.tr7zw.transition.loader.networking.*; @@ -18,7 +19,6 @@ public class ItemSwapperMod extends ItemSwapperSharedMod implements ClientModInitializer { - private static final String ERROR_WHILE_PROCESSING_PACKET = "Error while processing packet!"; protected static final String ITEMSWAPPER = "itemswapper"; @Override diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/ItemManager.java b/src/main/java/dev/tr7zw/itemswapper/manager/ItemManager.java index a7a81e08..00ee22ac 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/ItemManager.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/ItemManager.java @@ -1,10 +1,9 @@ package dev.tr7zw.itemswapper.manager; -import dev.tr7zw.itemswapper.*; import dev.tr7zw.itemswapper.api.*; import dev.tr7zw.itemswapper.api.client.*; import dev.tr7zw.itemswapper.manager.itemgroups.*; -import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.itemswapper.packets.serverbound.*; import dev.tr7zw.itemswapper.util.*; import dev.tr7zw.itemswapper.util.ItemUtil; import dev.tr7zw.transition.loader.networking.*; @@ -27,27 +26,36 @@ public class ItemManager { public boolean grabItem(Item item, boolean ignoreHotbar) { List slots = providerManager.findSlotsMatchingItem(item, false, ignoreHotbar); for (AvailableSlot slot : slots) { - ItemSwapperClientAPI.OnSwap event = clientAPI.prepareItemSwapEvent - .callEvent(new ItemSwapperClientAPI.OnSwap(slot, new AtomicBoolean())); - if (event.canceled().get()) { - // interaction canceled by some other mod - return false; - } - if (slot.inventory() == -1) { - ItemUtil.swapWithSlot(ItemUtil.inventorySlotToHudSlot(slot.slot())); - } else { - if (ShulkerHelper.isShulker(InventoryUtil.getSelected(minecraft.player.getInventory()).getItem())) { - // Can't put a shulker into a shulker, so search a different spot - continue; - } - ClientNetworkUtil.sendPacket(new SwapItemPayload(slot.inventory(), slot.slot())); + if (slot.inventory() != -1 + && ShulkerHelper.isShulker(InventoryUtil.getSelected(minecraft.player.getInventory()).getItem())) { + // Can't put a shulker into a shulker, so search a different spot + continue; } - clientAPI.itemSwapSentEvent.callEvent(new ItemSwapperClientAPI.SwapSent(slot)); - return true; + return grabItem(slot); } return false; } + public boolean grabItem(AvailableSlot slot) { + ItemSwapperClientAPI.OnSwap event = clientAPI.prepareItemSwapEvent + .callEvent(new ItemSwapperClientAPI.OnSwap(slot, new AtomicBoolean())); + if (event.canceled().get()) { + // interaction canceled by some other mod + return false; + } + if (slot.inventory() == -1) { + ItemUtil.swapWithSlot(ItemUtil.inventorySlotToHudSlot(slot.slot())); + } else { + if (ShulkerHelper.isShulker(InventoryUtil.getSelected(minecraft.player.getInventory()).getItem())) { + // Can't put a shulker into a shulker, so search a different spot + return false; + } + ClientNetworkUtil.sendPacket(new SwapItemPayload(slot.inventory(), slot.slot())); + } + clientAPI.itemSwapSentEvent.callEvent(new ItemSwapperClientAPI.SwapSent(slot)); + return true; + } + public Component getDisplayname(ItemStack item) { if (dev.tr7zw.transition.mc.ItemUtil.hasCustomName(item)) { return item.getHoverName().copy(); diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/RestockShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/RestockShortcut.java index 1bc4ebe4..e1d29126 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/RestockShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/RestockShortcut.java @@ -6,7 +6,7 @@ import dev.tr7zw.itemswapper.manager.itemgroups.Shortcut; import dev.tr7zw.itemswapper.manager.itemgroups.Icon.ItemIcon; import dev.tr7zw.itemswapper.overlay.SwitchItemOverlay; -import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.itemswapper.packets.serverbound.*; import dev.tr7zw.transition.loader.networking.*; import dev.tr7zw.transition.mc.InventoryUtil; import dev.tr7zw.transition.mc.ComponentProvider; diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java index 2c95a561..93f77a76 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java @@ -1,8 +1,7 @@ package dev.tr7zw.itemswapper.mixin; import dev.tr7zw.itemswapper.config.*; -import dev.tr7zw.itemswapper.packets.*; -import dev.tr7zw.transition.config.*; +import dev.tr7zw.itemswapper.packets.clientbound.*; import dev.tr7zw.transition.loader.networking.*; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java index 55311a02..aa186586 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemListOverlay.java @@ -2,25 +2,20 @@ import java.util.ArrayList; import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; import static dev.tr7zw.transition.mc.GeneralUtil.getResourceLocation; import dev.tr7zw.itemswapper.ItemSwapperSharedMod; import dev.tr7zw.itemswapper.api.AvailableSlot; import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI; -import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI.OnSwap; -import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI.SwapSent; import dev.tr7zw.itemswapper.config.*; -import dev.tr7zw.itemswapper.manager.ClientProviderManager; +import dev.tr7zw.itemswapper.manager.*; import dev.tr7zw.itemswapper.manager.ItemGroupManager.ListPage; import dev.tr7zw.itemswapper.manager.ItemGroupManager.Page; import dev.tr7zw.itemswapper.manager.itemgroups.ItemList; -import dev.tr7zw.itemswapper.packets.*; -import dev.tr7zw.transition.config.*; +import dev.tr7zw.itemswapper.packets.serverbound.*; import dev.tr7zw.transition.loader.networking.*; import dev.tr7zw.transition.mc.ComponentProvider; import dev.tr7zw.transition.mc.InventoryUtil; -import dev.tr7zw.itemswapper.util.ItemUtil; import dev.tr7zw.trender.gui.client.RenderContext; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; @@ -59,6 +54,7 @@ public class ItemListOverlay extends ItemSwapperUIAbstractInput { private static final int slotSize = 18; private final ItemSwapperClientAPI clientAPI = ItemSwapperClientAPI.getInstance(); private final ClientProviderManager providerManager = ItemSwapperSharedMod.instance.getClientProviderManager(); + private final ItemManager itemManager = ItemSwapperSharedMod.instance.getItemManager(); private final Minecraft minecraft = Minecraft.getInstance(); private ItemList itemSelection; private List entries = new ArrayList<>(); @@ -183,17 +179,7 @@ public boolean lockMouse() { public boolean onPrimaryClick() { if (selectedEntry != 0) { AvailableSlot slot = entries.get(selectedEntry); - OnSwap event = clientAPI.prepareItemSwapEvent.callEvent(new OnSwap(slot, new AtomicBoolean())); - if (event.canceled().get()) { - // interaction canceled by some other mod - return true; - } - if (slot.inventory() == -1) { - ItemUtil.swapWithSlot(ItemUtil.inventorySlotToHudSlot(slot.slot())); - } else { - ClientNetworkUtil.sendPacket(new SwapItemPayload(slot.inventory(), slot.slot())); - } - clientAPI.itemSwapSentEvent.callEvent(new SwapSent(slot)); + itemManager.grabItem(slot); } return false; } diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ContainerWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ContainerWidget.java index 77553343..00c314e9 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ContainerWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ContainerWidget.java @@ -4,21 +4,17 @@ import java.util.Collections; import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; import dev.tr7zw.itemswapper.ItemSwapperMod; import dev.tr7zw.itemswapper.ItemSwapperSharedMod; import dev.tr7zw.itemswapper.api.AvailableSlot; import dev.tr7zw.itemswapper.api.client.ContainerProvider; -import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI.OnSwap; -import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI.SwapSent; -import dev.tr7zw.itemswapper.manager.ClientProviderManager; +import dev.tr7zw.itemswapper.manager.*; import dev.tr7zw.itemswapper.manager.itemgroups.ItemEntry; import dev.tr7zw.itemswapper.overlay.SwitchItemOverlay; -import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.itemswapper.packets.serverbound.*; import dev.tr7zw.transition.loader.networking.*; import dev.tr7zw.transition.mc.InventoryUtil; -import dev.tr7zw.itemswapper.util.ItemUtil; import dev.tr7zw.itemswapper.util.RenderHelper; import dev.tr7zw.itemswapper.util.RenderHelper.SlotEffect; import dev.tr7zw.itemswapper.util.WidgetUtil; @@ -34,6 +30,7 @@ public class ContainerWidget extends ItemGridWidget { private static final ClientProviderManager providerManager = ItemSwapperSharedMod.instance .getClientProviderManager(); + private static final ItemManager itemManager = ItemSwapperSharedMod.instance.getItemManager(); private int slotId; public ContainerWidget(int x, int y, int slotId) { @@ -91,13 +88,10 @@ public boolean onPrimaryClick(SwitchItemOverlay overlay, GuiSlot guiSlot, int xO List slots = getItem(guiSlot.id()); if (!slots.isEmpty()) { AvailableSlot slot = slots.get(0); - OnSwap event = clientAPI.prepareItemSwapEvent.callEvent(new OnSwap(slot, new AtomicBoolean())); - if (event.canceled().get()) { + if (!itemManager.grabItem(slot)) { // interaction canceled by some other mod return true; } - ClientNetworkUtil.sendPacket(new SwapItemPayload(slot.inventory(), slot.slot())); - clientAPI.itemSwapSentEvent.callEvent(new SwapSent(slot)); ItemSwapperSharedMod.instance.setLastItem(slot.item().getItem()); ItemSwapperSharedMod.instance.setLastPage(overlay.getLastPages().get(overlay.getLastPages().size() - 1)); return false; diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ListContentWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ListContentWidget.java index b9ebb8e1..c9d65fed 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ListContentWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/ListContentWidget.java @@ -3,18 +3,15 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; import dev.tr7zw.itemswapper.*; import dev.tr7zw.itemswapper.api.AvailableSlot; -import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI.OnSwap; -import dev.tr7zw.itemswapper.api.client.ItemSwapperClientAPI.SwapSent; +import dev.tr7zw.itemswapper.manager.*; import dev.tr7zw.itemswapper.manager.itemgroups.ItemList; import dev.tr7zw.itemswapper.overlay.SwitchItemOverlay; -import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.itemswapper.packets.serverbound.*; import dev.tr7zw.transition.loader.networking.*; import dev.tr7zw.transition.mc.*; -import dev.tr7zw.itemswapper.util.ItemUtil; import dev.tr7zw.itemswapper.util.RenderHelper; import dev.tr7zw.itemswapper.util.RenderHelper.SlotEffect; import dev.tr7zw.itemswapper.util.WidgetUtil; @@ -23,6 +20,7 @@ public class ListContentWidget extends ItemGridWidget { + private final ItemManager itemManager = ItemSwapperSharedMod.instance.getItemManager(); private final ItemList itemSelection; private final List entries = new ArrayList<>(); @@ -98,18 +96,7 @@ public boolean onPrimaryClick(SwitchItemOverlay overlay, GuiSlot guiSlot, int xO } AvailableSlot entry = entries.get(guiSlot.id()); if (entry != null && !entry.item().isEmpty()) { - OnSwap event = clientAPI.prepareItemSwapEvent.callEvent(new OnSwap(entry, new AtomicBoolean())); - if (event.canceled().get()) { - // interaction canceled by some other mod - return true; - } - if (entry.inventory() == -1) { - ItemUtil.swapWithSlot(ItemUtil.inventorySlotToHudSlot(entry.slot())); - } else { - ClientNetworkUtil.sendPacket(new SwapItemPayload(entry.inventory(), entry.slot())); - } - clientAPI.itemSwapSentEvent.callEvent(new SwapSent(entry)); - return false; + return itemManager.grabItem(entry); } else if (guiSlot.id() < itemSelection.getItems().length && minecraft.player.isCreative() && configManager.getConfig().creativeCheatMode) { // stash away current item, if its not a default item to prevent item loss diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/clientbound/DisableModPayload.java similarity index 81% rename from src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java rename to src/main/java/dev/tr7zw/itemswapper/packets/clientbound/DisableModPayload.java index dc7389ad..4d092ce1 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/DisableModPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/clientbound/DisableModPayload.java @@ -1,4 +1,4 @@ -package dev.tr7zw.itemswapper.packets; +package dev.tr7zw.itemswapper.packets.clientbound; import dev.tr7zw.itemswapper.ItemSwapperMod; import dev.tr7zw.transition.loader.networking.*; @@ -6,6 +6,12 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; +/** + * Packet to enable/disable the mod on the client. This is used to prevent the + * mod from being used on servers that do not allow it. + * + * @param enabled + */ public record DisableModPayload(boolean enabled) implements CustomPacketPayloadSupport { public static final DisableModPayload INSTANCE = new DisableModPayload(false); diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/clientbound/RefillSupportPayload.java similarity index 87% rename from src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java rename to src/main/java/dev/tr7zw/itemswapper/packets/clientbound/RefillSupportPayload.java index 7a2b1c4b..ca4780fe 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/RefillSupportPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/clientbound/RefillSupportPayload.java @@ -1,4 +1,4 @@ -package dev.tr7zw.itemswapper.packets; +package dev.tr7zw.itemswapper.packets.clientbound; import dev.tr7zw.itemswapper.ItemSwapperMod; import dev.tr7zw.transition.loader.networking.*; @@ -6,6 +6,11 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; +/** + * Packet to enable/disable refill support on the client. + * + * @param enabled + */ public record RefillSupportPayload(boolean enabled) implements CustomPacketPayloadSupport { public static final RefillSupportPayload INSTANCE = new RefillSupportPayload(true); diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/clientbound/ShulkerSupportPayload.java similarity index 87% rename from src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java rename to src/main/java/dev/tr7zw/itemswapper/packets/clientbound/ShulkerSupportPayload.java index b1f9e487..0cbccd1f 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/ShulkerSupportPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/clientbound/ShulkerSupportPayload.java @@ -1,4 +1,4 @@ -package dev.tr7zw.itemswapper.packets; +package dev.tr7zw.itemswapper.packets.clientbound; import dev.tr7zw.itemswapper.ItemSwapperMod; import dev.tr7zw.transition.loader.networking.*; @@ -6,6 +6,11 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; +/** + * Packet to enable/disable shulker support on the client. + * + * @param enabled + */ public record ShulkerSupportPayload(boolean enabled) implements CustomPacketPayloadSupport { public static final ShulkerSupportPayload INSTANCE = new ShulkerSupportPayload(false); diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/serverbound/RefillItemPayload.java similarity index 80% rename from src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java rename to src/main/java/dev/tr7zw/itemswapper/packets/serverbound/RefillItemPayload.java index 3278c915..a4b0fd17 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/RefillItemPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/serverbound/RefillItemPayload.java @@ -1,4 +1,4 @@ -package dev.tr7zw.itemswapper.packets; +package dev.tr7zw.itemswapper.packets.serverbound; import dev.tr7zw.itemswapper.ItemSwapperMod; import dev.tr7zw.transition.loader.networking.*; @@ -6,6 +6,11 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; +/** + * Payload for refilling an item in a specific slot. + * + * @param slot Inventory slot id + */ public record RefillItemPayload(int slot) implements CustomPacketPayloadSupport { public static final RefillItemPayload INSTANCE = new RefillItemPayload(0); @@ -23,7 +28,7 @@ public void write(FriendlyByteBuf paramFriendlyByteBuf) { @Override public CustomPacketPayloadSupport read(FriendlyByteBuf friendlyByteBuf) { - return new RefillSupportPayload(friendlyByteBuf); + return new RefillItemPayload(friendlyByteBuf); } public RefillItemPayload(FriendlyByteBuf buffer) { diff --git a/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java b/src/main/java/dev/tr7zw/itemswapper/packets/serverbound/SwapItemPayload.java similarity index 76% rename from src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java rename to src/main/java/dev/tr7zw/itemswapper/packets/serverbound/SwapItemPayload.java index eae09dfb..3fde26a7 100644 --- a/src/main/java/dev/tr7zw/itemswapper/packets/SwapItemPayload.java +++ b/src/main/java/dev/tr7zw/itemswapper/packets/serverbound/SwapItemPayload.java @@ -1,4 +1,4 @@ -package dev.tr7zw.itemswapper.packets; +package dev.tr7zw.itemswapper.packets.serverbound; import dev.tr7zw.itemswapper.ItemSwapperMod; import dev.tr7zw.transition.loader.networking.*; @@ -6,6 +6,14 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.*; +/** + * Payload for swapping items in the inventory. + * + * @param inventorySlot The inventory slot of the shulker box. + * @param slot Slot inside the shulkerbox to swap with the currently + * selected item. + */ +@Deprecated public record SwapItemPayload(int inventorySlot, int slot) implements CustomPacketPayloadSupport { public static final SwapItemPayload INSTANCE = new SwapItemPayload(0, 0); diff --git a/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java b/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java index 4f055441..6d9d3a62 100644 --- a/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java +++ b/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java @@ -1,6 +1,7 @@ package dev.tr7zw.itemswapper.server; -import dev.tr7zw.itemswapper.packets.*; +import dev.tr7zw.itemswapper.packets.clientbound.*; +import dev.tr7zw.itemswapper.packets.serverbound.*; import dev.tr7zw.transition.loader.networking.*; import org.apache.logging.log4j.*; diff --git a/src/main/java/dev/tr7zw/itemswapper/server/ServerItemHandler.java b/src/main/java/dev/tr7zw/itemswapper/server/ServerItemHandler.java index e19cee84..746b8eaf 100644 --- a/src/main/java/dev/tr7zw/itemswapper/server/ServerItemHandler.java +++ b/src/main/java/dev/tr7zw/itemswapper/server/ServerItemHandler.java @@ -5,8 +5,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import dev.tr7zw.itemswapper.packets.RefillItemPayload; -import dev.tr7zw.itemswapper.packets.SwapItemPayload; +import dev.tr7zw.itemswapper.packets.serverbound.RefillItemPayload; +import dev.tr7zw.itemswapper.packets.serverbound.SwapItemPayload; import dev.tr7zw.itemswapper.util.ShulkerHelper; import dev.tr7zw.transition.mc.InventoryUtil; import net.minecraft.core.NonNullList; From d2a3409f672eceec8b8b557739bf332e8d4d2c8d Mon Sep 17 00:00:00 2001 From: tr7zw Date: Thu, 30 Apr 2026 21:09:46 +0200 Subject: [PATCH 7/7] Separate out more logic for cleaner controlflow --- .../dev/tr7zw/itemswapper/ItemSwapperMod.java | 9 +- .../itemswapper/ItemSwapperSharedMod.java | 294 +----------------- .../compat/MidnightControllsSupport.java | 4 +- .../manager/ClientSessionSettings.java | 24 ++ .../itemswapper/manager/ClientUiManager.java | 252 +++++++++++++++ .../manager/shortcuts/BlockColorShortcut.java | 4 +- .../manager/shortcuts/LastItemShortcut.java | 2 +- .../shortcuts/OpenInventoryShortcut.java | 2 +- .../itemswapper/mixin/ClientLevelMixin.java | 6 +- .../itemswapper/mixin/KeyMappingMixin.java | 4 +- .../mixin/KeyboardHandlerMixin.java | 9 +- .../itemswapper/mixin/PlayerListMixin.java | 16 +- .../overlay/ItemSwapperUIAbstractInput.java | 4 +- .../overlay/SwitchItemOverlay.java | 2 +- .../overlay/logic/BlockListWidget.java | 2 +- .../provider/ShulkerContainerProvider.java | 4 +- .../server/ItemSwapperSharedServer.java | 4 + .../server/manger/ServerPlayerManager.java | 21 ++ src/test/java/dev/tr7zw/tests/MixinTests.java | 7 +- .../src/main/resources/fabric.mod.json | 81 ----- .../src/main/resources/fabric.mod.json | 81 ----- 21 files changed, 346 insertions(+), 486 deletions(-) create mode 100644 src/main/java/dev/tr7zw/itemswapper/manager/ClientSessionSettings.java create mode 100644 src/main/java/dev/tr7zw/itemswapper/manager/ClientUiManager.java create mode 100644 src/main/java/dev/tr7zw/itemswapper/server/manger/ServerPlayerManager.java delete mode 100644 versions/1.20.1-fabric/src/main/resources/fabric.mod.json delete mode 100644 versions/1.20.2-fabric/src/main/resources/fabric.mod.json diff --git a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperMod.java b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperMod.java index 7b040b05..6a5dd1da 100644 --- a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperMod.java +++ b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperMod.java @@ -25,8 +25,7 @@ public class ItemSwapperMod extends ItemSwapperSharedMod implements ClientModIni public void initModloader() { new ItemSwapperServerMod().onLoad(); ClientTickEvents.START_CLIENT_TICK.register(event -> this.clientTick()); - ModLoaderUtil.registerKeybind(keybind); - ModLoaderUtil.registerKeybind(openInventoryKeybind); + clientUiManager.initModloader(); // Register default resource pack @@ -69,13 +68,13 @@ public void initModloader() { handle.registerServerCustomPacket(RefillItemPayload.INSTANCE); // Client packets handle.registerClientCustomPacket(ShulkerSupportPayload.INSTANCE, payload -> { - ItemSwapperSharedMod.instance.setEnableShulkers(payload.enabled()); + ItemSwapperSharedMod.instance.getSessionSettings().setEnableShulkers(payload.enabled()); }); handle.registerClientCustomPacket(RefillSupportPayload.INSTANCE, payload -> { - ItemSwapperSharedMod.instance.setEnableRefill(payload.enabled()); + ItemSwapperSharedMod.instance.getSessionSettings().setEnableRefill(payload.enabled()); }); handle.registerClientCustomPacket(DisableModPayload.INSTANCE, payload -> { - ItemSwapperSharedMod.instance.setModDisabled(payload.enabled()); + ItemSwapperSharedMod.instance.getSessionSettings().setModDisabled(payload.enabled()); }); }); diff --git a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java index 5a22ea74..0cc52d3e 100644 --- a/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java +++ b/src/main/java/dev/tr7zw/itemswapper/ItemSwapperSharedMod.java @@ -1,72 +1,43 @@ package dev.tr7zw.itemswapper; -import java.util.List; - import dev.tr7zw.itemswapper.api.client.*; import dev.tr7zw.itemswapper.config.*; import dev.tr7zw.itemswapper.manager.*; import dev.tr7zw.transition.config.*; import dev.tr7zw.transition.mc.*; -import org.jetbrains.annotations.NotNull; - -import com.mojang.blaze3d.platform.InputConstants; -import dev.tr7zw.itemswapper.accessor.ExtendedMouseHandler; -import dev.tr7zw.itemswapper.compat.AmecsAPISupport; -import dev.tr7zw.itemswapper.compat.ViveCraftSupport; import dev.tr7zw.itemswapper.manager.ItemGroupManager.Page; -import dev.tr7zw.itemswapper.manager.itemgroups.ItemGroup; -import dev.tr7zw.itemswapper.manager.itemgroups.ItemList; -import dev.tr7zw.itemswapper.overlay.ItemListOverlay; -import dev.tr7zw.itemswapper.overlay.SwitchItemOverlay; import dev.tr7zw.itemswapper.provider.InstrumentItemNameProvider; import dev.tr7zw.itemswapper.provider.PotionNameProvider; import dev.tr7zw.itemswapper.provider.RecordNameProvider; import dev.tr7zw.itemswapper.provider.ShulkerContainerProvider; import lombok.Getter; -import net.minecraft.ChatFormatting; -import net.minecraft.client.KeyMapping; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.ConfirmScreen; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.multiplayer.ServerData; import net.minecraft.world.item.Item; public abstract class ItemSwapperSharedMod extends ItemSwapperBase { - private static Minecraft minecraft = Minecraft.getInstance(); - public static ItemSwapperSharedMod instance; + @Getter private final ItemGroupManager itemGroupManager = new ItemGroupManager(); + @Getter private final ClientProviderManager clientProviderManager = new ClientProviderManager(); @Getter private final BlockTextureManager blockTextureManager = new BlockTextureManager(); @Getter private final ItemManager itemManager = new ItemManager(clientProviderManager, ItemSwapperClientAPI.getInstance()); - @Deprecated private final ConfigManager configManager = ConfigHolder.getInstance().getGeneral(); - @Deprecated private final ConfigManager serverCache = ConfigHolder.getInstance().getServerCache(); + @Getter + private final ClientSessionSettings sessionSettings = new ClientSessionSettings(); + @Getter + protected final ClientUiManager clientUiManager = new ClientUiManager(itemGroupManager, configManager, + sessionSettings, serverCache); - protected KeyMapping keybind = GeneralUtil.createKeyMapping("key.itemswapper.itemswitcher", InputConstants.KEY_R, - "itemswapper"); - protected KeyMapping openInventoryKeybind = GeneralUtil.createKeyMapping("key.itemswapper.openInventory", - InputConstants.UNKNOWN.getValue(), "itemswapper"); - - private boolean enableShulkers = false; - private boolean enableRefill = false; - private boolean modDisabled = false; - private boolean disabledByPlayer = false; - private boolean bypassAccepted = false; - private boolean pressed = false; private boolean lateInitCompleted = false; - private Item lastItem; - private Page lastPage; public void init() { instance = this; - minecraft = Minecraft.getInstance(); LOGGER.info("Loading ItemSwapper!"); initModloader(); @@ -91,266 +62,25 @@ public void clientTick() { lateInitCompleted = true; lateInit(); } - Screen screen = minecraft.screen; - - ServerData server = Minecraft.getInstance().getCurrentServer(); - - if (server != null && serverCache.getConfig().disableOnIp.contains(server.ip) && !disabledByPlayer) { - setDisabledByPlayer(true); - LOGGER.info("Itemswapper is deactivated for the server {}, because the player did not accept the warning!", - server.ip); - } else if (keybind.isDown()) { - if (isModDisabled()) { - minecraft.gui.setOverlayMessage( - ComponentProvider.translatable("text.itemswapper.disabled").withStyle(ChatFormatting.RED), - false); - } else if (screen instanceof ItemSwapperUI ui) { - onPress(ui); - } else if (screen != null) { - // not our screen, don't do anything - } else { - onPress(null); - } - } else if (openInventoryKeybind.isDown()) { - if (isModDisabled()) { - minecraft.gui.setOverlayMessage( - ComponentProvider.translatable("text.itemswapper.disabled").withStyle(ChatFormatting.RED), - false); - } else if (screen == null) { - ItemSwapperSharedMod.openInventoryScreen(); - } - } else { - pressed = false; - - if (screen instanceof ItemSwapperUI ui) { - if (!configManager.getConfig().toggleMode && !ViveCraftSupport.getInstance().isActive()) { - onPrimaryClick(ui, true); - } - } - } - } - - private void onPress(ItemSwapperUI overlay) { - // skip this check for alwaysInventory mode - if (minecraft.player != null && !itemGroupManager.isResourcepackSelected() - && !configManager.getConfig().alwaysInventory) { - ClientUtil.sendActionBarMessage(ComponentProvider.translatable("text.itemswapper.resourcepack.notSelected") - .withStyle(ChatFormatting.RED)); - } - - if (!pressed && isModDisabled()) { - pressed = true; - ClientUtil.sendActionBarMessage( - ComponentProvider.translatable("text.itemswapper.disabled").withStyle(ChatFormatting.RED)); - return; - } - - ServerData server = Minecraft.getInstance().getCurrentServer(); - if (!pressed) { - if (isDisabledByPlayer()) { - ClientUtil.sendActionBarMessage(ComponentProvider.translatable("text.itemswapper.disabledByPlayer") - .withStyle(ChatFormatting.RED)); - } else if (server != null && !serverCache.getConfig().enableOnIp.contains(server.ip) && !enableShulkers - && !bypassAccepted) { - openConfirmationScreen(); - } else if (overlay == null) { - if (!bypassAccepted && server != null && serverCache.getConfig().enableOnIp.contains(server.ip)) { - bypassAccepted = true; - ClientUtil.sendActionBarMessage(ComponentProvider.translatable("text.itemswapper.usedwhitelist") - .withStyle(ChatFormatting.GOLD)); - } - if (couldOpenScreen()) { - pressed = true; - return; - } - } else { - onPrimaryClick(overlay, true); - } - } - pressed = true; - } - - private void openConfirmationScreen() { - minecraft.setScreen(new ConfirmScreen(this::acceptBypassCallback, - ComponentProvider.translatable("text.itemswapper.confirm.title"), - ComponentProvider.translatable("text.itemswapper.confirm.description"))); - } - - private boolean couldOpenScreen() { - if (minecraft.player.getMainHandItem().isEmpty() || configManager.getConfig().alwaysInventory) { - openInventoryScreen(); - return true; - } - - Item itemInHand = minecraft.player.getMainHandItem().getItem(); - ItemList entries = itemGroupManager.getList(itemInHand); - - if (entries != null) { - if (configManager.getConfig().listsAsPalette || entries.isPaletteList()) { - openPage(new ItemGroupManager.ListPage(entries)); - } else { - openScreen(new ItemListOverlay(entries)); - } - return true; - } else { - ItemGroup group = itemGroupManager.getLastPickedItemGroup(itemInHand); - if (group != null) { - openSquareSwitchScreen(group); - return true; - } - group = itemGroupManager.getItemPage(itemInHand); - if (group != null) { - openSquareSwitchScreen(group); - return true; - } - } - if (configManager.getConfig().fallbackInventory) { - openInventoryScreen(); - return true; - } - return false; - } - - public static void openInventoryScreen() { - if (minecraft.screen instanceof SwitchItemOverlay overlay) { - overlay.openInventory(); - return; - } - openScreen(SwitchItemOverlay.createInventoryOverlay()); - } - - public void openSquareSwitchScreen(ItemGroup group) { - if (minecraft.screen instanceof SwitchItemOverlay overlay) { - overlay.openItemGroup(group); - return; - } - SwitchItemOverlay overlay = SwitchItemOverlay.createPaletteOverlay(group); - openScreen(overlay); - if (configManager.getConfig().startOnItem) { - overlay.selectIcon("item|" + Item.getId(minecraft.player.getMainHandItem().getItem()), 0, 0); - } - } - - public void openPage(Page page) { - if (minecraft.screen instanceof SwitchItemOverlay overlay) { - overlay.openPage(page); - return; - } - openScreen(SwitchItemOverlay.createPageOverlay(page)); - } - - /** - * Opens a screen without unbinding the mouse - * - * @param screen - */ - private static void openScreen(Screen screen) { - if (!AmecsAPISupport.getInstance().isActive()) { - ((ExtendedMouseHandler) minecraft.mouseHandler).keepMouseGrabbed(true); - } - minecraft.setScreen(screen); - minecraft.getSoundManager().resume(); - if (AmecsAPISupport.getInstance().isActive()) { - minecraft.mouseHandler.grabMouse(); - } else { - ((ExtendedMouseHandler) minecraft.mouseHandler).keepMouseGrabbed(false); - } - } - - public static void onPrimaryClick(@NotNull ItemSwapperUI xtOverlay, boolean forceClose) { - boolean keepOpen = xtOverlay.onPrimaryClick(); - if (forceClose || !keepOpen) { - minecraft.setScreen(null); - if (!ConfigHolder.getInstance().getGeneral().getConfig().allowWalkingWithUI) { - KeyMapping.setAll(); - } - } + clientUiManager.clientTick(); } public abstract void initModloader(); - public ItemGroupManager getItemGroupManager() { - return itemGroupManager; - } - - public void setEnableShulkers(boolean value) { - this.enableShulkers = value; - } - - public boolean areShulkersEnabled() { - return this.enableShulkers && !configManager.getConfig().disableShulkers; - } - - public boolean isEnableRefill() { - return enableRefill && !configManager.getConfig().disableShulkers; - } - - public void setEnableRefill(boolean enableRefill) { - this.enableRefill = enableRefill; - } - - public void setBypassExcepted(boolean bypassExcepted) { - this.bypassAccepted = bypassExcepted; - } - - public void setModDisabled(boolean value) { - this.modDisabled = value; - } - - public boolean isModDisabled() { - return this.modDisabled; - } - - private void acceptBypassCallback(boolean accepted) { - ServerData server = Minecraft.getInstance().getCurrentServer(); - - if (server != null) { - if (accepted) { - bypassAccepted = true; - serverCache.getConfig().enableOnIp.add(server.ip); - } else { - serverCache.getConfig().disableOnIp.add(server.ip); - } - serverCache.writeConfig(); - ItemSwapperSharedMod.LOGGER.info("Add {} to cached ip-addresses", server.ip); - } - minecraft.setScreen(null); - } - - public ClientProviderManager getClientProviderManager() { - return clientProviderManager; - } - - public boolean isDisabledByPlayer() { - return disabledByPlayer; - } - - public void setDisabledByPlayer(boolean disabledByPlayer) { - this.disabledByPlayer = disabledByPlayer; - } - - public KeyMapping getKeybind() { - return keybind; - } - - public KeyMapping getInventoryKeybind() { - return openInventoryKeybind; - } - public Item getLastItem() { - return lastItem; + return sessionSettings.getLastItem(); } public void setLastItem(Item lastItem) { - this.lastItem = lastItem; + sessionSettings.setLastItem(lastItem); } public Page getLastPage() { - return lastPage; + return sessionSettings.getLastPage(); } public void setLastPage(Page lastPage) { - this.lastPage = lastPage; + sessionSettings.setLastPage(lastPage); } } diff --git a/src/main/java/dev/tr7zw/itemswapper/compat/MidnightControllsSupport.java b/src/main/java/dev/tr7zw/itemswapper/compat/MidnightControllsSupport.java index 59a8d7ba..afe6f8d4 100644 --- a/src/main/java/dev/tr7zw/itemswapper/compat/MidnightControllsSupport.java +++ b/src/main/java/dev/tr7zw/itemswapper/compat/MidnightControllsSupport.java @@ -33,7 +33,7 @@ public class MidnightControllsSupport implements CompatHandler { public void handle(@NotNull MidnightControlsClient mod) { CATEGORY = InputManager.registerCategory(new org.aperlambda.lambdacommon.Identifier("itemswapper:controlls")); new ButtonBinding.Builder("key.itemswapper.itemswitcher").buttons(GLFW.GLFW_GAMEPAD_BUTTON_DPAD_UP) - .category(CATEGORY).linkKeybind(ItemSwapperSharedMod.instance.getKeybind()) + .category(CATEGORY).linkKeybind(ItemSwapperSharedMod.instance.getClientUiManager().getKeybind()) //? if >= 1.21.0 { .filter((buttonBinding) -> client.screen == null || client.screen instanceof ItemSwapperUI) @@ -53,7 +53,7 @@ public boolean press(@NotNull Minecraft client, @NotNull ButtonBinding button, f }).register(); new ButtonBinding.Builder("key.itemswapper.toggleitem").buttons(GLFW.GLFW_GAMEPAD_BUTTON_X).category(CATEGORY) - .linkKeybind(ItemSwapperSharedMod.instance.getKeybind()) + .linkKeybind(ItemSwapperSharedMod.instance.getClientUiManager().getKeybind()) //? if >= 1.21.0 { .filter((buttonBinding) -> client.screen instanceof ItemSwapperUI) diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/ClientSessionSettings.java b/src/main/java/dev/tr7zw/itemswapper/manager/ClientSessionSettings.java new file mode 100644 index 00000000..e2649184 --- /dev/null +++ b/src/main/java/dev/tr7zw/itemswapper/manager/ClientSessionSettings.java @@ -0,0 +1,24 @@ +package dev.tr7zw.itemswapper.manager; + +import lombok.*; +import net.minecraft.world.item.*; + +@Getter +@Setter +public class ClientSessionSettings { + private boolean enableShulkers = false; + private boolean enableRefill = false; + private boolean modDisabled = false; + private boolean disabledByPlayer = false; + private boolean bypassAccepted = false; + private Item lastItem; + private ItemGroupManager.Page lastPage; + + public void reset() { + enableShulkers = false; + enableRefill = false; + modDisabled = false; + disabledByPlayer = false; + bypassAccepted = false; + } +} diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/ClientUiManager.java b/src/main/java/dev/tr7zw/itemswapper/manager/ClientUiManager.java new file mode 100644 index 00000000..b2e85d71 --- /dev/null +++ b/src/main/java/dev/tr7zw/itemswapper/manager/ClientUiManager.java @@ -0,0 +1,252 @@ +package dev.tr7zw.itemswapper.manager; + +import static dev.tr7zw.itemswapper.ItemSwapperSharedMod.LOGGER; + +import com.mojang.blaze3d.platform.*; +import dev.tr7zw.itemswapper.*; +import dev.tr7zw.itemswapper.accessor.*; +import dev.tr7zw.itemswapper.compat.*; +import dev.tr7zw.itemswapper.config.*; +import dev.tr7zw.itemswapper.manager.itemgroups.*; +import dev.tr7zw.itemswapper.overlay.*; +import dev.tr7zw.itemswapper.server.*; +import dev.tr7zw.transition.config.*; +import dev.tr7zw.transition.loader.*; +import dev.tr7zw.transition.mc.*; +import lombok.*; +import lombok.extern.java.*; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.*; +import net.minecraft.*; +import net.minecraft.client.*; +import net.minecraft.client.gui.screens.*; +import net.minecraft.client.multiplayer.*; +import net.minecraft.world.item.*; +import org.jetbrains.annotations.*; + +@RequiredArgsConstructor +public class ClientUiManager { + + private static Minecraft minecraft = Minecraft.getInstance(); + private final ItemGroupManager itemGroupManager; + private final ConfigManager configManager; + private final ClientSessionSettings sessionSettings; + private final ConfigManager serverCache; + + @Getter + protected KeyMapping keybind = GeneralUtil.createKeyMapping("key.itemswapper.itemswitcher", InputConstants.KEY_R, + "itemswapper"); + @Getter + protected KeyMapping openInventoryKeybind = GeneralUtil.createKeyMapping("key.itemswapper.openInventory", + InputConstants.UNKNOWN.getValue(), "itemswapper"); + + private boolean pressed = false; + + public void initModloader() { + ModLoaderUtil.registerKeybind(keybind); + ModLoaderUtil.registerKeybind(openInventoryKeybind); + } + + public void clientTick() { + Screen screen = minecraft.screen; + + ServerData server = Minecraft.getInstance().getCurrentServer(); + + if (server != null && serverCache.getConfig().disableOnIp.contains(server.ip) + && !sessionSettings.isDisabledByPlayer()) { + sessionSettings.setDisabledByPlayer(true); + LOGGER.info("Itemswapper is deactivated for the server {}, because the player did not accept the warning!", + server.ip); + } else if (keybind.isDown()) { + if (sessionSettings.isModDisabled()) { + minecraft.gui.setOverlayMessage( + ComponentProvider.translatable("text.itemswapper.disabled").withStyle(ChatFormatting.RED), + false); + } else if (screen instanceof ItemSwapperUI ui) { + onPress(ui); + } else if (screen != null) { + // not our screen, don't do anything + } else { + onPress(null); + } + } else if (openInventoryKeybind.isDown()) { + if (sessionSettings.isModDisabled()) { + minecraft.gui.setOverlayMessage( + ComponentProvider.translatable("text.itemswapper.disabled").withStyle(ChatFormatting.RED), + false); + } else if (screen == null) { + openInventoryScreen(); + } + } else { + pressed = false; + + if (screen instanceof ItemSwapperUI ui) { + if (!configManager.getConfig().toggleMode && !ViveCraftSupport.getInstance().isActive()) { + onPrimaryClick(ui, true); + } + } + } + } + + private void onPress(ItemSwapperUI overlay) { + // skip this check for alwaysInventory mode + if (minecraft.player != null && !itemGroupManager.isResourcepackSelected() + && !configManager.getConfig().alwaysInventory) { + ClientUtil.sendActionBarMessage(ComponentProvider.translatable("text.itemswapper.resourcepack.notSelected") + .withStyle(ChatFormatting.RED)); + } + + if (!pressed && sessionSettings.isModDisabled()) { + pressed = true; + ClientUtil.sendActionBarMessage( + ComponentProvider.translatable("text.itemswapper.disabled").withStyle(ChatFormatting.RED)); + return; + } + + ServerData server = Minecraft.getInstance().getCurrentServer(); + if (!pressed) { + if (sessionSettings.isDisabledByPlayer()) { + ClientUtil.sendActionBarMessage(ComponentProvider.translatable("text.itemswapper.disabledByPlayer") + .withStyle(ChatFormatting.RED)); + } else if (server != null && !serverCache.getConfig().enableOnIp.contains(server.ip) + && !sessionSettings.isEnableShulkers() && !sessionSettings.isBypassAccepted()) { + openConfirmationScreen(); + } else if (overlay == null) { + if (!sessionSettings.isBypassAccepted() && server != null + && serverCache.getConfig().enableOnIp.contains(server.ip)) { + sessionSettings.setBypassAccepted(true); + ClientUtil.sendActionBarMessage(ComponentProvider.translatable("text.itemswapper.usedwhitelist") + .withStyle(ChatFormatting.GOLD)); + } + if (couldOpenScreen()) { + pressed = true; + return; + } + } else { + onPrimaryClick(overlay, true); + } + } + pressed = true; + } + + private void openConfirmationScreen() { + minecraft.setScreen(new ConfirmScreen(this::acceptBypassCallback, + ComponentProvider.translatable("text.itemswapper.confirm.title"), + ComponentProvider.translatable("text.itemswapper.confirm.description"))); + } + + private boolean couldOpenScreen() { + if (minecraft.player.getMainHandItem().isEmpty() || configManager.getConfig().alwaysInventory) { + openInventoryScreen(); + return true; + } + + Item itemInHand = minecraft.player.getMainHandItem().getItem(); + ItemList entries = itemGroupManager.getList(itemInHand); + + if (entries != null) { + if (configManager.getConfig().listsAsPalette || entries.isPaletteList()) { + openPage(new ItemGroupManager.ListPage(entries)); + } else { + openScreen(new ItemListOverlay(entries)); + } + return true; + } else { + ItemGroup group = itemGroupManager.getLastPickedItemGroup(itemInHand); + if (group != null) { + openSquareSwitchScreen(group); + return true; + } + group = itemGroupManager.getItemPage(itemInHand); + if (group != null) { + openSquareSwitchScreen(group); + return true; + } + } + if (configManager.getConfig().fallbackInventory) { + openInventoryScreen(); + return true; + } + return false; + } + + public void openInventoryScreen() { + if (minecraft.screen instanceof SwitchItemOverlay overlay) { + overlay.openInventory(); + return; + } + openScreen(SwitchItemOverlay.createInventoryOverlay()); + } + + public void openSquareSwitchScreen(ItemGroup group) { + if (minecraft.screen instanceof SwitchItemOverlay overlay) { + overlay.openItemGroup(group); + return; + } + SwitchItemOverlay overlay = SwitchItemOverlay.createPaletteOverlay(group); + openScreen(overlay); + if (configManager.getConfig().startOnItem) { + overlay.selectIcon("item|" + Item.getId(minecraft.player.getMainHandItem().getItem()), 0, 0); + } + } + + public void openPage(ItemGroupManager.Page page) { + if (minecraft.screen instanceof SwitchItemOverlay overlay) { + overlay.openPage(page); + return; + } + openScreen(SwitchItemOverlay.createPageOverlay(page)); + } + + /** + * Opens a screen without unbinding the mouse + * + * @param screen + */ + private void openScreen(Screen screen) { + if (!AmecsAPISupport.getInstance().isActive()) { + ((ExtendedMouseHandler) minecraft.mouseHandler).keepMouseGrabbed(true); + } + minecraft.setScreen(screen); + minecraft.getSoundManager().resume(); + if (AmecsAPISupport.getInstance().isActive()) { + minecraft.mouseHandler.grabMouse(); + } else { + ((ExtendedMouseHandler) minecraft.mouseHandler).keepMouseGrabbed(false); + } + } + + public void onPrimaryClick(@NotNull ItemSwapperUI xtOverlay, boolean forceClose) { + boolean keepOpen = xtOverlay.onPrimaryClick(); + if (forceClose || !keepOpen) { + minecraft.setScreen(null); + if (!ConfigHolder.getInstance().getGeneral().getConfig().allowWalkingWithUI) { + KeyMapping.setAll(); + } + } + } + + private void acceptBypassCallback(boolean accepted) { + ServerData server = Minecraft.getInstance().getCurrentServer(); + + if (server != null) { + if (accepted) { + sessionSettings.setBypassAccepted(true); + serverCache.getConfig().enableOnIp.add(server.ip); + } else { + serverCache.getConfig().disableOnIp.add(server.ip); + } + serverCache.writeConfig(); + ItemSwapperSharedMod.LOGGER.info("Add {} to cached ip-addresses", server.ip); + } + minecraft.setScreen(null); + } + + public boolean areShulkersEnabled() { + return sessionSettings.isEnableShulkers() && !configManager.getConfig().disableShulkers; + } + + public boolean isEnableRefill() { + return sessionSettings.isEnableRefill() && !configManager.getConfig().disableShulkers; + } + +} diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/BlockColorShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/BlockColorShortcut.java index 6c93136f..880ffd76 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/BlockColorShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/BlockColorShortcut.java @@ -45,13 +45,13 @@ public Icon getIcon() { @Override public boolean invoke(SwitchItemOverlay overlay, ActionType action, int xOffset, int yOffset) { if (color != null) { - ItemSwapperSharedMod.instance.openPage( + ItemSwapperSharedMod.instance.getClientUiManager().openPage( new TexturePage(new UnpackedColor[] { ColorUtil.createTetradPalette(color).get(offset) }, color)); return true; } else if (Minecraft.getInstance().player.getMainHandItem().getItem() instanceof BlockItem blockItem) { UnpackedColor base = ItemSwapperSharedMod.instance.getBlockTextureManager() .getColor(blockItem.getBlock())[0]; - ItemSwapperSharedMod.instance.openPage( + ItemSwapperSharedMod.instance.getClientUiManager().openPage( new TexturePage(new UnpackedColor[] { ColorUtil.createTetradPalette(base).get(offset) }, base)); return true; } diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LastItemShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LastItemShortcut.java index 6d269874..ad4c3a76 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LastItemShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/LastItemShortcut.java @@ -24,7 +24,7 @@ public Icon getIcon() { @Override public boolean invoke(SwitchItemOverlay overlay, ActionType action, int xOffset, int yOffset) { if (action == ActionType.SECONDARY_CLICK) { - ItemSwapperSharedMod.instance.openPage(lastPage); + ItemSwapperSharedMod.instance.getClientUiManager().openPage(lastPage); return true; } else { ItemSwapperSharedMod.instance.getItemManager().grabItem(lastItem, true); diff --git a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/OpenInventoryShortcut.java b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/OpenInventoryShortcut.java index 29e793e2..8493c46a 100644 --- a/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/OpenInventoryShortcut.java +++ b/src/main/java/dev/tr7zw/itemswapper/manager/shortcuts/OpenInventoryShortcut.java @@ -23,7 +23,7 @@ public Icon getIcon() { @Override public boolean invoke(SwitchItemOverlay overlay, ActionType action, int xOffset, int yOffset) { - ItemSwapperSharedMod.openInventoryScreen(); + ItemSwapperSharedMod.instance.getClientUiManager().openInventoryScreen(); return true; } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/ClientLevelMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/ClientLevelMixin.java index 6a6a2339..d550650e 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/ClientLevelMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/ClientLevelMixin.java @@ -13,11 +13,7 @@ public class ClientLevelMixin { @Inject(method = "disconnect", at = @At("HEAD")) public void disconnect(CallbackInfo ci) { - ItemSwapperSharedMod.instance.setEnableShulkers(false); - ItemSwapperSharedMod.instance.setEnableRefill(false); - ItemSwapperSharedMod.instance.setModDisabled(false); - ItemSwapperSharedMod.instance.setBypassExcepted(false); - ItemSwapperSharedMod.instance.setDisabledByPlayer(false); + ItemSwapperSharedMod.instance.getSessionSettings().reset(); } } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/KeyMappingMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/KeyMappingMixin.java index dc771b8c..e837f8d1 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/KeyMappingMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/KeyMappingMixin.java @@ -28,8 +28,8 @@ private static void releaseAll(CallbackInfo ci) { if (!configManager.getConfig().allowWalkingWithUI) { // stop walking now for (KeyMapping keyMapping : ALL.values()) - if (!(keyMapping.same(ItemSwapperSharedMod.instance.getKeybind()) - || keyMapping.same(ItemSwapperSharedMod.instance.getInventoryKeybind()))) { + if (!(keyMapping.same(ItemSwapperSharedMod.instance.getClientUiManager().getKeybind()) || keyMapping + .same(ItemSwapperSharedMod.instance.getClientUiManager().getOpenInventoryKeybind()))) { keyMapping.setDown(false); } } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/KeyboardHandlerMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/KeyboardHandlerMixin.java index 0635d44d..6de47842 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/KeyboardHandlerMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/KeyboardHandlerMixin.java @@ -42,15 +42,16 @@ private void keyPress(long l, int i, net.minecraft.client.input.KeyEvent keyEven //? if >= 1.21.10 { if (!configManager.getConfig().allowWalkingWithUI - && !(ItemSwapperSharedMod.instance.getKeybind().matches(keyEvent) - || ItemSwapperSharedMod.instance.getInventoryKeybind().matches(keyEvent))) { + && !(ItemSwapperSharedMod.instance.getClientUiManager().getKeybind().matches(keyEvent) + || ItemSwapperSharedMod.instance.getClientUiManager().getOpenInventoryKeybind() + .matches(keyEvent))) { return; } //? } else { /*if (!configManager.getConfig().allowWalkingWithUI - && !(ItemSwapperSharedMod.instance.getKeybind().matches(i, j) - || ItemSwapperSharedMod.instance.getInventoryKeybind().matches(i, j))) { + && !(ItemSwapperSharedMod.instance.getClientUiManager().getKeybind().matches(i, j) + || ItemSwapperSharedMod.instance.getClientUiManager().getOpenInventoryKeybind().matches(i, j))) { return; } *///? } diff --git a/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java b/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java index 93f77a76..9fba7d75 100644 --- a/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java +++ b/src/main/java/dev/tr7zw/itemswapper/mixin/PlayerListMixin.java @@ -1,8 +1,6 @@ package dev.tr7zw.itemswapper.mixin; -import dev.tr7zw.itemswapper.config.*; -import dev.tr7zw.itemswapper.packets.clientbound.*; -import dev.tr7zw.transition.loader.networking.*; +import dev.tr7zw.itemswapper.server.*; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -29,12 +27,12 @@ public void placeNewPlayer(Connection connection, ServerPlayer serverPlayer, /* public void placeNewPlayer(Connection connection, ServerPlayer serverPlayer, CallbackInfo ci) { *///? } - if (ConfigHolder.getInstance().getGeneral().getConfig().serverPreventModUsage) { - ServerNetworkUtil.sendPacket(serverPlayer, new DisableModPayload(true)); - } else { - ServerNetworkUtil.sendPacket(serverPlayer, new ShulkerSupportPayload(true)); - ServerNetworkUtil.sendPacket(serverPlayer, new RefillSupportPayload(true)); - } + ItemSwapperServerMod.INSTANCE.getPlayerManager().onJoin(serverPlayer); + } + + @Inject(method = "remove", at = @At("HEAD")) + public void remove(ServerPlayer player, CallbackInfo ci) { + ItemSwapperServerMod.INSTANCE.getPlayerManager().onLeave(player); } } diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemSwapperUIAbstractInput.java b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemSwapperUIAbstractInput.java index 99fa0ca7..b9143e26 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/ItemSwapperUIAbstractInput.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/ItemSwapperUIAbstractInput.java @@ -32,7 +32,7 @@ protected void renderBlurredBackground(net.minecraft.client.gui.GuiGraphicsExtra @Override public boolean mouseClicked(net.minecraft.client.input.MouseButtonEvent mouseButtonEvent, boolean bl) { if (mouseButtonEvent.buttonInfo().button() == 0) { - ItemSwapperSharedMod.onPrimaryClick(this, false); + ItemSwapperSharedMod.instance.getClientUiManager().onPrimaryClick(this, false); } else if (mouseButtonEvent.buttonInfo().button() == 1 || mouseButtonEvent.buttonInfo().button() == 2) { onSecondaryClick(); } @@ -46,7 +46,7 @@ public boolean mouseClicked(net.minecraft.client.input.MouseButtonEvent mouseBut *///? } public boolean mouseClicked(double d, double e, int i) { if (i == 0) { - ItemSwapperSharedMod.onPrimaryClick(this, false); + ItemSwapperSharedMod.instance.getClientUiManager().onPrimaryClick(this, false); } else if (i == 1 || i == 2) { onSecondaryClick(); } diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/SwitchItemOverlay.java b/src/main/java/dev/tr7zw/itemswapper/overlay/SwitchItemOverlay.java index 45ccb146..aa965eea 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/SwitchItemOverlay.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/SwitchItemOverlay.java @@ -100,7 +100,7 @@ private void initShortcuts() { if (configManager.getConfig().experimentalAutoPalette) { shortcutList.add(new BlockColorShortcut(null, 0)); } - if (ItemSwapperSharedMod.instance.isEnableRefill()) { + if (ItemSwapperSharedMod.instance.getClientUiManager().isEnableRefill()) { shortcutList.add(new RestockShortcut()); } if (configManager.getConfig().showOpenInventoryButton) { diff --git a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/BlockListWidget.java b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/BlockListWidget.java index 57fb24ef..38a72b08 100644 --- a/src/main/java/dev/tr7zw/itemswapper/overlay/logic/BlockListWidget.java +++ b/src/main/java/dev/tr7zw/itemswapper/overlay/logic/BlockListWidget.java @@ -84,7 +84,7 @@ public boolean onPrimaryClick(SwitchItemOverlay overlay, GuiSlot guiSlot, int xO @Override public void onSecondaryClick(SwitchItemOverlay overlay, GuiSlot slot, int xOffset, int yOffset) { UnpackedColor[] color = ItemSwapperSharedMod.instance.getBlockTextureManager().getColor(blocks.get(slot.id())); - ItemSwapperSharedMod.instance.openPage(new TexturePage(color, color[0])); + ItemSwapperSharedMod.instance.getClientUiManager().openPage(new TexturePage(color, color[0])); } @Override diff --git a/src/main/java/dev/tr7zw/itemswapper/provider/ShulkerContainerProvider.java b/src/main/java/dev/tr7zw/itemswapper/provider/ShulkerContainerProvider.java index 838669f3..eef182c8 100644 --- a/src/main/java/dev/tr7zw/itemswapper/provider/ShulkerContainerProvider.java +++ b/src/main/java/dev/tr7zw/itemswapper/provider/ShulkerContainerProvider.java @@ -31,7 +31,7 @@ public Set getItemHandlers() { @Override public List processItemStack(ItemStack itemStack, Item item, boolean limit, int slotId) { - if (!ItemSwapperSharedMod.instance.areShulkersEnabled()) { + if (!ItemSwapperSharedMod.instance.getClientUiManager().areShulkersEnabled()) { return Collections.emptyList(); } List shulkerItems = ShulkerHelper.getItems(itemStack); @@ -51,7 +51,7 @@ public List processItemStack(ItemStack itemStack, Item item, bool @Override public NonNullList getItemStacks(ItemStack itemStack, int slotId) { - if (!ItemSwapperSharedMod.instance.areShulkersEnabled()) { + if (!ItemSwapperSharedMod.instance.getClientUiManager().areShulkersEnabled()) { return NonNullList.create(); } List shulkerItems = ShulkerHelper.getItems(itemStack); diff --git a/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java b/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java index 6d9d3a62..69fa84e1 100644 --- a/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java +++ b/src/main/java/dev/tr7zw/itemswapper/server/ItemSwapperSharedServer.java @@ -2,7 +2,9 @@ import dev.tr7zw.itemswapper.packets.clientbound.*; import dev.tr7zw.itemswapper.packets.serverbound.*; +import dev.tr7zw.itemswapper.server.manger.*; import dev.tr7zw.transition.loader.networking.*; +import lombok.*; import org.apache.logging.log4j.*; public abstract class ItemSwapperSharedServer { @@ -10,6 +12,8 @@ public abstract class ItemSwapperSharedServer { public static final Logger LOGGER = LogManager.getLogger("ItemSwapper"); public static ItemSwapperSharedServer INSTANCE; private final ServerItemHandler itemHandler = new ServerItemHandler(); + @Getter + private final ServerPlayerManager playerManager = new ServerPlayerManager(); public void onLoad() { INSTANCE = this; diff --git a/src/main/java/dev/tr7zw/itemswapper/server/manger/ServerPlayerManager.java b/src/main/java/dev/tr7zw/itemswapper/server/manger/ServerPlayerManager.java new file mode 100644 index 00000000..2a2b6d6a --- /dev/null +++ b/src/main/java/dev/tr7zw/itemswapper/server/manger/ServerPlayerManager.java @@ -0,0 +1,21 @@ +package dev.tr7zw.itemswapper.server.manger; + +import dev.tr7zw.itemswapper.config.*; +import dev.tr7zw.itemswapper.packets.clientbound.*; +import dev.tr7zw.transition.loader.networking.*; +import net.minecraft.server.level.*; + +public class ServerPlayerManager { + + public void onJoin(ServerPlayer serverPlayer) { + if (ConfigHolder.getInstance().getGeneral().getConfig().serverPreventModUsage) { + ServerNetworkUtil.sendPacket(serverPlayer, new DisableModPayload(true)); + } else { + ServerNetworkUtil.sendPacket(serverPlayer, new ShulkerSupportPayload(true)); + ServerNetworkUtil.sendPacket(serverPlayer, new RefillSupportPayload(true)); + } + } + + public void onLeave(ServerPlayer player) { + } +} diff --git a/src/test/java/dev/tr7zw/tests/MixinTests.java b/src/test/java/dev/tr7zw/tests/MixinTests.java index 58c86965..cb8d9547 100644 --- a/src/test/java/dev/tr7zw/tests/MixinTests.java +++ b/src/test/java/dev/tr7zw/tests/MixinTests.java @@ -19,11 +19,8 @@ //? if >= 1.21.0 { import net.minecraft.world.item.Items; -//? } else { - -/*import net.minecraft.world.item.RecordItem; -*///? } +//? } public class MixinTests { @BeforeAll @@ -47,7 +44,7 @@ public void testMixins() { objenesis.newInstance(Items.class); //? } else { - /*objenesis.newInstance(RecordItem.class); + /*objenesis.newInstance(net.minecraft.world.item.RecordItem.class); *///? } objenesis.newInstance(ServerGamePacketListenerImpl.class); } diff --git a/versions/1.20.1-fabric/src/main/resources/fabric.mod.json b/versions/1.20.1-fabric/src/main/resources/fabric.mod.json deleted file mode 100644 index 92dcc87e..00000000 --- a/versions/1.20.1-fabric/src/main/resources/fabric.mod.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "schemaVersion": 1, - "id": "itemswapper", - "version": "${version}", - "name": "ItemSwapper", - "description": "Proof of concept mod to for a different system to swap items in the inventory.", - "authors": [ - { - "name": "tr7zw", - "contact": { - "twitter": "https://twitter.com/tr7zw", - "homepage": "https://tr7zw.dev", - "discord": "https://discord.gg/UdfNaDtbwb", - "youtube": "https://www.youtube.com/tr7zw", - "mastodon": "https://mastodon.social/@tr7zw", - "github": "https://github.com/tr7zw" - } - } - ], - "contributors": [ - { - "name": "Xisumavoid", - "contact": { - "twitter": "https://twitter.com/xisumavoid", - "homepage": "http://www.xisumavoid.com", - "youtube": "https://www.youtube.com/xisumavoid" - } - }, - { - "name": "LizardOfOz", - "contact": { - "twitter": "https://twitter.com/LizardOfOz_", - "youtube": "https://www.youtube.com/LizardOfOz", - "github": "https://github.com/lizard-of-oz" - } - }, - { - "name": "Stridey", - "contact": { - "twitter": "https://twitter.com/Strideyyyy", - "github": "https://github.com/StrideyGH" - } - } - ], - "contact": { - "homepage": "https://modrinth.com/plugin/itemswapper", - "sources": "https://github.com/tr7zw/ItemSwapper", - "issues": "https://github.com/tr7zw/ItemSwapper/issues" - }, - "license": "GNU General Public License v3", - "icon": "icon.png", - "environment": "*", - "entrypoints": { - "client": [ - "dev.tr7zw.itemswapper.ItemSwapperMod" - ], - "server": [ - "dev.tr7zw.itemswapper.ItemSwapperServerMod" - ], - "modmenu": [ - "dev.tr7zw.itemswapper.ItemSwapperModMenu" - ], - "controlify": [ - "dev.tr7zw.itemswapper.compat.ControlifyItemswapperEntrypoint" - ] - }, - "mixins": [ - "itemswapper.mixins.json" - ], - "depends": { - "fabric-api": "*", - "minecraft": "${minecraft_version_range_fabric}" - }, - "custom": { - "modmenu": { - "links": { - "modmenu.discord": "https://discord.gg/UdfNaDtbwb" - } - } - } -} diff --git a/versions/1.20.2-fabric/src/main/resources/fabric.mod.json b/versions/1.20.2-fabric/src/main/resources/fabric.mod.json deleted file mode 100644 index 92dcc87e..00000000 --- a/versions/1.20.2-fabric/src/main/resources/fabric.mod.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "schemaVersion": 1, - "id": "itemswapper", - "version": "${version}", - "name": "ItemSwapper", - "description": "Proof of concept mod to for a different system to swap items in the inventory.", - "authors": [ - { - "name": "tr7zw", - "contact": { - "twitter": "https://twitter.com/tr7zw", - "homepage": "https://tr7zw.dev", - "discord": "https://discord.gg/UdfNaDtbwb", - "youtube": "https://www.youtube.com/tr7zw", - "mastodon": "https://mastodon.social/@tr7zw", - "github": "https://github.com/tr7zw" - } - } - ], - "contributors": [ - { - "name": "Xisumavoid", - "contact": { - "twitter": "https://twitter.com/xisumavoid", - "homepage": "http://www.xisumavoid.com", - "youtube": "https://www.youtube.com/xisumavoid" - } - }, - { - "name": "LizardOfOz", - "contact": { - "twitter": "https://twitter.com/LizardOfOz_", - "youtube": "https://www.youtube.com/LizardOfOz", - "github": "https://github.com/lizard-of-oz" - } - }, - { - "name": "Stridey", - "contact": { - "twitter": "https://twitter.com/Strideyyyy", - "github": "https://github.com/StrideyGH" - } - } - ], - "contact": { - "homepage": "https://modrinth.com/plugin/itemswapper", - "sources": "https://github.com/tr7zw/ItemSwapper", - "issues": "https://github.com/tr7zw/ItemSwapper/issues" - }, - "license": "GNU General Public License v3", - "icon": "icon.png", - "environment": "*", - "entrypoints": { - "client": [ - "dev.tr7zw.itemswapper.ItemSwapperMod" - ], - "server": [ - "dev.tr7zw.itemswapper.ItemSwapperServerMod" - ], - "modmenu": [ - "dev.tr7zw.itemswapper.ItemSwapperModMenu" - ], - "controlify": [ - "dev.tr7zw.itemswapper.compat.ControlifyItemswapperEntrypoint" - ] - }, - "mixins": [ - "itemswapper.mixins.json" - ], - "depends": { - "fabric-api": "*", - "minecraft": "${minecraft_version_range_fabric}" - }, - "custom": { - "modmenu": { - "links": { - "modmenu.discord": "https://discord.gg/UdfNaDtbwb" - } - } - } -}