From 47ad2c67c5c3a2453f23b2c5492c0382492db6ad Mon Sep 17 00:00:00 2001 From: retuci0 Date: Thu, 30 Apr 2026 22:24:33 +0200 Subject: [PATCH] v4.3 --- README.md | 2 +- cambios.md | 12 ++- gradle.properties | 2 +- .../sputnik/mixin/mixins/hud/GuiMixin.java | 19 ++++ .../mixin/mixins/render/FogRendererMixin.java | 2 +- .../screen/AbstractContainerScreenMixin.java | 49 ++++++++++ .../retucio/sputnik/module/ModuleManager.java | 2 + .../module/modules/camera/CrosshairPlus.java | 48 ++++++++++ .../module/modules/inventory/Burglar.java | 96 +++++++++++++++++++ .../module/modules/render/BlockOutline.java | 2 +- .../module/modules/render/NoRender.java | 2 +- .../module/modules/world/BlockInfo.java | 42 +++++++- .../java/me/retucio/sputnik/util/KeyUtil.java | 1 + .../java/me/retucio/sputnik/util/Lists.java | 24 ++--- src/main/resources/sputnik.accesswidener | 9 +- src/main/resources/sputnik.mixins.json | 5 +- 16 files changed, 289 insertions(+), 28 deletions(-) create mode 100644 src/main/java/me/retucio/sputnik/mixin/mixins/screen/AbstractContainerScreenMixin.java create mode 100644 src/main/java/me/retucio/sputnik/module/modules/camera/CrosshairPlus.java create mode 100644 src/main/java/me/retucio/sputnik/module/modules/inventory/Burglar.java diff --git a/README.md b/README.md index 84f6d0a..e233e81 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ mod para Minecraft Fabric 26.1 que añade algunas cosas QOL, mayormente relacion 3. descargar el .jar 4. moverlo a tu directorio de mods (probablemente `%appdata%/.minecraft/mods`) -asegúrate de tener una version de Minecraft y Fabric compatibles con el mod (MC `26.1`; Fabric `0.18.5`) +asegúrate de tener una version de Minecraft y Fabric compatibles con el mod (MC `26.1.2`; Fabric `0.19.2`) es posible que haya problemas al usarlo junto a otros mods, especialmente junto a otros clientes, pues pueden conflictar entre ellos. ### para frikis de 200 de iq diff --git a/cambios.md b/cambios.md index 7f0a12d..dbc8604 100644 --- a/cambios.md +++ b/cambios.md @@ -1,4 +1,4 @@ -# v4.2 +# v4.3 ## novedades @@ -6,11 +6,15 @@ #### módulos nuevos: +- mira plus: personalizaciones a la mira (crosshair) +- moro: te permite robar items de cofres más fácilmente + ### arreglos / mejoras -- freecam ya no crashea, pero el movimiento se siente laggy +- info. de bloque ahora funciona y tal +- arreglado varios crashes ## problemas reconocidos -- brilli brilli (modo gamma) solo funciona al cambiar el modo de poción a gamma, y no al activarlo sin más -- lo de siempre, pero más \ No newline at end of file +- lo de siempre, + + diff --git a/gradle.properties b/gradle.properties index c733a09..9c66313 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,6 +10,6 @@ discord_rpc_version=1.0.3 neutrino_version=1.1.0 jdk_version=25 -mod_version=4.2 +mod_version=4.3 maven_group=me.retucio archives_base_name=sputnik \ No newline at end of file diff --git a/src/main/java/me/retucio/sputnik/mixin/mixins/hud/GuiMixin.java b/src/main/java/me/retucio/sputnik/mixin/mixins/hud/GuiMixin.java index 6429194..fad5d1e 100644 --- a/src/main/java/me/retucio/sputnik/mixin/mixins/hud/GuiMixin.java +++ b/src/main/java/me/retucio/sputnik/mixin/mixins/hud/GuiMixin.java @@ -1,9 +1,12 @@ package me.retucio.sputnik.mixin.mixins.hud; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; +import com.mojang.blaze3d.pipeline.RenderPipeline; import me.retucio.sputnik.Sputnik; import me.retucio.sputnik.event.render.Render2DEvent; import me.retucio.sputnik.module.ModuleManager; +import me.retucio.sputnik.module.modules.camera.CrosshairPlus; import me.retucio.sputnik.module.modules.misc.ChatPlus; import me.retucio.sputnik.module.modules.camera.Freecam; import me.retucio.sputnik.module.modules.render.NoRender; @@ -11,12 +14,16 @@ import me.retucio.sputnik.ui.hud.HudRenderer; import net.minecraft.client.DeltaTracker; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.resources.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArgs; +import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.invoke.arg.Args; @Mixin(Gui.class) public abstract class GuiMixin { @@ -75,6 +82,18 @@ public abstract class GuiMixin { HudRenderer.render(gui, dt); } + @Redirect(method = "extractCrosshair", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiGraphicsExtractor;blitSprite(Lcom/mojang/blaze3d/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIII)V", ordinal = 0)) + private void onRenderCrosshair(GuiGraphicsExtractor gui, RenderPipeline pipeline, Identifier id, int x, int y, int width, int height) { + // dangerous abbreviation + CrosshairPlus cp = ModuleManager.INSTANCE.getModuleByClass(CrosshairPlus.class); + + int color = cp.isEnabled() ? cp.color.getRGB() : -1; + int w = cp.isEnabled() ? cp.width.getIntValue() : width; + int h = cp.isEnabled() ? cp.height.getIntValue() : height; + + gui.blitSprite(pipeline, id, (gui.guiWidth() - w) / 2, (gui.guiHeight() - h) / 2, w, h, color); + } + @ModifyExpressionValue(method = "extractCrosshair", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/CameraType;isFirstPerson()Z")) private boolean alwaysRenderCrosshairInFreecam(boolean firstPerson) { return ModuleManager.INSTANCE.getModuleByClass(Freecam.class).isEnabled() || firstPerson; diff --git a/src/main/java/me/retucio/sputnik/mixin/mixins/render/FogRendererMixin.java b/src/main/java/me/retucio/sputnik/mixin/mixins/render/FogRendererMixin.java index 35f3365..4b0855d 100644 --- a/src/main/java/me/retucio/sputnik/mixin/mixins/render/FogRendererMixin.java +++ b/src/main/java/me/retucio/sputnik/mixin/mixins/render/FogRendererMixin.java @@ -59,7 +59,7 @@ public abstract class FogRendererMixin { args.set(0, original.x); args.set(1, original.y); args.set(2, original.z); - args.set(3, 0); + args.set(3, 0f); } } diff --git a/src/main/java/me/retucio/sputnik/mixin/mixins/screen/AbstractContainerScreenMixin.java b/src/main/java/me/retucio/sputnik/mixin/mixins/screen/AbstractContainerScreenMixin.java new file mode 100644 index 0000000..53fcf44 --- /dev/null +++ b/src/main/java/me/retucio/sputnik/mixin/mixins/screen/AbstractContainerScreenMixin.java @@ -0,0 +1,49 @@ +package me.retucio.sputnik.mixin.mixins.screen; + +import me.retucio.sputnik.module.ModuleManager; +import me.retucio.sputnik.module.modules.inventory.Burglar; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.layouts.LinearLayout; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.network.chat.Component; +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; + +@Mixin(AbstractContainerScreen.class) +public abstract class AbstractContainerScreenMixin { + + @Inject(method = "init", at = @At("RETURN")) + private void addStealAndDumpButtons(CallbackInfo ci) { + Burglar burglar = ModuleManager.INSTANCE.getModuleByClass(Burglar.class); + if (!burglar.isEnabled()) return; + + AbstractContainerScreen screen = (AbstractContainerScreen) (Object) this; + + int bw = 50; + int bh = 20; + int gap = 10; + int w = bw * 2 + gap; + + int bgLeft = (screen.width - screen.imageWidth) / 2; + int bgTop = (screen.height - screen.imageHeight) / 2; + + int bx = bgLeft + (screen.imageWidth - w) / 2; + int by = bgTop - bh - 5; + + if (burglar.showStealButton.getValue()) { + Button stealButton = Button.builder(Component.literal("robar"), bnutton -> { + burglar.steal(screen); + }).bounds(bx, by, bw, bh).build(); + screen.addRenderableWidget(stealButton); + } + + if (burglar.showDumpButton.getValue()) { + Button dumpButton = Button.builder(Component.literal("dejar"), button -> { + burglar.dump(screen); + }).bounds(bx + bw + gap, by, bw, bh).build(); + screen.addRenderableWidget(dumpButton); + } + } +} \ No newline at end of file diff --git a/src/main/java/me/retucio/sputnik/module/ModuleManager.java b/src/main/java/me/retucio/sputnik/module/ModuleManager.java index 09fdb21..ec70efc 100644 --- a/src/main/java/me/retucio/sputnik/module/ModuleManager.java +++ b/src/main/java/me/retucio/sputnik/module/ModuleManager.java @@ -67,6 +67,7 @@ public class ModuleManager { private void addCamera() { add(new Autism()); + add(new CrosshairPlus()); add(new Freecam()); add(new Freelook()); add(new Fullbright()); @@ -102,6 +103,7 @@ public class ModuleManager { private void addInventory() { add(new BundleDupe()); + add(new Burglar()); add(new CreativeInventoryHotbarKeybinds()); add(new InventoryPlus()); add(new Offhand()); diff --git a/src/main/java/me/retucio/sputnik/module/modules/camera/CrosshairPlus.java b/src/main/java/me/retucio/sputnik/module/modules/camera/CrosshairPlus.java new file mode 100644 index 0000000..dc664e6 --- /dev/null +++ b/src/main/java/me/retucio/sputnik/module/modules/camera/CrosshairPlus.java @@ -0,0 +1,48 @@ +package me.retucio.sputnik.module.modules.camera; + +import com.mojang.blaze3d.pipeline.RenderPipeline; +import me.retucio.sputnik.module.Category; +import me.retucio.sputnik.module.Module; +import me.retucio.sputnik.module.setting.settings.ColorSetting; +import me.retucio.sputnik.module.setting.settings.NumberSetting; + +import java.awt.*; + + +/** continúa en: + * @see me.retucio.sputnik.mixin.mixins.hud.GuiMixin#onRenderCrosshair + * + * @author retucio + */ + +public class CrosshairPlus extends Module { + + public final ColorSetting color = sgGeneral.add(new ColorSetting( + "color", + "color de la mira", + new Color(255, 255, 255, 255), + false + )); + + public final NumberSetting width = sgGeneral.add(new NumberSetting( + "anchura", + "anchura de la mira", + 15, + 1, + 150, + 1 + )); + + public final NumberSetting height = sgGeneral.add(new NumberSetting( + "altura", + "altura de la mira", + 15, + 1, + 150, + 1 + )); + + public CrosshairPlus() { + super("mira plus", "customiza la mira (crosshair)", Category.CAMERA); + } +} diff --git a/src/main/java/me/retucio/sputnik/module/modules/inventory/Burglar.java b/src/main/java/me/retucio/sputnik/module/modules/inventory/Burglar.java new file mode 100644 index 0000000..31159f4 --- /dev/null +++ b/src/main/java/me/retucio/sputnik/module/modules/inventory/Burglar.java @@ -0,0 +1,96 @@ +package me.retucio.sputnik.module.modules.inventory; + +import com.github.retucio.neutrino.EventListener; +import me.retucio.sputnik.event.input.KeyEvent; +import me.retucio.sputnik.module.Category; +import me.retucio.sputnik.module.Module; +import me.retucio.sputnik.module.setting.SettingGroup; +import me.retucio.sputnik.module.setting.settings.BooleanSetting; +import me.retucio.sputnik.module.setting.settings.KeySetting; +import me.retucio.sputnik.util.ChatUtil; +import me.retucio.sputnik.util.InventoryUtil; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.world.Container; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.ItemStack; +import org.jspecify.annotations.NonNull; +import org.lwjgl.glfw.GLFW; + +import java.util.List; + + +/** + * @author retucio + */ + +public class Burglar extends Module { + + private final SettingGroup sgKeys = addSg(new SettingGroup("teclas", true)); + + private final KeySetting triggerKey = sgKeys.add(new KeySetting( + "tecla activadora", + "tecla a mantener para que las otras teclas funcionen", + GLFW.GLFW_KEY_LEFT_CONTROL + )); + + private final KeySetting stealKey = sgKeys.add(new KeySetting( + "robar", + "tecla para robar todo", + GLFW.GLFW_KEY_S + )); + + private final KeySetting dumpKey = sgKeys.add(new KeySetting( + "dejar", + "tecla para dejar todo", + GLFW.GLFW_KEY_D + )); + + + public final BooleanSetting showStealButton = sgGeneral.add(new BooleanSetting( + "mostrar botón de robar", + "mostrar un botón para robar todo en los inventarios de contenedores", + true + )); + + public final BooleanSetting showDumpButton = sgGeneral.add(new BooleanSetting( + "mostrar botón de dejar", + "mostrar un botón para dejar todo en los inventarios de contenedores", + true + )); + + + public Burglar() { + super("moro", "roba cofres con más facilidad", Category.INVENTORY); + } + + + @EventListener + private void onKey(KeyEvent event) { + if (!triggerKey.isDown() || event.getAction() != GLFW.GLFW_PRESS + || !(mc.screen instanceof AbstractContainerScreen container)) return; + if (event.getKey() == stealKey.getValue()) steal(container); + if (event.getKey() == dumpKey.getValue()) dump(container); + } + + public void steal(@NonNull AbstractContainerScreen container) { + AbstractContainerMenu menu = container.getMenu(); + int stacks = menu.slots.size() - 36; + + for (int i = 0; i < stacks; i++) { + if (!menu.getSlot(i).hasItem()) continue; + InventoryUtil.quickMove(i, container); + } + } + + public void dump(@NonNull AbstractContainerScreen container) { + AbstractContainerMenu menu = container.getMenu(); + int stacks = menu.slots.size() - 36; + if (stacks <= 0) return; + + for (int slot = stacks; slot <= menu.slots.size() - 1; slot++) { + if (!menu.getSlot(slot).hasItem()) continue; + InventoryUtil.quickMove(slot, container); + } + } +} diff --git a/src/main/java/me/retucio/sputnik/module/modules/render/BlockOutline.java b/src/main/java/me/retucio/sputnik/module/modules/render/BlockOutline.java index dcef9cd..f1b6f4a 100644 --- a/src/main/java/me/retucio/sputnik/module/modules/render/BlockOutline.java +++ b/src/main/java/me/retucio/sputnik/module/modules/render/BlockOutline.java @@ -25,7 +25,7 @@ public class BlockOutline extends Module { private final NumberSetting lineWidth = sgGeneral.add(new NumberSetting( "grosor", "grosor de las líneas", - 0.5, + 1, 0.1, 10, 0.1 diff --git a/src/main/java/me/retucio/sputnik/module/modules/render/NoRender.java b/src/main/java/me/retucio/sputnik/module/modules/render/NoRender.java index d7a5832..4d902b1 100644 --- a/src/main/java/me/retucio/sputnik/module/modules/render/NoRender.java +++ b/src/main/java/me/retucio/sputnik/module/modules/render/NoRender.java @@ -66,7 +66,7 @@ public class NoRender extends Module { public final BooleanSetting stuckArrows = sgMisc.add(new BooleanSetting("flechas clavadas", "renderizar flechas clavadas en jugadores", false)); public NoRender() { - super("no extractRenderState", + super("no render", "customiza qué se renderiza y qué no", Category.RENDER); } diff --git a/src/main/java/me/retucio/sputnik/module/modules/world/BlockInfo.java b/src/main/java/me/retucio/sputnik/module/modules/world/BlockInfo.java index 7daae70..ada8ca9 100644 --- a/src/main/java/me/retucio/sputnik/module/modules/world/BlockInfo.java +++ b/src/main/java/me/retucio/sputnik/module/modules/world/BlockInfo.java @@ -10,6 +10,9 @@ import me.retucio.sputnik.module.setting.settings.EnumSetting; import me.retucio.sputnik.module.setting.settings.KeySetting; import me.retucio.sputnik.util.ChatUtil; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import net.minecraft.world.inventory.DataSlot; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Property; @@ -18,6 +21,8 @@ import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; import org.lwjgl.glfw.GLFW; import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.Map; public class BlockInfo extends Module { @@ -76,16 +81,45 @@ public class BlockInfo extends Module { } private void copy(BlockHitResult result, Collection> data) { - String json = new Gson().toJson(data); - String name = mc.level.getBlockState(result.getBlockPos()).getBlock().getDescriptionId(); - Vec3 pos = result.getLocation(); + BlockPos pos = result.getBlockPos(); + BlockState state = mc.level.getBlockState(pos); + + Map propertyMap = new LinkedHashMap<>(); + for (Property property : data) { + propertyMap.put(property.getName(), state.getValue(property).toString()); + } + + if (propertyMap.isEmpty()) { + ChatUtil.warn("no hay propiedades que copiar para este bloque"); + return; + } + + String json = new Gson().toJson(propertyMap); switch (copy.getValue()) { case JSON -> mc.keyboardHandler.setClipboard(json); case COMMAND -> mc.keyboardHandler.setClipboard( - String.format("/setblock %f %f %f %s %s", pos.x, pos.y, pos.z, name, json)); + String.format("/setblock %d %d %d %s", pos.getX(), pos.getY(), pos.getZ(), formatBlockState(state)) + ); } } + private String formatBlockState(BlockState state) { + Identifier id = BuiltInRegistries.BLOCK.getKey(state.getBlock()); + StringBuilder sb = new StringBuilder(id.toString()); + + Collection> props = state.getProperties(); + if (!props.isEmpty()) { + sb.append("["); + boolean first = true; + for (Property prop : props) { + if (!first) sb.append(","); + sb.append(prop.getName()).append("=").append(state.getValue(prop).toString()); + first = false; + } + sb.append("]"); + } + return sb.toString(); + } private enum CopyMode { DONT("no copiar"), COMMAND("copiar comando /setblock"), diff --git a/src/main/java/me/retucio/sputnik/util/KeyUtil.java b/src/main/java/me/retucio/sputnik/util/KeyUtil.java index c9bf232..7cb5f8c 100644 --- a/src/main/java/me/retucio/sputnik/util/KeyUtil.java +++ b/src/main/java/me/retucio/sputnik/util/KeyUtil.java @@ -82,6 +82,7 @@ public class KeyUtil { case GLFW.GLFW_KEY_RIGHT -> "derecha"; case GLFW.GLFW_KEY_PAGE_UP -> "pág. arriba"; case GLFW.GLFW_KEY_PAGE_DOWN -> "pág. abajo"; + case GLFW.GLFW_KEY_CAPS_LOCK -> "bloq. mayús."; default -> { if (key >= GLFW.GLFW_KEY_F1 && key <= GLFW.GLFW_KEY_F25) yield "F" + (key - GLFW.GLFW_KEY_F1 + 1); // F1–F25 diff --git a/src/main/java/me/retucio/sputnik/util/Lists.java b/src/main/java/me/retucio/sputnik/util/Lists.java index 487a344..94eef0a 100644 --- a/src/main/java/me/retucio/sputnik/util/Lists.java +++ b/src/main/java/me/retucio/sputnik/util/Lists.java @@ -42,32 +42,34 @@ public class Lists { // intentar traducir nombres y fallar miserablemente public static void init() { entityNames = getMapOfLists(entityList, - entityList.stream().map(entity -> Component.translatable(entity.getDescriptionId()).getString()).toList()); + entityList.stream().map(entity -> Component.translatable( + entity.getDescriptionId() + ).getString()).toList()); particleNames = getMapOfLists(particleList, particleList.stream().map(particle -> Component.translatable( - BuiltInRegistries.PARTICLE_TYPE.getKey(particle).toShortLanguageKey() - ).toString()).toList()); + BuiltInRegistries.PARTICLE_TYPE.getKey(particle).toLanguageKey() + ).getString()).toList()); itemNames = getMapOfLists(itemList, itemList.stream().map(item -> Component.translatable( - item.getDescriptionId()).getString() - ).toList()); + item.getDescriptionId() + ).getString()).toList()); blockNames = getMapOfLists(blockList, blockList.stream().map(block -> Component.translatable( - block.getDescriptionId()).getString() - ).toList()); + block.getDescriptionId() + ).getString()).toList()); soundNames = getMapOfLists(soundList, soundList.stream().map(sound -> Component.translatable( - sound.location().toShortLanguageKey()).getString() - ).toList()); + sound.location().toShortLanguageKey() + ).getString()).toList()); screenNames = getMapOfLists(screenList, screenList.stream().map(screen -> Component.translatable( - BuiltInRegistries.MENU.getKey(screen).toShortLanguageKey()).getString() - ).toList()); + BuiltInRegistries.MENU.getKey(screen).toLanguageKey() + ).getString()).toList()); colorList.addAll(Arrays.asList( RED, ORANGE, YELLOW, LIME, GREEN, CYAN, diff --git a/src/main/resources/sputnik.accesswidener b/src/main/resources/sputnik.accesswidener index ba19298..bf02c51 100644 --- a/src/main/resources/sputnik.accesswidener +++ b/src/main/resources/sputnik.accesswidener @@ -33,9 +33,14 @@ accessible field net/minecraft/client/particle/Particle hasPhysics Z # renderizado 3d accessible method net/minecraft/client/renderer/rendertype/RenderType (Ljava/lang/String;Lnet/minecraft/client/renderer/rendertype/RenderSetup;)V +# pantallas +accessible field net/minecraft/client/gui/screens/inventory/AbstractContainerScreen imageWidth I +accessible field net/minecraft/client/gui/screens/inventory/AbstractContainerScreen imageHeight I +accessible method net/minecraft/client/gui/screens/Screen addRenderableWidget (Lnet/minecraft/client/gui/components/events/GuiEventListener;)Lnet/minecraft/client/gui/components/events/GuiEventListener; +accessible method net/minecraft/world/inventory/MenuType register (Ljava/lang/String;Lnet/minecraft/world/inventory/MenuType$MenuSupplier;)Lnet/minecraft/world/inventory/MenuType; + # misc. -accessible class net/minecraft/world/entity/projectile/FishingHook$FishHookState accessible method net/minecraft/client/Minecraft startUseItem ()V +accessible class net/minecraft/world/entity/projectile/FishingHook$FishHookState accessible method net/minecraft/client/KeyboardHandler keyPress (JILnet/minecraft/client/input/KeyEvent;)V accessible method net/minecraft/client/renderer/entity/layers/WingsLayer getPlayerElytraTexture (Lnet/minecraft/client/renderer/entity/state/HumanoidRenderState;)Lnet/minecraft/resources/Identifier; -accessible method net/minecraft/world/inventory/MenuType register (Ljava/lang/String;Lnet/minecraft/world/inventory/MenuType$MenuSupplier;)Lnet/minecraft/world/inventory/MenuType; \ No newline at end of file diff --git a/src/main/resources/sputnik.mixins.json b/src/main/resources/sputnik.mixins.json index 610ace7..52316f9 100644 --- a/src/main/resources/sputnik.mixins.json +++ b/src/main/resources/sputnik.mixins.json @@ -24,9 +24,9 @@ "mixins.network.ConnectionMixin", "mixins.network.ServerConnectorMixin", "mixins.network.YggdrasilUserApiServiceMixin", - "mixins.player.PlayerMixin", "mixins.player.InputMixin", "mixins.player.PlayerInventoryMixin", + "mixins.player.PlayerMixin", "mixins.world.BlockCollisionsMixin" ], "injectors": { @@ -56,11 +56,11 @@ "mixins.misc.FontManagerMixin", "mixins.misc.MinecraftMixin", "mixins.misc.OptionsMixin", + "mixins.network.ChatListenerMixin", "mixins.network.ClientCommonPacketListenerImplMixin", "mixins.network.ClientPacketListenerMixin", "mixins.network.ClientTelemetryManagerMixin", "mixins.network.CommandSuggestionsMixin", - "mixins.network.ChatListenerMixin", "mixins.network.ServerDataMixin", "mixins.network.ServerPackStatusMixin", "mixins.player.LocalPlayerMixin", @@ -88,6 +88,7 @@ "mixins.render.SkyRendererMixin", "mixins.render.WeatherEffectRendererMixin", "mixins.render.WingsLayerMixin", + "mixins.screen.AbstractContainerScreenMixin", "mixins.screen.ChatScreenMixin", "mixins.screen.ConfirmScreenMixin", "mixins.screen.CreativeModeInventoryScreenMixin",