From 2b07e4710ea2aec6711d478aad40a2d56fa243b4 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Fri, 22 Nov 2024 22:18:54 +0000 Subject: [PATCH 01/29] Better tooltips - fix a crash and refactor some settings --- .../meteorclient/mixin/ArmorTrimMixin.java | 2 +- .../meteorclient/mixin/ItemStackMixin.java | 4 +- .../mixin/JukeboxPlayableComponentMixin.java | 22 ++++++ .../mixin/TooltipComponentMixin.java | 22 ++++++ .../modules/render/BetterTooltips.java | 73 +++++++++++-------- src/main/resources/meteor-client.mixins.json | 2 + 6 files changed, 92 insertions(+), 33 deletions(-) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/JukeboxPlayableComponentMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/TooltipComponentMixin.java diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ArmorTrimMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ArmorTrimMixin.java index 26b3198409..fdf45303e4 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ArmorTrimMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ArmorTrimMixin.java @@ -17,6 +17,6 @@ public abstract class ArmorTrimMixin { @ModifyExpressionValue(method = "appendTooltip(Lnet/minecraft/item/Item$TooltipContext;Ljava/util/function/Consumer;Lnet/minecraft/item/tooltip/TooltipType;)V", at = @At(value = "FIELD", target = "Lnet/minecraft/item/equipment/trim/ArmorTrim;showInTooltip:Z")) private boolean modifyShowInTooltip(boolean original) { BetterTooltips bt = Modules.get().get(BetterTooltips.class); - return (bt.isActive() && bt.upgrades.get()) || original; + return (bt.isActive() && bt.armorTrim.get()) || original; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ItemStackMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemStackMixin.java index 8a27c0d568..4a7d61c11b 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ItemStackMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemStackMixin.java @@ -43,7 +43,7 @@ private List onGetTooltip(List original) { @ModifyExpressionValue(method = "getTooltip", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/BlockPredicatesChecker;showInTooltip()Z", ordinal = 0)) private boolean modifyCanBreakText(boolean original) { BetterTooltips bt = Modules.get().get(BetterTooltips.class); - return (bt.isActive() && bt.canDestroy.get()) || original; + return (bt.isActive() && bt.canBreak.get()) || original; } @ModifyExpressionValue(method = "getTooltip", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/BlockPredicatesChecker;showInTooltip()Z", ordinal = 1)) @@ -81,6 +81,6 @@ private void onStoppedUsing(World world, LivingEntity user, int remainingUseTick @ModifyExpressionValue(method = "appendAttributeModifiersTooltip", at = @At(value = "INVOKE", target = "Lnet/minecraft/component/type/AttributeModifiersComponent;showInTooltip()Z")) private boolean modifyShowInTooltip(boolean original) { BetterTooltips bt = Modules.get().get(BetterTooltips.class); - return (bt.isActive() && bt.modifiers.get()) || original; + return (bt.isActive() && bt.attributeModifiers.get()) || original; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/JukeboxPlayableComponentMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/JukeboxPlayableComponentMixin.java new file mode 100644 index 0000000000..2caba8b614 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/JukeboxPlayableComponentMixin.java @@ -0,0 +1,22 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.render.BetterTooltips; +import net.minecraft.component.type.JukeboxPlayableComponent; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(JukeboxPlayableComponent.class) +public class JukeboxPlayableComponentMixin { + @ModifyExpressionValue(method = "appendTooltip(Lnet/minecraft/item/Item$TooltipContext;Ljava/util/function/Consumer;Lnet/minecraft/item/tooltip/TooltipType;)V", at = @At(value = "FIELD", target = "Lnet/minecraft/component/type/JukeboxPlayableComponent;showInTooltip:Z")) + private boolean modifyShowInTooltip(boolean original) { + BetterTooltips bt = Modules.get().get(BetterTooltips.class); + return (bt.isActive() && bt.jukeboxPlayable.get()) || original; + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/TooltipComponentMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/TooltipComponentMixin.java new file mode 100644 index 0000000000..5d8caa073d --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/TooltipComponentMixin.java @@ -0,0 +1,22 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import meteordevelopment.meteorclient.utils.tooltip.MeteorTooltipData; +import net.minecraft.client.gui.tooltip.TooltipComponent; +import net.minecraft.item.tooltip.TooltipData; +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; + +@Mixin(targets = "net/minecraft/client/gui/tooltip/TooltipComponent") +public interface TooltipComponentMixin { + @Inject(method = "of(Lnet/minecraft/item/tooltip/TooltipData;)Lnet/minecraft/client/gui/tooltip/TooltipComponent;", at = @At("HEAD"), cancellable = true) + private static void shortcutMeteorTooltipData(TooltipData tooltipData, CallbackInfoReturnable cir) { + if (tooltipData instanceof MeteorTooltipData) cir.setReturnValue(null); + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java index 15d4b450e6..3c8bf00f4f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java @@ -188,58 +188,65 @@ public class BetterTooltips extends Module { .build() ); - public final Setting enchantments = sgHideFlags.add(new BoolSetting.Builder() - .name("enchantments") - .description("Show enchantments when it's hidden.") + public final Setting additional = sgHideFlags.add(new BoolSetting.Builder() + .name("additional") + .description("Show potion effects, firework status, book author, etc when it's hidden.") .defaultValue(false) .build() ); - public final Setting modifiers = sgHideFlags.add(new BoolSetting.Builder() - .name("modifiers") - .description("Show item modifiers when it's hidden.") + public final Setting armorTrim = sgHideFlags.add(new BoolSetting.Builder() + .name("armor-trim") + .description("Show armor trims when it's hidden.") .defaultValue(false) .build() ); - public final Setting unbreakable = sgHideFlags.add(new BoolSetting.Builder() - .name("unbreakable") - .description("Show \"Unbreakable\" tag when it's hidden.") + public final Setting attributeModifiers = sgHideFlags.add(new BoolSetting.Builder() + .name("attribute-modifiers") + .description("Show item modifiers when it's hidden.") .defaultValue(false) .build() ); - public final Setting canDestroy = sgHideFlags.add(new BoolSetting.Builder() - .name("can-destroy") - .description("Show \"CanDestroy\" tag when it's hidden.") + public final Setting canBreak = sgHideFlags.add(new BoolSetting.Builder() + .name("can-break") + .description("Show \"can_break\" component when it's hidden.") .defaultValue(false) .build() ); public final Setting canPlaceOn = sgHideFlags.add(new BoolSetting.Builder() .name("can-place-on") - .description("Show \"CanPlaceOn\" tag when it's hidden.") + .description("Show \"can_place_on\" component when it's hidden.") .defaultValue(false) .build() ); - public final Setting additional = sgHideFlags.add(new BoolSetting.Builder() - .name("additional") - .description("Show potion effects, firework status, book author, etc when it's hidden.") + public final Setting dye = sgHideFlags.add(new BoolSetting.Builder() + .name("dye") + .description("Show dyed item tags when it's hidden.") .defaultValue(false) .build() ); - public final Setting dye = sgHideFlags.add(new BoolSetting.Builder() - .name("dye") - .description("Show dyed item tags when it's hidden.") + public final Setting enchantments = sgHideFlags.add(new BoolSetting.Builder() + .name("enchantments") + .description("Show enchantments when it's hidden.") .defaultValue(false) .build() ); - public final Setting upgrades = sgHideFlags.add(new BoolSetting.Builder() - .name("armor-trim") - .description("Show armor trims when it's hidden.") + public final Setting jukeboxPlayable = sgGeneral.add(new BoolSetting.Builder() + .name("jukebox-playable") + .description("Show if something is playable in a jukebox when it's hidden.") + .defaultValue(true) + .build() + ); + + public final Setting unbreakable = sgHideFlags.add(new BoolSetting.Builder() + .name("unbreakable") + .description("Show \"Unbreakable\" component when it's hidden.") .defaultValue(false) .build() ); @@ -333,7 +340,7 @@ private void getTooltipData(TooltipDataEvent event) { else if (event.itemStack.getItem() == Items.ENDER_CHEST && previewEChest()) { event.tooltipData = EChestMemory.isKnown() ? new ContainerTooltipComponent(EChestMemory.ITEMS.toArray(new ItemStack[27]), ECHEST_COLOR) - : new TextTooltipComponent(Text.literal("Unknown ender chest inventory.").formatted(Formatting.DARK_RED)); + : new TextTooltipComponent(Text.literal("Unknown inventory.").formatted(Formatting.DARK_RED)); } // Map preview @@ -352,9 +359,9 @@ else if ((event.itemStack.getItem() == Items.WRITABLE_BOOK || event.itemStack.ge else if (event.itemStack.getItem() instanceof BannerItem && previewBanners()) { event.tooltipData = new BannerTooltipComponent(event.itemStack); } else if (event.itemStack.getItem() instanceof BannerPatternItem bannerPatternItem && previewBanners()) { - event.tooltipData = new BannerTooltipComponent(DyeColor.GRAY, createBannerPatternsComponent(bannerPatternItem)); + event.tooltipData = createBannerFromBannerPatternItem(bannerPatternItem); } else if (event.itemStack.getItem() == Items.SHIELD && previewBanners()) { - if (event.itemStack.get(DataComponentTypes.BASE_COLOR) != null || !event.itemStack.getOrDefault(DataComponentTypes.BANNER_PATTERNS, BannerPatternsComponent.DEFAULT).layers().isEmpty()) { + if (!event.itemStack.getOrDefault(DataComponentTypes.BANNER_PATTERNS, BannerPatternsComponent.DEFAULT).layers().isEmpty()) { event.tooltipData = createBannerFromShield(event.itemStack); } } @@ -364,7 +371,12 @@ else if (event.itemStack.getItem() instanceof EntityBucketItem bucketItem && pre EntityType type = ((EntityBucketItemAccessor) bucketItem).getEntityType(); Entity entity = type.create(mc.world, SpawnReason.NATURAL); if (entity != null) { - ((Bucketable) entity).copyDataFromNbt(event.itemStack.get(DataComponentTypes.BUCKET_ENTITY_DATA).copyNbt()); + NbtComponent nbtComponent = event.itemStack.getOrDefault(DataComponentTypes.BUCKET_ENTITY_DATA, NbtComponent.DEFAULT); + if (nbtComponent.isEmpty()) { + return; + } + + ((Bucketable) entity).copyDataFromNbt(nbtComponent.copyNbt()); ((EntityAccessor) entity).setInWater(true); event.tooltipData = new EntityTooltipComponent(entity); } @@ -430,6 +442,7 @@ private MutableText getStatusText(StatusEffectInstance effect) { return text.formatted(Formatting.RED); } + @SuppressWarnings("DataFlowIssue") private Text getFirstPage(ItemStack bookItem) { if (bookItem.get(DataComponentTypes.WRITABLE_BOOK_CONTENT) != null) { List> pages = bookItem.get(DataComponentTypes.WRITABLE_BOOK_CONTENT).pages(); @@ -446,9 +459,10 @@ private Text getFirstPage(ItemStack bookItem) { return null; } - private BannerPatternsComponent createBannerPatternsComponent(BannerPatternItem item) { + private BannerTooltipComponent createBannerFromBannerPatternItem(BannerPatternItem item) { // I can't imagine getting the banner pattern from a banner pattern item would fail without some serious messing around - return new BannerPatternsComponent.Builder().add(mc.player.getRegistryManager().getOrThrow(RegistryKeys.BANNER_PATTERN).getOrThrow(item.getPattern()).get(0), DyeColor.WHITE).build(); + BannerPatternsComponent component = new BannerPatternsComponent.Builder().add(mc.player.getRegistryManager().getOrThrow(RegistryKeys.BANNER_PATTERN).getOrThrow(item.getPattern()).get(0), DyeColor.WHITE).build(); + return new BannerTooltipComponent(DyeColor.GRAY, component); } private BannerTooltipComponent createBannerFromShield(ItemStack shieldItem) { @@ -458,8 +472,7 @@ private BannerTooltipComponent createBannerFromShield(ItemStack shieldItem) { } public boolean middleClickOpen() { - return (isActive() && middleClickOpen.get()) - && (!pauseInCreative.get() || !mc.player.isInCreativeMode()); + return (isActive() && middleClickOpen.get()) && (!pauseInCreative.get() || !mc.player.isInCreativeMode()); } public boolean previewShulkers() { diff --git a/src/main/resources/meteor-client.mixins.json b/src/main/resources/meteor-client.mixins.json index 37a8dc2830..a90fc5f167 100644 --- a/src/main/resources/meteor-client.mixins.json +++ b/src/main/resources/meteor-client.mixins.json @@ -113,6 +113,7 @@ "ItemRendererMixin", "ItemStackAccessor", "ItemStackMixin", + "JukeboxPlayableComponentMixin", "KeyBindingAccessor", "KeyboardInputMixin", "KeyboardMixin", @@ -178,6 +179,7 @@ "TextRendererMixin", "TextVisitFactoryMixin", "TitleScreenMixin", + "TooltipComponentMixin", "TransformationMixin", "TridentItemMixin", "UnbreakableComponentMixin", From b70c1e03a6db6d2e1a7b395cd7438e8f3721c35a Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Sat, 23 Nov 2024 00:51:03 +0000 Subject: [PATCH 02/29] Fix the give command not updating clientside, and force stack size restrictions --- .../commands/commands/GiveCommand.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java index ee25126aca..94150a58b7 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java @@ -7,6 +7,7 @@ import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.utils.player.FindItemResult; @@ -31,22 +32,24 @@ public void build(LiteralArgumentBuilder builder) { if (!mc.player.getAbilities().creativeMode) throw NOT_IN_CREATIVE.create(); ItemStack item = ItemStackArgumentType.getItemStackArgument(context, "item").createStack(1, false); - FindItemResult fir = InvUtils.find(ItemStack::isEmpty, 0, 8); - if (!fir.found()) throw NO_SPACE.create(); - - mc.getNetworkHandler().sendPacket(new CreativeInventoryActionC2SPacket(36 + fir.slot(), item)); + giveItem(item); return SINGLE_SUCCESS; - }).then(argument("number", IntegerArgumentType.integer()).executes(context -> { + }).then(argument("number", IntegerArgumentType.integer(1, 99)).executes(context -> { if (!mc.player.getAbilities().creativeMode) throw NOT_IN_CREATIVE.create(); - ItemStack item = ItemStackArgumentType.getItemStackArgument(context, "item").createStack(IntegerArgumentType.getInteger(context, "number"), false); - FindItemResult fir = InvUtils.find(ItemStack::isEmpty, 0, 8); - if (!fir.found()) throw NO_SPACE.create(); - - mc.getNetworkHandler().sendPacket(new CreativeInventoryActionC2SPacket(36 + fir.slot(), item)); + ItemStack item = ItemStackArgumentType.getItemStackArgument(context, "item").createStack(IntegerArgumentType.getInteger(context, "number"), true); + giveItem(item); return SINGLE_SUCCESS; }))); } + + private void giveItem(ItemStack item) throws CommandSyntaxException { + FindItemResult fir = InvUtils.find(ItemStack::isEmpty, 0, 8); + if (!fir.found()) throw NO_SPACE.create(); + + mc.getNetworkHandler().sendPacket(new CreativeInventoryActionC2SPacket(36 + fir.slot(), item)); + mc.player.playerScreenHandler.getSlot(36 + fir.slot()).setStack(item); + } } From 2f50225e8e63ea9f03e097d2535670e26d943d19 Mon Sep 17 00:00:00 2001 From: MineGame159 Date: Sat, 23 Nov 2024 09:58:48 +0100 Subject: [PATCH 03/29] Fix HUD rendering --- .../meteorclient/gui/renderer/GuiRenderer.java | 2 +- .../meteorclient/mixin/InGameHudMixin.java | 3 +++ .../meteorclient/renderer/Framebuffer.java | 2 +- .../meteordevelopment/meteorclient/renderer/GL.java | 13 +++++++------ .../meteorclient/renderer/Texture.java | 2 +- .../renderer/text/CustomTextRenderer.java | 2 +- .../meteorclient/systems/hud/HudRenderer.java | 4 ++-- .../meteorclient/systems/modules/render/Blur.java | 4 ++-- .../meteorclient/systems/waypoints/Waypoint.java | 2 +- .../utils/render/postprocess/PostProcessShader.java | 2 +- 10 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiRenderer.java b/src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiRenderer.java index 8957abf3b9..915564e14f 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiRenderer.java @@ -106,7 +106,7 @@ public void endRender() { r.render(drawContext.getMatrices()); - GL.getTexture(TEXTURE.getGlId()); + GL.bindTexture(TEXTURE.getGlId()); rTex.render(drawContext.getMatrices()); // Normal text diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/InGameHudMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/InGameHudMixin.java index 8dd2cd4a3f..93ac80698a 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/InGameHudMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/InGameHudMixin.java @@ -33,12 +33,15 @@ public abstract class InGameHudMixin { @Inject(method = "render", at = @At("TAIL")) private void onRender(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) { + context.draw(); + Profilers.get().push(MeteorClient.MOD_ID + "_render_2d"); Utils.unscaledProjection(); MeteorClient.EVENT_BUS.post(Render2DEvent.get(context, context.getScaledWindowWidth(), context.getScaledWindowWidth(), tickCounter.getTickDelta(true))); + context.draw(); Utils.scaledProjection(); Profilers.get().pop(); diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/Framebuffer.java b/src/main/java/meteordevelopment/meteorclient/renderer/Framebuffer.java index 64e67e9306..84418c5c82 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/Framebuffer.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/Framebuffer.java @@ -33,7 +33,7 @@ private void init() { bind(); texture = GL.genTexture(); - GL.getTexture(texture); + GL.bindTexture(texture); GL.defaultPixelStore(); GL.textureParam(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/GL.java b/src/main/java/meteordevelopment/meteorclient/renderer/GL.java index 78744aee5d..f9c4fe7124 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/GL.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/GL.java @@ -9,6 +9,7 @@ import meteordevelopment.meteorclient.mixin.BufferRendererAccessor; import meteordevelopment.meteorclient.mixininterface.ICapabilityTracker; import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.texture.AbstractTexture; import net.minecraft.util.Identifier; import org.joml.Matrix4f; import org.lwjgl.BufferUtils; @@ -294,17 +295,17 @@ public static void disableLineSmooth() { glDisable(GL_LINE_SMOOTH); } - public static void getTexture(Identifier id) { - GlStateManager._activeTexture(GL_TEXTURE0); - mc.getTextureManager().getTexture(id); + public static void bindTexture(Identifier id) { + AbstractTexture texture = mc.getTextureManager().getTexture(id); + bindTexture(texture.getGlId(), 0); } - public static void getTexture(int i, int slot) { + public static void bindTexture(int i, int slot) { GlStateManager._activeTexture(GL_TEXTURE0 + slot); GlStateManager._bindTexture(i); } - public static void getTexture(int i) { - getTexture(i, 0); + public static void bindTexture(int i) { + bindTexture(i, 0); } public static void resetTextureSlot() { diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/Texture.java b/src/main/java/meteordevelopment/meteorclient/renderer/Texture.java index 41f45df922..1f4b5e5f37 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/Texture.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/Texture.java @@ -66,7 +66,7 @@ public boolean isValid() { } public void bind(int slot) { - GL.getTexture(id, slot); + GL.bindTexture(id, slot); } public void bind() { bind(0); diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/text/CustomTextRenderer.java b/src/main/java/meteordevelopment/meteorclient/renderer/text/CustomTextRenderer.java index 6974db564e..878fbe80fb 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/text/CustomTextRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/text/CustomTextRenderer.java @@ -123,7 +123,7 @@ public void end(MatrixStack matrices) { if (!scaleOnly) { mesh.end(); - GL.getTexture(font.texture.getGlId()); + GL.bindTexture(font.texture.getGlId()); mesh.render(matrices); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/HudRenderer.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/HudRenderer.java index 49e74d9f2f..0108406f85 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/HudRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/HudRenderer.java @@ -78,7 +78,7 @@ public void end() { FontHolder fontHolder = it.next(); if (fontHolder.visited) { - GL.getTexture(fontHolder.font.texture.getGlId()); + GL.bindTexture(fontHolder.font.texture.getGlId()); fontHolder.getMesh().render(null); } else { @@ -117,7 +117,7 @@ public void triangle(double x1, double y1, double x2, double y2, double x3, doub } public void texture(Identifier id, double x, double y, double width, double height, Color color) { - GL.getTexture(id); + GL.bindTexture(id); Renderer2D.TEXTURE.begin(); Renderer2D.TEXTURE.texQuad(x, y, width, height, color); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Blur.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Blur.java index 2ef5770dcb..5ecef03d49 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Blur.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Blur.java @@ -190,7 +190,7 @@ private void onRenderAfterWorld() { // Render output MinecraftClient.getInstance().getFramebuffer().beginWrite(true); shaderPassthrough.bind(); - GL.getTexture(fbos[0].texture); + GL.bindTexture(fbos[0].texture); shaderPassthrough.set("uTexture", 0); PostProcessRenderer.render(); @@ -208,7 +208,7 @@ private void renderToFbo(Framebuffer targetFbo, int sourceText, Shader shader, d targetFbo.bind(); targetFbo.setViewport(); shader.bind(); - GL.getTexture(sourceText); + GL.bindTexture(sourceText); shader.set("uTexture", 0); shader.set("uHalfTexelSize", .5 / targetFbo.width, .5 / targetFbo.height); shader.set("uOffset", offset); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoint.java b/src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoint.java index 4f1464d102..f09e53cde1 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoint.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/waypoints/Waypoint.java @@ -116,7 +116,7 @@ public void renderIcon(double x, double y, double a, double size) { int preA = color.get().a; color.get().a *= a; - GL.getTexture(texture.getGlId()); + GL.bindTexture(texture.getGlId()); Renderer2D.TEXTURE.begin(); Renderer2D.TEXTURE.texQuad(x, y, size, size, color.get()); Renderer2D.TEXTURE.render(null); diff --git a/src/main/java/meteordevelopment/meteorclient/utils/render/postprocess/PostProcessShader.java b/src/main/java/meteordevelopment/meteorclient/utils/render/postprocess/PostProcessShader.java index 189004d1bb..1a222fb402 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/render/postprocess/PostProcessShader.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/render/postprocess/PostProcessShader.java @@ -46,7 +46,7 @@ public void endRender(Runnable draw) { mc.getFramebuffer().beginWrite(false); - GL.getTexture(framebuffer.getColorAttachment(), 0); + GL.bindTexture(framebuffer.getColorAttachment(), 0); shader.bind(); From 46b7fbab9a2d480728aa9c560305f307c7bb7da7 Mon Sep 17 00:00:00 2001 From: MineGame159 Date: Sat, 23 Nov 2024 10:04:39 +0100 Subject: [PATCH 04/29] Fix GUI being darker in main menu --- .../java/meteordevelopment/meteorclient/gui/WidgetScreen.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java index 1128b0b238..4aa4558c9d 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java @@ -257,6 +257,7 @@ public void render(DrawContext context, int mouseX, int mouseY, float delta) { GuiKeyEvents.canUseKeys = true; // Apply projection without scaling + context.draw(); Utils.unscaledProjection(); onRenderBefore(context, delta); @@ -279,6 +280,7 @@ public void render(DrawContext context, int mouseX, int mouseY, float delta) { if (tooltip) DEBUG_RENDERER.render(RENDERER.tooltipWidget, matrices); } + context.draw(); Utils.scaledProjection(); runAfterRenderTasks(); From bb81c2a65ebf4c4223409e499983cd7878e0a53f Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Sun, 24 Nov 2024 15:10:38 +0000 Subject: [PATCH 05/29] Quick and dirty fix for Wireframe ESP crashing --- .../utils/render/WireframeEntityRenderer.java | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/render/WireframeEntityRenderer.java b/src/main/java/meteordevelopment/meteorclient/utils/render/WireframeEntityRenderer.java index 75e58630d0..bfbe9736c9 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/render/WireframeEntityRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/render/WireframeEntityRenderer.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.utils.render; -import meteordevelopment.meteorclient.MeteorClient; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import meteordevelopment.meteorclient.events.render.Render3DEvent; import meteordevelopment.meteorclient.mixininterface.IMultiPhase; import meteordevelopment.meteorclient.mixininterface.IMultiPhaseParameters; @@ -22,6 +22,8 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; +import static meteordevelopment.meteorclient.MeteorClient.mc; + public class WireframeEntityRenderer { private static final MatrixStack matrices = new MatrixStack(); @@ -44,13 +46,15 @@ public static void render(Render3DEvent event, Entity entity, double scale, Colo WireframeEntityRenderer.lineColor = lineColor; WireframeEntityRenderer.shapeMode = shapeMode; - offsetX = MathHelper.lerp(event.tickDelta, entity.lastRenderX, entity.getX()); - offsetY = MathHelper.lerp(event.tickDelta, entity.lastRenderY, entity.getY()); - offsetZ = MathHelper.lerp(event.tickDelta, entity.lastRenderZ, entity.getZ()); + float tickDelta = mc.world.getTickManager().isFrozen() ? 1 : event.tickDelta; + + offsetX = MathHelper.lerp(tickDelta, entity.lastRenderX, entity.getX()); + offsetY = MathHelper.lerp(tickDelta, entity.lastRenderY, entity.getY()); + offsetZ = MathHelper.lerp(tickDelta, entity.lastRenderZ, entity.getZ()); //noinspection unchecked - var renderer = (EntityRenderer) MeteorClient.mc.getEntityRenderDispatcher().getRenderer(entity); - var state = renderer.getAndUpdateRenderState(entity, event.tickDelta); + var renderer = (EntityRenderer) mc.getEntityRenderDispatcher().getRenderer(entity); + var state = renderer.getAndUpdateRenderState(entity, tickDelta); Vec3d entityOffset = renderer.getPositionOffset(state); offsetX += entityOffset.x; @@ -65,6 +69,7 @@ public static void render(Render3DEvent event, Entity entity, double scale, Colo private static class MyVertexConsumerProvider implements VertexConsumerProvider { public static final MyVertexConsumerProvider INSTANCE = new MyVertexConsumerProvider(); + private final Object2ObjectOpenHashMap buffers = new Object2ObjectOpenHashMap<>(); @Override public VertexConsumer getBuffer(RenderLayer layer) { @@ -73,13 +78,18 @@ public VertexConsumer getBuffer(RenderLayer layer) { return NoopVertexConsumer.INSTANCE; } - return MyVertexConsumer.INSTANCE; + MyVertexConsumer vertexConsumer = buffers.get(layer); + + if (vertexConsumer == null) { + vertexConsumer = new MyVertexConsumer(); + buffers.put(layer, vertexConsumer); + } + + return vertexConsumer; } } private static class MyVertexConsumer implements VertexConsumer { - public static final MyVertexConsumer INSTANCE = new MyVertexConsumer(); - private final float[] xs = new float[4]; private final float[] ys = new float[4]; private final float[] zs = new float[4]; From e1e26443a3d9ba60cc1c3b02a16809892d1faf4f Mon Sep 17 00:00:00 2001 From: Wide-Cat <74723656+Wide-Cat@users.noreply.github.com> Date: Thu, 5 Dec 2024 16:02:14 +0000 Subject: [PATCH 06/29] Fix better tooltip setting group [skip ci] --- .../meteorclient/systems/modules/render/BetterTooltips.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java index 3c8bf00f4f..0c0376d224 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java @@ -237,7 +237,7 @@ public class BetterTooltips extends Module { .build() ); - public final Setting jukeboxPlayable = sgGeneral.add(new BoolSetting.Builder() + public final Setting jukeboxPlayable = sgHideFlags.add(new BoolSetting.Builder() .name("jukebox-playable") .description("Show if something is playable in a jukebox when it's hidden.") .defaultValue(true) From 2025a1cc2ca9cb35b32d8695d61561b30785abc2 Mon Sep 17 00:00:00 2001 From: MineGame159 Date: Fri, 6 Dec 2024 21:51:16 +0100 Subject: [PATCH 07/29] Fix background container rendering in Better Tooltips --- .../systems/modules/render/BetterTooltips.java | 2 +- .../java/meteordevelopment/meteorclient/utils/Utils.java | 5 ++++- .../utils/tooltip/ContainerTooltipComponent.java | 9 +++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java index 0c0376d224..9d2a260b5e 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/BetterTooltips.java @@ -103,7 +103,7 @@ public class BetterTooltips extends Module { .build() ); - public final Setting echest = sgPreviews.add(new BoolSetting.Builder() + private final Setting echest = sgPreviews.add(new BoolSetting.Builder() .name("echests") .description("Shows a preview of your echest when hovering over it in an inventory.") .defaultValue(true) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/Utils.java b/src/main/java/meteordevelopment/meteorclient/utils/Utils.java index 41ed0574d0..413c0f9107 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/Utils.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/Utils.java @@ -272,13 +272,16 @@ public static Color getShulkerColor(ItemStack shulkerItem) { if (shulkerItem.getItem() instanceof BlockItem blockItem) { Block block = blockItem.getBlock(); if (block == Blocks.ENDER_CHEST) return BetterTooltips.ECHEST_COLOR; + if (block instanceof ShulkerBoxBlock shulkerBlock) { DyeColor dye = shulkerBlock.getColor(); if (dye == null) return WHITE; + final int color = dye.getEntityColor(); - return new Color((color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF, 1f); + return new Color((color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF, 255); } } + return WHITE; } diff --git a/src/main/java/meteordevelopment/meteorclient/utils/tooltip/ContainerTooltipComponent.java b/src/main/java/meteordevelopment/meteorclient/utils/tooltip/ContainerTooltipComponent.java index dd2ff9f93b..1515fb7d94 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/tooltip/ContainerTooltipComponent.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/tooltip/ContainerTooltipComponent.java @@ -5,7 +5,6 @@ package meteordevelopment.meteorclient.utils.tooltip; -import com.mojang.blaze3d.systems.RenderSystem; import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.utils.render.RenderUtils; import meteordevelopment.meteorclient.utils.render.color.Color; @@ -44,15 +43,13 @@ public int getWidth(TextRenderer textRenderer) { @Override public void drawItems(TextRenderer textRenderer, int x, int y, int width, int height, DrawContext context) { - // Background - RenderSystem.setShaderColor(color.r / 255f, color.g / 255f, color.b / 255f, color.a / 255f); - context.drawTexture(RenderLayer::getGuiTextured, TEXTURE_CONTAINER_BACKGROUND, x, y, 0, 0, 0, 176, 67, 176, 67); - RenderSystem.setShaderColor(1, 1, 1, 1); + context.drawTexture(RenderLayer::getGuiTextured, TEXTURE_CONTAINER_BACKGROUND, x, y, 0, 0, 176, 67, 176, 67, color.getPacked()); - //Contents + // Contents int row = 0; int i = 0; + for (ItemStack itemStack : items) { RenderUtils.drawItem(context, itemStack, x + 8 + i * 18, y + 7 + row * 18, 1, true); From a30bbdd1b0d97c1cac503fe6f528bb819fb28943 Mon Sep 17 00:00:00 2001 From: Banana1059 <88565974+Banana1059@users.noreply.github.com> Date: Sat, 7 Dec 2024 14:31:37 -0600 Subject: [PATCH 08/29] Update WireframeEntityRenderer.java Memory Leak Fix Possible fixes for the 1.21.3 Memory leak caused by ESP --- .../meteorclient/utils/render/WireframeEntityRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/render/WireframeEntityRenderer.java b/src/main/java/meteordevelopment/meteorclient/utils/render/WireframeEntityRenderer.java index bfbe9736c9..693f766557 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/render/WireframeEntityRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/render/WireframeEntityRenderer.java @@ -64,7 +64,7 @@ public static void render(Render3DEvent event, Entity entity, double scale, Colo matrices.push(); matrices.scale((float) scale, (float) scale, (float) scale); renderer.render(state, matrices, MyVertexConsumerProvider.INSTANCE, 15); - matrices.push(); + matrices.pop(); } private static class MyVertexConsumerProvider implements VertexConsumerProvider { From 4146062bfc924a2d5f529eb031d60d3e5a381577 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Sun, 8 Dec 2024 18:50:01 +0000 Subject: [PATCH 09/29] Fix issue with anti-spam --- .../meteorclient/systems/modules/misc/BetterChat.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java index 59980a6585..e33d4f4b6c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java @@ -345,7 +345,13 @@ private Text appendAntiSpam(Text text) { if (!matcher.find()) continue; String group = matcher.group(matcher.groupCount()); - int number = Integer.parseInt(group); + + int number; + try { + number = Integer.parseInt(group); + } catch (NumberFormatException e) { + return null; + } if (stringToCheck.substring(0, matcher.start()).equals(textString)) { messageIndex = i; From a8483f82275a917122b82a8b6ef70e117ac729de Mon Sep 17 00:00:00 2001 From: Wide-Cat <74723656+Wide-Cat@users.noreply.github.com> Date: Sun, 8 Dec 2024 20:38:26 +0000 Subject: [PATCH 10/29] A better fix for the anti-spam issue --- .../meteorclient/systems/modules/misc/BetterChat.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java index e33d4f4b6c..b715349d73 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java @@ -225,7 +225,7 @@ public class BetterChat extends Module { .build() ); - private static final Pattern antiSpamRegex = Pattern.compile(" \\(([0-9]+)\\)$"); + private static final Pattern antiSpamRegex = Pattern.compile(" \\(([0-9]{1,9})\\)$"); private static final Pattern antiClearRegex = Pattern.compile("\\n(\\n|\\s)+\\n"); private static final Pattern timestampRegex = Pattern.compile("^(<[0-9]{2}:[0-9]{2}>\\s)"); private static final Pattern usernameRegex = Pattern.compile("^(?:<[0-9]{2}:[0-9]{2}>\\s)?<(.*?)>.*"); @@ -345,13 +345,7 @@ private Text appendAntiSpam(Text text) { if (!matcher.find()) continue; String group = matcher.group(matcher.groupCount()); - - int number; - try { - number = Integer.parseInt(group); - } catch (NumberFormatException e) { - return null; - } + int number = Integer.parseInt(group); if (stringToCheck.substring(0, matcher.start()).equals(textString)) { messageIndex = i; From 43a98424da624401bf45bc4a8c56c43e867347c5 Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 10 Dec 2024 21:10:34 -0500 Subject: [PATCH 11/29] allow prompt subclassing --- .../utils/render/prompts/Prompt.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/Prompt.java b/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/Prompt.java index da8372968b..4d6ae34a57 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/Prompt.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/Prompt.java @@ -15,13 +15,13 @@ @SuppressWarnings("unchecked") // cant instantiate a Prompt directly so this is fine public abstract class Prompt { - final GuiTheme theme; - final Screen parent; + protected final GuiTheme theme; + protected final Screen parent; - String title = ""; - final List messages = new ArrayList<>(); - boolean dontShowAgainCheckboxVisible = true; - String id = null; + protected String title = ""; + protected final List messages = new ArrayList<>(); + protected boolean dontShowAgainCheckboxVisible = true; + protected String id = null; protected Prompt(GuiTheme theme, Screen parent) { this.theme = theme; @@ -54,8 +54,7 @@ public T id(String from) { } public boolean show() { - if (id == null) this.id(this.title); - if (Config.get().dontShowAgainPrompts.contains(id)) return false; + if (id != null && Config.get().dontShowAgainPrompts.contains(id)) return false; if (!RenderSystem.isOnRenderThread()) { RenderSystem.recordRenderCall(() -> mc.setScreen(new PromptScreen(theme))); @@ -67,11 +66,11 @@ public boolean show() { return true; } - abstract void initialiseWidgets(PromptScreen screen); + protected abstract void initialiseWidgets(PromptScreen screen); protected class PromptScreen extends WindowScreen { - WCheckbox dontShowAgainCheckbox; - WHorizontalList list; + protected WCheckbox dontShowAgainCheckbox; + protected WHorizontalList list; public PromptScreen(GuiTheme theme) { super(theme, Prompt.this.title); From 83f9d3f9ea1fe76d07196f86e8708373229485dc Mon Sep 17 00:00:00 2001 From: RacoonDog <32882447+racoondog@users.noreply.github.com> Date: Tue, 10 Dec 2024 21:18:05 -0500 Subject: [PATCH 12/29] simplify dontShowAgain --- .../meteorclient/utils/render/prompts/OkPrompt.java | 3 +-- .../meteorclient/utils/render/prompts/Prompt.java | 6 ++++++ .../meteorclient/utils/render/prompts/YesNoPrompt.java | 5 ++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/OkPrompt.java b/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/OkPrompt.java index 9f909773e2..2479b42561 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/OkPrompt.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/OkPrompt.java @@ -8,7 +8,6 @@ import meteordevelopment.meteorclient.gui.GuiTheme; import meteordevelopment.meteorclient.gui.GuiThemes; import meteordevelopment.meteorclient.gui.widgets.pressable.WButton; -import meteordevelopment.meteorclient.systems.config.Config; import net.minecraft.client.gui.screen.Screen; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -37,7 +36,7 @@ public OkPrompt onOk(Runnable action) { protected void initialiseWidgets(PromptScreen screen) { WButton okButton = screen.list.add(theme.button("Ok")).expandX().widget(); okButton.action = () -> { - if (screen.dontShowAgainCheckbox != null && screen.dontShowAgainCheckbox.checked) Config.get().dontShowAgainPrompts.add(id); + dontShowAgain(screen); onOk.run(); screen.close(); }; diff --git a/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/Prompt.java b/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/Prompt.java index 4d6ae34a57..c2e6b4fa26 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/Prompt.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/Prompt.java @@ -66,6 +66,12 @@ public boolean show() { return true; } + protected void dontShowAgain(PromptScreen screen) { + if (screen.dontShowAgainCheckbox != null && screen.dontShowAgainCheckbox.checked && id != null) { + Config.get().dontShowAgainPrompts.add(id); + } + } + protected abstract void initialiseWidgets(PromptScreen screen); protected class PromptScreen extends WindowScreen { diff --git a/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/YesNoPrompt.java b/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/YesNoPrompt.java index ccb1a4d250..1baf35b8ec 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/YesNoPrompt.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/render/prompts/YesNoPrompt.java @@ -8,7 +8,6 @@ import meteordevelopment.meteorclient.gui.GuiTheme; import meteordevelopment.meteorclient.gui.GuiThemes; import meteordevelopment.meteorclient.gui.widgets.pressable.WButton; -import meteordevelopment.meteorclient.systems.config.Config; import net.minecraft.client.gui.screen.Screen; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -43,14 +42,14 @@ public YesNoPrompt onNo(Runnable action) { protected void initialiseWidgets(PromptScreen screen) { WButton yesButton = screen.list.add(theme.button("Yes")).expandX().widget(); yesButton.action = () -> { - if (screen.dontShowAgainCheckbox != null && screen.dontShowAgainCheckbox.checked) Config.get().dontShowAgainPrompts.add(id); + dontShowAgain(screen); onYes.run(); screen.close(); }; WButton noButton = screen.list.add(theme.button("No")).expandX().widget(); noButton.action = () -> { - if (screen.dontShowAgainCheckbox != null && screen.dontShowAgainCheckbox.checked) Config.get().dontShowAgainPrompts.add(id); + dontShowAgain(screen); onNo.run(); screen.close(); }; From 591a9e15e34abe2bb730353316e734efb6a5310a Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Thu, 19 Dec 2024 16:12:46 +0000 Subject: [PATCH 13/29] Correct the lithium import --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 811b7111f3..0abeae552e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,7 +20,7 @@ baritone_version=1.21.3 sodium_version=mc1.21.3-0.6.0-fabric # Lithium (https://github.com/CaffeineMC/lithium-fabric) -lithium_version=mc1.21.3-0.14.2 +lithium_version=mc1.21.3-0.14.2-fabric # Iris (https://github.com/IrisShaders/Iris) iris_version=1.8.0+1.21.3-fabric From 4db6cbb70a9dba4b119462244c17de00f883e8a6 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Sun, 22 Dec 2024 16:43:28 +0000 Subject: [PATCH 14/29] Fix elytra boost, update time changer --- .../mixin/FireworkRocketEntityMixin.java | 28 ++++++++----------- .../systems/modules/render/TimeChanger.java | 2 +- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/FireworkRocketEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/FireworkRocketEntityMixin.java index 26bb11cf29..4e78fcef34 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/FireworkRocketEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/FireworkRocketEntityMixin.java @@ -8,7 +8,6 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.ElytraBoost; import net.minecraft.entity.projectile.FireworkRocketEntity; -import net.minecraft.server.world.ServerWorld; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.EntityHitResult; import org.spongepowered.asm.mixin.Mixin; @@ -19,9 +18,6 @@ @Mixin(FireworkRocketEntity.class) public abstract class FireworkRocketEntityMixin { - @Shadow - protected abstract void explodeAndRemove(ServerWorld world); - @Shadow private int life; @@ -30,29 +26,29 @@ public abstract class FireworkRocketEntityMixin { @Inject(method = "tick", at = @At("TAIL")) private void onTick(CallbackInfo info) { - if (Modules.get().get(ElytraBoost.class).isFirework((FireworkRocketEntity) (Object) this) && this.life > this.lifeTime) { - if (((FireworkRocketEntity) (Object) this).getWorld() instanceof ServerWorld serverWorld) { - this.explodeAndRemove(serverWorld); - } + FireworkRocketEntity firework = ((FireworkRocketEntity) (Object) this); + + if (Modules.get().get(ElytraBoost.class).isFirework(firework) && this.life > this.lifeTime) { + firework.discard(); } } @Inject(method = "onEntityHit", at = @At("HEAD"), cancellable = true) private void onEntityHit(EntityHitResult entityHitResult, CallbackInfo info) { - if (Modules.get().get(ElytraBoost.class).isFirework((FireworkRocketEntity) (Object) this)) { - if (((FireworkRocketEntity) (Object) this).getWorld() instanceof ServerWorld serverWorld) { - this.explodeAndRemove(serverWorld); - } + FireworkRocketEntity firework = ((FireworkRocketEntity) (Object) this); + + if (Modules.get().get(ElytraBoost.class).isFirework(firework)) { + firework.discard(); info.cancel(); } } @Inject(method = "onBlockHit", at = @At("HEAD"), cancellable = true) private void onBlockHit(BlockHitResult blockHitResult, CallbackInfo info) { - if (Modules.get().get(ElytraBoost.class).isFirework((FireworkRocketEntity) (Object) this)) { - if (((FireworkRocketEntity) (Object) this).getWorld() instanceof ServerWorld serverWorld) { - this.explodeAndRemove(serverWorld); - } + FireworkRocketEntity firework = ((FireworkRocketEntity) (Object) this); + + if (Modules.get().get(ElytraBoost.class).isFirework(firework)) { + firework.discard(); info.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/TimeChanger.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/TimeChanger.java index ae9682e878..228fb8afb0 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/TimeChanger.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/TimeChanger.java @@ -45,7 +45,7 @@ public void onDeactivate() { @EventHandler private void onPacketReceive(PacketEvent.Receive event) { if (event.packet instanceof WorldTimeUpdateS2CPacket) { - oldTime = ((WorldTimeUpdateS2CPacket) event.packet).time(); // should this be time or timeOfDay? + oldTime = ((WorldTimeUpdateS2CPacket) event.packet).timeOfDay(); event.cancel(); } } From fbdc927f118e636396a67e62fd193f1948239b79 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Mon, 23 Dec 2024 21:04:51 +0000 Subject: [PATCH 15/29] Fix meteor rotations being rendered on other players in third person --- .../mixin/PlayerEntityRendererMixin.java | 8 ++++---- .../mixininterface/IEntityRenderState.java | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityRendererMixin.java index 14800b114b..60e33cedce 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityRendererMixin.java @@ -7,8 +7,6 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; -import meteordevelopment.meteorclient.MeteorClient; -import meteordevelopment.meteorclient.mixininterface.IEntityRenderState; import meteordevelopment.meteorclient.mixininterface.IVec3d; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.Chams; @@ -28,6 +26,8 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import static meteordevelopment.meteorclient.MeteorClient.mc; + @Mixin(PlayerEntityRenderer.class) public abstract class PlayerEntityRendererMixin { // Chams @@ -45,7 +45,7 @@ public abstract class PlayerEntityRendererMixin { @Inject(method = "updateRenderState(Lnet/minecraft/client/network/AbstractClientPlayerEntity;Lnet/minecraft/client/render/entity/state/PlayerEntityRenderState;F)V", at = @At("RETURN")) private void updateRenderState$scale(AbstractClientPlayerEntity player, PlayerEntityRenderState state, float f, CallbackInfo info) { if (!chams.isActive() || !chams.players.get()) return; - if (chams.ignoreSelf.get() && player == MeteorClient.mc.player) return; + if (chams.ignoreSelf.get() && player == mc.player) return; float v = chams.playersScale.get().floatValue(); state.baseScale *= v; @@ -82,7 +82,7 @@ public abstract class PlayerEntityRendererMixin { @Inject(method = "updateRenderState(Lnet/minecraft/client/network/AbstractClientPlayerEntity;Lnet/minecraft/client/render/entity/state/PlayerEntityRenderState;F)V", at = @At("RETURN")) private void updateRenderState$rotations(AbstractClientPlayerEntity player, PlayerEntityRenderState state, float f, CallbackInfo info) { - if (Rotations.rotating && ((IEntityRenderState) state).meteor$getEntity() == MeteorClient.mc.player) { + if (Rotations.rotating && player == mc.player) { state.bodyYaw = Rotations.serverYaw; state.pitch = Rotations.serverPitch; } diff --git a/src/main/java/meteordevelopment/meteorclient/mixininterface/IEntityRenderState.java b/src/main/java/meteordevelopment/meteorclient/mixininterface/IEntityRenderState.java index 41d4dc2d56..24df7003f3 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixininterface/IEntityRenderState.java +++ b/src/main/java/meteordevelopment/meteorclient/mixininterface/IEntityRenderState.java @@ -5,9 +5,26 @@ package meteordevelopment.meteorclient.mixininterface; +import meteordevelopment.meteorclient.mixin.EntityRenderDispatcherMixin; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.entity.EntityRenderer; +import net.minecraft.client.render.entity.state.EntityRenderState; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.Entity; public interface IEntityRenderState { + /** + * Returns the entity that the render state refers to; necessary in scenarios when you want to perform an entity + * rendering task with data that isn't present in the render state.

+ * + * The entity is only set after the render state is retrieved in EntityRenderDispatcher#render, so make sure not + * to call this before that point (e.g. mixing into an updateRenderState method), otherwise the entity returned will + * not be the same one that the render state is referring to. + * + * @return The entity that the render state refers to + * + * @see EntityRenderDispatcherMixin#render$getAndUpdateRenderState(EntityRenderState, Entity, double, double, double, float, MatrixStack, VertexConsumerProvider, int, EntityRenderer) + */ Entity meteor$getEntity(); void meteor$setEntity(Entity entity); From 0a17672051918aec329d19f77eadbd5bc5468b20 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Fri, 27 Dec 2024 14:56:16 +0000 Subject: [PATCH 16/29] Use a mixin instead of ASM for GetFovEvent fix compatibility with liquidbounce --- .../meteorclient/asm/Asm.java | 5 +- .../transformers/GameRendererTransformer.java | 67 ------------------- .../meteorclient/mixin/GameRendererMixin.java | 6 ++ 3 files changed, 8 insertions(+), 70 deletions(-) delete mode 100644 src/main/java/meteordevelopment/meteorclient/asm/transformers/GameRendererTransformer.java diff --git a/src/main/java/meteordevelopment/meteorclient/asm/Asm.java b/src/main/java/meteordevelopment/meteorclient/asm/Asm.java index 5f2fa1627d..06e260bfdc 100644 --- a/src/main/java/meteordevelopment/meteorclient/asm/Asm.java +++ b/src/main/java/meteordevelopment/meteorclient/asm/Asm.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.asm; -import meteordevelopment.meteorclient.asm.transformers.GameRendererTransformer; +import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.asm.transformers.PacketInflaterTransformer; import net.fabricmc.loader.api.FabricLoader; import org.objectweb.asm.ClassReader; @@ -41,7 +41,6 @@ public static void init() { if (INSTANCE != null) return; INSTANCE = new Asm(System.getProperty("meteor.asm.export") != null); - INSTANCE.add(new GameRendererTransformer()); INSTANCE.add(new PacketInflaterTransformer()); } @@ -76,7 +75,7 @@ private void export(String name, byte[] bytes) { new File(path.toUri()).getParentFile().mkdirs(); Files.write(path, bytes); } catch (IOException e) { - e.printStackTrace(); + MeteorClient.LOG.error("Failed to export transformer '{}': ", name, e); } } } diff --git a/src/main/java/meteordevelopment/meteorclient/asm/transformers/GameRendererTransformer.java b/src/main/java/meteordevelopment/meteorclient/asm/transformers/GameRendererTransformer.java deleted file mode 100644 index 53d90d925e..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/asm/transformers/GameRendererTransformer.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.asm.transformers; - -import meteordevelopment.meteorclient.asm.AsmTransformer; -import meteordevelopment.meteorclient.asm.Descriptor; -import meteordevelopment.meteorclient.asm.MethodInfo; -import org.objectweb.asm.Opcodes; -import org.objectweb.asm.tree.*; - -public class GameRendererTransformer extends AsmTransformer { - private final MethodInfo getFovMethod; - - public GameRendererTransformer() { - super(mapClassName("net/minecraft/class_757")); - - getFovMethod = new MethodInfo("net/minecraft/class_4184", null, new Descriptor("Lnet/minecraft/class_4184;", "F", "Z", "F"), true); - } - - @Override - public void transform(ClassNode klass) { - // Modify GameRenderer.getFov() - MethodNode method = getMethod(klass, getFovMethod); - if (method == null) error("[Meteor Client] Could not find method GameRenderer.getFov()"); - - int injectionCount = 0; - - //noinspection DataFlowIssue - for (AbstractInsnNode insn : method.instructions) { - if (insn instanceof LdcInsnNode in && in.cst instanceof Float && (float) in.cst == 90) { - InsnList insns = new InsnList(); - generateEventCall(insns, new LdcInsnNode(in.cst)); - - method.instructions.insert(insn, insns); - method.instructions.remove(insn); - injectionCount++; - } - else if ( - (insn instanceof MethodInsnNode in1 && in1.name.equals("intValue") && insn.getNext() instanceof InsnNode _in && _in.getOpcode() == Opcodes.I2F) - || - (insn instanceof MethodInsnNode in2 && in2.owner.equals(klass.name) && in2.name.startsWith("redirect") && in2.name.endsWith("getFov")) // Wi Zoom compatibility - ) { - InsnList insns = new InsnList(); - - insns.add(new VarInsnNode(Opcodes.FSTORE, method.maxLocals)); - generateEventCall(insns, new VarInsnNode(Opcodes.FLOAD, method.maxLocals)); - - method.instructions.insert(insn.getNext(), insns); - injectionCount++; - } - } - - if (injectionCount < 2) error("[Meteor Client] Failed to modify GameRenderer.getFov()"); - } - - private void generateEventCall(InsnList insns, AbstractInsnNode loadPreviousFov) { - insns.add(new FieldInsnNode(Opcodes.GETSTATIC, "meteordevelopment/meteorclient/MeteorClient", "EVENT_BUS", "Lmeteordevelopment/orbit/IEventBus;")); - insns.add(loadPreviousFov); - insns.add(new MethodInsnNode(Opcodes.INVOKESTATIC, "meteordevelopment/meteorclient/events/render/GetFovEvent", "get", "(F)Lmeteordevelopment/meteorclient/events/render/GetFovEvent;")); - insns.add(new MethodInsnNode(Opcodes.INVOKEINTERFACE, "meteordevelopment/orbit/IEventBus", "post", "(Ljava/lang/Object;)Ljava/lang/Object;")); - insns.add(new TypeInsnNode(Opcodes.CHECKCAST, "meteordevelopment/meteorclient/events/render/GetFovEvent")); - insns.add(new FieldInsnNode(Opcodes.GETFIELD, "meteordevelopment/meteorclient/events/render/GetFovEvent", "fov", "F")); - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java index 3e91843f36..e733c5fbed 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java @@ -10,6 +10,7 @@ import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.systems.RenderSystem; import meteordevelopment.meteorclient.MeteorClient; +import meteordevelopment.meteorclient.events.render.GetFovEvent; import meteordevelopment.meteorclient.events.render.Render3DEvent; import meteordevelopment.meteorclient.events.render.RenderAfterWorldEvent; import meteordevelopment.meteorclient.mixininterface.IVec3d; @@ -150,6 +151,11 @@ private float applyCameraTransformationsMathHelperLerpProxy(float original) { return Modules.get().get(NoRender.class).noNausea() ? 0 : original; } + @ModifyReturnValue(method = "getFov",at = @At("RETURN")) + private float modifyFov(float original) { + return MeteorClient.EVENT_BUS.post(GetFovEvent.get(original)).fov; + } + // Freecam @Unique From f48158268b9626925b72d105c12156b8b229d7b9 Mon Sep 17 00:00:00 2001 From: shocking_person <146020122+interruptedexecution@users.noreply.github.com> Date: Wed, 25 Dec 2024 02:09:22 -0500 Subject: [PATCH 17/29] Update BetterChat.java to fix player heads in the chat Line 463 is a bugged, redundant copy of line 462 which causes player head images to appear distorted. --- .../meteorclient/systems/modules/misc/BetterChat.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java index b715349d73..3e9121287c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java @@ -460,7 +460,6 @@ private void drawTexture(DrawContext context, IChatHudLine line, int y) { Identifier skin = entry.getSkinTextures().texture(); context.drawTexture(RenderLayer::getGuiTextured, skin, 0, y, 8, 8, 8, 8, 8, 8, 64, 64); - context.drawTexture(RenderLayer::getGuiTextured, skin, 0, y, 8, 8, 40, 8, 8, 8, 64, 64); } private GameProfile getSender(IChatHudLine line, String text) { From de82095de3d434b0fd775560031436bc08d76126 Mon Sep 17 00:00:00 2001 From: Wide-Cat <74723656+Wide-Cat@users.noreply.github.com> Date: Fri, 27 Dec 2024 17:37:25 +0000 Subject: [PATCH 18/29] Change rendering method --- .../meteorclient/systems/modules/misc/BetterChat.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java index 3e9121287c..9e595252bb 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterChat.java @@ -28,6 +28,7 @@ import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.orbit.EventHandler; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.PlayerSkinDrawer; import net.minecraft.client.gui.hud.ChatHudLine; import net.minecraft.client.network.PlayerListEntry; import net.minecraft.client.render.RenderLayer; @@ -457,9 +458,7 @@ private void drawTexture(DrawContext context, IChatHudLine line, int y) { PlayerListEntry entry = mc.getNetworkHandler().getPlayerListEntry(sender.getId()); if (entry == null) return; - Identifier skin = entry.getSkinTextures().texture(); - - context.drawTexture(RenderLayer::getGuiTextured, skin, 0, y, 8, 8, 8, 8, 8, 8, 64, 64); + PlayerSkinDrawer.draw(context, entry.getSkinTextures(), 0, y, 8); } private GameProfile getSender(IChatHudLine line, String text) { From 967d584a7cff795783fe6ad0bc7d127caa211be8 Mon Sep 17 00:00:00 2001 From: Wide_Cat Date: Tue, 31 Dec 2024 15:20:28 +0000 Subject: [PATCH 19/29] Fix boat fly for chest boats and rafts --- .../meteorclient/events/entity/BoatMoveEvent.java | 6 +++--- .../meteorclient/mixin/AbstractBoatEntityMixin.java | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/BoatMoveEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/BoatMoveEvent.java index 50beeb8ac4..6abc337460 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/BoatMoveEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/BoatMoveEvent.java @@ -5,14 +5,14 @@ package meteordevelopment.meteorclient.events.entity; -import net.minecraft.entity.vehicle.BoatEntity; +import net.minecraft.entity.vehicle.AbstractBoatEntity; public class BoatMoveEvent { private static final BoatMoveEvent INSTANCE = new BoatMoveEvent(); - public BoatEntity boat; + public AbstractBoatEntity boat; - public static BoatMoveEvent get(BoatEntity entity) { + public static BoatMoveEvent get(AbstractBoatEntity entity) { INSTANCE.boat = entity; return INSTANCE; } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBoatEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBoatEntityMixin.java index dd175938d8..adcc03bde8 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBoatEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBoatEntityMixin.java @@ -10,7 +10,6 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.BoatFly; import net.minecraft.entity.vehicle.AbstractBoatEntity; -import net.minecraft.entity.vehicle.BoatEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -28,7 +27,7 @@ public abstract class AbstractBoatEntityMixin { @Inject(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/vehicle/AbstractBoatEntity;move(Lnet/minecraft/entity/MovementType;Lnet/minecraft/util/math/Vec3d;)V")) private void onTickInvokeMove(CallbackInfo info) { - if ((Object) this instanceof BoatEntity boatEntity) { + if ((Object) this instanceof AbstractBoatEntity boatEntity) { MeteorClient.EVENT_BUS.post(BoatMoveEvent.get(boatEntity)); } } From 42ab94491cd87a2e95079b7206e72a3a72c4a9cf Mon Sep 17 00:00:00 2001 From: MachieCodes <80427814+machiecodes@users.noreply.github.com> Date: Wed, 1 Jan 2025 15:22:59 -0600 Subject: [PATCH 20/29] Refactor Sprint (#5078) Co-authored-by: Wide_Cat --- .../mixin/ClientPlayerEntityMixin.java | 4 +- .../meteorclient/mixin/LivingEntityMixin.java | 20 ++++-- .../systems/modules/movement/Sprint.java | 72 +++++++++++-------- 3 files changed, 58 insertions(+), 38 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityMixin.java index 5fe903751d..afa19d988c 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityMixin.java @@ -113,7 +113,9 @@ private boolean modifyMovement(boolean original) { @WrapWithCondition(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;setSprinting(Z)V", ordinal = 3)) private boolean wrapSetSprinting(ClientPlayerEntity instance, boolean b) { - return !Modules.get().get(Sprint.class).rageSprint(); + Sprint s = Modules.get().get(Sprint.class); + + return !s.rageSprint() || s.unsprintInWater() && isTouchingWater(); } // Rotations diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityMixin.java index f40ab07655..830a4bb30d 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityMixin.java @@ -69,15 +69,19 @@ private void spawnItemParticles(ItemStack stack, int count, CallbackInfo info) { @Inject(method = "onEquipStack", at = @At("HEAD"), cancellable = true) private void onEquipStack(EquipmentSlot slot, ItemStack oldStack, ItemStack newStack, CallbackInfo info) { - if ((Object) this == mc.player && Modules.get().get(OffhandCrash.class).isAntiCrash()) { + if ((Object) this != mc.player) return; + + if (Modules.get().get(OffhandCrash.class).isAntiCrash()) { info.cancel(); } } @ModifyArg(method = "swingHand(Lnet/minecraft/util/Hand;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;swingHand(Lnet/minecraft/util/Hand;Z)V")) private Hand setHand(Hand hand) { + if ((Object) this != mc.player) return hand; + HandView handView = Modules.get().get(HandView.class); - if ((Object) this == mc.player && handView.isActive()) { + if (handView.isActive()) { if (handView.swingMode.get() == HandView.SwingMode.None) return hand; return handView.swingMode.get() == HandView.SwingMode.Offhand ? Hand.OFF_HAND : Hand.MAIN_HAND; } @@ -87,12 +91,15 @@ private Hand setHand(Hand hand) { @ModifyConstant(method = "getHandSwingDuration", constant = @Constant(intValue = 6)) private int getHandSwingDuration(int constant) { if ((Object) this != mc.player) return constant; + return Modules.get().get(HandView.class).isActive() && mc.options.getPerspective().isFirstPerson() ? Modules.get().get(HandView.class).swingSpeed.get() : constant; } @ModifyReturnValue(method = "isGliding", at = @At("RETURN")) private boolean isGlidingHook(boolean original) { - if ((Object) this == mc.player && Modules.get().get(ElytraFly.class).canPacketEfly()) { + if ((Object) this != mc.player) return original; + + if (Modules.get().get(ElytraFly.class).canPacketEfly()) { return true; } @@ -122,9 +129,7 @@ private boolean hasStatusEffect(boolean original, RegistryEntry ef @ModifyExpressionValue(method = "jump", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;getYaw()F")) private float modifyGetYaw(float original) { if ((Object) this != mc.player) return original; - - Sprint s = Modules.get().get(Sprint.class); - if (!s.rageSprint() || !s.jumpFix.get()) return original; + if (!Modules.get().get(Sprint.class).rageSprint()) return original; float forward = Math.signum(mc.player.input.movementForward); float strafe = 90 * Math.signum(mc.player.input.movementSideways); @@ -138,7 +143,8 @@ private float modifyGetYaw(float original) { @ModifyExpressionValue(method = "jump", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;isSprinting()Z")) private boolean modifyIsSprinting(boolean original) { - if ((Object) this != mc.player || !Modules.get().get(Sprint.class).rageSprint()) return original; + if ((Object) this != mc.player) return original; + if (!Modules.get().get(Sprint.class).rageSprint()) return original; // only add the extra velocity if you're actually moving, otherwise you'll jump in place and move forward return original && (Math.abs(mc.player.input.movementForward) > 1.0E-5F || Math.abs(mc.player.input.movementSideways) > 1.0E-5F); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Sprint.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Sprint.java index 8e2e2d46eb..6935d708d9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Sprint.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/movement/Sprint.java @@ -30,38 +30,39 @@ public enum Mode { } public final Setting mode = sgGeneral.add(new EnumSetting.Builder() - .name("speed-mode") + .name("sprint-mode") .description("What mode of sprinting.") .defaultValue(Mode.Strict) .build() ); - public final Setting jumpFix = sgGeneral.add(new BoolSetting.Builder() - .name("jump-fix") - .description("Whether to correct jumping directions.") - .defaultValue(true) - .visible(() -> mode.get() == Mode.Rage) - .build() - ); - private final Setting keepSprint = sgGeneral.add(new BoolSetting.Builder() .name("keep-sprint") - .description("Whether to keep sprinting after attacking an entity.") + .description("Whether to keep sprinting after attacking.") .defaultValue(false) .build() ); private final Setting unsprintOnHit = sgGeneral.add(new BoolSetting.Builder() .name("unsprint-on-hit") - .description("Whether to stop sprinting when attacking, to ensure you get crits and sweep attacks.") + .description("Whether to stop sprinting before attacking, to ensure you get crits and sweep attacks.") .defaultValue(false) .build() ); - private final Setting unsprintInWater = sgGeneral.add(new BoolSetting.Builder() + public final Setting unsprintInWater = sgGeneral.add(new BoolSetting.Builder() .name("unsprint-in-water") .description("Whether to stop sprinting when in water.") .defaultValue(true) + .visible(() -> mode.get() == Mode.Rage) + .build() + ); + + private final Setting permaSprint = sgGeneral.add(new BoolSetting.Builder() + .name("sprint-while-stationary") + .description("Sprint even when not moving.") + .defaultValue(false) + .visible(() -> mode.get() == Mode.Rage) .build() ); @@ -69,19 +70,18 @@ public Sprint() { super(Categories.Movement, "sprint", "Automatically sprints."); } - @Override - public void onDeactivate() { - mc.player.setSprinting(false); - } - - @EventHandler + @EventHandler(priority = EventPriority.HIGH) private void onTickMovement(TickEvent.Post event) { - if (shouldSprint()) mc.player.setSprinting(true); + if (unsprintInWater.get() && mc.player.isTouchingWater()) return; + + mc.player.setSprinting(shouldSprint()); } @EventHandler(priority = EventPriority.HIGH) private void onPacketSend(PacketEvent.Send event) { - if (!unsprintOnHit.get() || !(event.packet instanceof IPlayerInteractEntityC2SPacket packet) || packet.meteor$getType() != PlayerInteractEntityC2SPacket.InteractType.ATTACK) return; + if (!unsprintOnHit.get()) return; + if (!(event.packet instanceof IPlayerInteractEntityC2SPacket packet) + || packet.meteor$getType() != PlayerInteractEntityC2SPacket.InteractType.ATTACK) return; mc.getNetworkHandler().sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.STOP_SPRINTING)); mc.player.setSprinting(false); @@ -90,29 +90,41 @@ private void onPacketSend(PacketEvent.Send event) { @EventHandler private void onPacketSent(PacketEvent.Sent event) { if (!unsprintOnHit.get() || !keepSprint.get()) return; - if (!(event.packet instanceof IPlayerInteractEntityC2SPacket packet) || packet.meteor$getType() != PlayerInteractEntityC2SPacket.InteractType.ATTACK) return; + if (!(event.packet instanceof IPlayerInteractEntityC2SPacket packet) + || packet.meteor$getType() != PlayerInteractEntityC2SPacket.InteractType.ATTACK) return; - if (shouldSprint() && !mc.player.isSprinting()) { - mc.getNetworkHandler().sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.START_SPRINTING)); - mc.player.setSprinting(true); - } + if (!shouldSprint() || mc.player.isSprinting()) return; + + mc.getNetworkHandler().sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.START_SPRINTING)); + mc.player.setSprinting(true); } public boolean shouldSprint() { - if (unsprintInWater.get() && (mc.player.isTouchingWater() || mc.player.isSubmergedInWater())) return false; + if (mc.currentScreen != null && !Modules.get().get(GUIMove.class).sprint.get()) return false; + + float movement = mode.get() == Mode.Rage + ? (Math.abs(mc.player.input.movementForward) + Math.abs(mc.player.input.movementSideways)) + : mc.player.input.movementForward; + + if (movement <= (mc.player.isSubmergedInWater() ? 1.0E-5F : 0.8)) { + if (mode.get() == Mode.Strict || !permaSprint.get()) return false; + } - boolean strictSprint = mc.player.forwardSpeed > 1.0E-5F + boolean strictSprint = !(mc.player.isTouchingWater() && !mc.player.isSubmergedInWater()) && ((ClientPlayerEntityAccessor) mc.player).invokeCanSprint() - && (!mc.player.horizontalCollision || mc.player.collidedSoftly) - && !(mc.player.isTouchingWater() && !mc.player.isSubmergedInWater()); + && (!mc.player.horizontalCollision || mc.player.collidedSoftly); - return isActive() && (mode.get() == Mode.Rage || strictSprint) && (mc.currentScreen == null || Modules.get().get(GUIMove.class).sprint.get()); + return isActive() && (mode.get() == Mode.Rage || strictSprint); } public boolean rageSprint() { return isActive() && mode.get() == Mode.Rage; } + public boolean unsprintInWater() { + return isActive() && unsprintInWater.get(); + } + public boolean stopSprinting() { return !isActive() || !keepSprint.get(); } From b67a9b42de8287a965a72af4d3d6286596b5a320 Mon Sep 17 00:00:00 2001 From: MachieCodes <80427814+machiecodes@users.noreply.github.com> Date: Thu, 2 Jan 2025 18:58:21 -0600 Subject: [PATCH 21/29] Show Vanilla HUD if hidden when in the Meteor HUD editor (#5077) --- .../meteorclient/MeteorClient.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/MeteorClient.java b/src/main/java/meteordevelopment/meteorclient/MeteorClient.java index e6704a22d0..c5b383c4d4 100644 --- a/src/main/java/meteordevelopment/meteorclient/MeteorClient.java +++ b/src/main/java/meteordevelopment/meteorclient/MeteorClient.java @@ -16,6 +16,7 @@ import meteordevelopment.meteorclient.gui.tabs.Tabs; import meteordevelopment.meteorclient.systems.Systems; import meteordevelopment.meteorclient.systems.config.Config; +import meteordevelopment.meteorclient.systems.hud.screens.HudEditorScreen; import meteordevelopment.meteorclient.systems.modules.Categories; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.DiscordPresence; @@ -172,13 +173,16 @@ private void toggleGui() { @EventHandler(priority = EventPriority.LOWEST) private void onOpenScreen(OpenScreenEvent event) { - boolean hideHud = GuiThemes.get().hideHUD(); - - if (hideHud) { + if (event.screen instanceof WidgetScreen) { if (!wasWidgetScreen) wasHudHiddenRoot = mc.options.hudHidden; - - if (event.screen instanceof WidgetScreen) mc.options.hudHidden = true; - else if (!wasHudHiddenRoot) mc.options.hudHidden = false; + if (GuiThemes.get().hideHUD() || wasHudHiddenRoot) { + // Always show the MC HUD in the HUD editor screen since people like + // to align some items with the hotbar or chat + mc.options.hudHidden = !(event.screen instanceof HudEditorScreen); + } + } else { + if (wasWidgetScreen) mc.options.hudHidden = wasHudHiddenRoot; + wasHudHiddenRoot = mc.options.hudHidden; } wasWidgetScreen = event.screen instanceof WidgetScreen; From 40cfef1cccbf54e853018f170088a71964210db8 Mon Sep 17 00:00:00 2001 From: MachieCodes <80427814+machiecodes@users.noreply.github.com> Date: Thu, 2 Jan 2025 19:52:03 -0600 Subject: [PATCH 22/29] Zoom Hide Hud Setting (#5080) --- .../systems/modules/render/Zoom.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Zoom.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Zoom.java index ab96938886..40f5a98efe 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Zoom.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Zoom.java @@ -6,6 +6,7 @@ package meteordevelopment.meteorclient.systems.modules.render; import meteordevelopment.meteorclient.MeteorClient; +import meteordevelopment.meteorclient.events.meteor.KeyEvent; import meteordevelopment.meteorclient.events.meteor.MouseScrollEvent; import meteordevelopment.meteorclient.events.render.GetFovEvent; import meteordevelopment.meteorclient.events.render.Render3DEvent; @@ -18,6 +19,7 @@ import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.orbit.EventHandler; import net.minecraft.util.math.MathHelper; +import org.lwjgl.glfw.GLFW; public class Zoom extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); @@ -52,10 +54,18 @@ public class Zoom extends Module { .build() ); + private final Setting hideHud = sgGeneral.add(new BoolSetting.Builder() + .name("hide-HUD") + .description("Whether or not to hide the Minecraft HUD.") + .defaultValue(false) + .build() + ); + private final Setting renderHands = sgGeneral.add(new BoolSetting.Builder() .name("show-hands") .description("Whether or not to render your hands.") .defaultValue(false) + .visible(() -> !hideHud.get()) .build() ); @@ -66,6 +76,8 @@ public class Zoom extends Module { private double lastFov; private double time; + private boolean hudManualToggled; + public Zoom() { super(Categories.Render, "zoom", "Zooms your view."); autoSubscribe = false; @@ -83,6 +95,24 @@ public void onActivate() { MeteorClient.EVENT_BUS.subscribe(this); enabled = true; } + + if (hideHud.get() && !mc.options.hudHidden) { + hudManualToggled = false; + mc.options.hudHidden = true; + } + } + + @Override + public void onDeactivate() { + if (hideHud.get() && !hudManualToggled) { + mc.options.hudHidden = false; + } + } + + @EventHandler + public void onKeyPressed(KeyEvent event) { + if (event.key != GLFW.GLFW_KEY_F1) return; + hudManualToggled = true; } public void onStop() { @@ -133,7 +163,7 @@ private void onRender3D(Render3DEvent event) { @EventHandler private void onGetFov(GetFovEvent event) { - event.fov /= getScaling(); + event.fov /= (float) getScaling(); if (lastFov != event.fov) mc.worldRenderer.scheduleTerrainUpdate(); lastFov = event.fov; From c0a3664bedc88f4c3e9c5f0f49c7246cca5662ae Mon Sep 17 00:00:00 2001 From: DrParanoya <158059657+DrParanoya@users.noreply.github.com> Date: Sat, 4 Jan 2025 19:42:59 +0100 Subject: [PATCH 23/29] Add a setting to hide the Auto Reconnect buttons (#5072) --- .../meteorclient/mixin/DisconnectedScreenMixin.java | 4 ++-- .../meteorclient/systems/modules/misc/AutoReconnect.java | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/DisconnectedScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/DisconnectedScreenMixin.java index 221b9d4353..4a8bab9ae1 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/DisconnectedScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/DisconnectedScreenMixin.java @@ -7,10 +7,10 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.AutoReconnect; -import net.minecraft.client.gui.screen.multiplayer.ConnectScreen; import net.minecraft.client.gui.screen.DisconnectedScreen; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.TitleScreen; +import net.minecraft.client.gui.screen.multiplayer.ConnectScreen; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.DirectionalLayoutWidget; import net.minecraft.text.Text; @@ -40,7 +40,7 @@ protected DisconnectedScreenMixin(Text title) { private void addButtons(CallbackInfo ci) { AutoReconnect autoReconnect = Modules.get().get(AutoReconnect.class); - if (autoReconnect.lastServerConnection != null) { + if (autoReconnect.lastServerConnection != null && !autoReconnect.button.get()) { reconnectBtn = new ButtonWidget.Builder(Text.literal(getText()), button -> tryConnecting()).build(); grid.add(reconnectBtn); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoReconnect.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoReconnect.java index e5e3e893ea..997f57d442 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoReconnect.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/AutoReconnect.java @@ -9,6 +9,7 @@ import it.unimi.dsi.fastutil.objects.ObjectObjectImmutablePair; import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.world.ServerConnectBeginEvent; +import meteordevelopment.meteorclient.settings.BoolSetting; import meteordevelopment.meteorclient.settings.DoubleSetting; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.settings.SettingGroup; @@ -30,6 +31,13 @@ public class AutoReconnect extends Module { .build() ); + public final Setting button = sgGeneral.add(new BoolSetting.Builder() + .name("hide-buttons") + .description("Will hide the buttons related to Auto Reconnect.") + .defaultValue(false) + .build() + ); + public Pair lastServerConnection; public AutoReconnect() { From f33a21b174f812f04852ff3328187233a00f9316 Mon Sep 17 00:00:00 2001 From: MineGame159 Date: Sun, 5 Jan 2025 13:06:07 +0100 Subject: [PATCH 24/29] Fix item rendering in Nametags and Combat HUD --- .../meteorclient/systems/hud/elements/CombatHud.java | 2 +- .../meteorclient/systems/modules/render/Nametags.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CombatHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CombatHud.java index f2b4d7be41..e2f4f990c6 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CombatHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CombatHud.java @@ -352,7 +352,7 @@ public void render(HudRenderer renderer) { ItemStack itemStack = getItem(slot); - renderer.item(itemStack, (int) (armorX * scale.get()), (int) (armorY * scale.get()), scale.get().floatValue(), true); + renderer.item(itemStack, (int) (armorX), (int) (armorY), 1, true); armorY += 18; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java index 584f7800b3..95fa6dd4f8 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java @@ -391,7 +391,7 @@ private double getHeight(Entity entity) { private void renderNametagPlayer(Render2DEvent event, PlayerEntity player, boolean shadow) { TextRenderer text = TextRenderer.get(); - NametagUtils.begin(pos, event.drawContext); + NametagUtils.begin(pos); // Gamemode GameMode gm = EntityUtils.getGameMode(player); From 43a72d60a20fd2bf7d7ef905601ec35e8919dc57 Mon Sep 17 00:00:00 2001 From: Toshimichi0915 Date: Mon, 6 Jan 2025 00:07:32 +0900 Subject: [PATCH 25/29] Fix auto clicker not working when a screen is open (#5066) --- .../mixin/MinecraftClientAccessor.java | 6 ++++++ .../systems/modules/player/AutoClicker.java | 15 +++++++++++---- .../meteorclient/utils/Utils.java | 8 ++++++++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftClientAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftClientAccessor.java index 48ad6bacdd..bf2376b30d 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftClientAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftClientAccessor.java @@ -41,6 +41,12 @@ static int getFps() { @Accessor("resourceReloadLogger") ResourceReloadLogger getResourceReloadLogger(); + @Accessor("attackCooldown") + int getAttackCooldown(); + + @Accessor("attackCooldown") + void setAttackCooldown(int attackCooldown); + @Invoker("doAttack") boolean leftClick(); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoClicker.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoClicker.java index 63f9c8aefd..8ab9a34069 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoClicker.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/AutoClicker.java @@ -6,10 +6,7 @@ package meteordevelopment.meteorclient.systems.modules.player; import meteordevelopment.meteorclient.events.world.TickEvent; -import meteordevelopment.meteorclient.settings.EnumSetting; -import meteordevelopment.meteorclient.settings.IntSetting; -import meteordevelopment.meteorclient.settings.Setting; -import meteordevelopment.meteorclient.settings.SettingGroup; +import meteordevelopment.meteorclient.settings.*; import meteordevelopment.meteorclient.systems.modules.Categories; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.utils.Utils; @@ -18,6 +15,13 @@ public class AutoClicker extends Module { private final SettingGroup sgGeneral = settings.getDefaultGroup(); + private final Setting inScreens = sgGeneral.add(new BoolSetting.Builder() + .name("while-in-screens") + .description("Whether to click while a screen is open.") + .defaultValue(true) + .build() + ); + private final Setting leftClickMode = sgGeneral.add(new EnumSetting.Builder() .name("mode-left") .description("The method of clicking for left clicks.") @@ -74,6 +78,8 @@ public void onDeactivate() { @EventHandler private void onTick(TickEvent.Post event) { + if (!inScreens.get() && mc.currentScreen != null) return; + switch (leftClickMode.get()) { case Disabled -> {} case Hold -> mc.options.attackKey.setPressed(true); @@ -85,6 +91,7 @@ private void onTick(TickEvent.Post event) { } } } + switch (rightClickMode.get()) { case Disabled -> {} case Hold -> mc.options.useKey.setPressed(true); diff --git a/src/main/java/meteordevelopment/meteorclient/utils/Utils.java b/src/main/java/meteordevelopment/meteorclient/utils/Utils.java index 413c0f9107..7f89df6273 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/Utils.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/Utils.java @@ -514,6 +514,14 @@ public static double random(double min, double max) { } public static void leftClick() { + // check if a screen is open + // see net.minecraft.client.Mouse.lockCursor + // see net.minecraft.client.MinecraftClient.tick + int attackCooldown = ((MinecraftClientAccessor) mc).getAttackCooldown(); + if (attackCooldown == 10000) { + ((MinecraftClientAccessor) mc).setAttackCooldown(0); + } + mc.options.attackKey.setPressed(true); ((MinecraftClientAccessor) mc).leftClick(); mc.options.attackKey.setPressed(false); From 86944d36633f30fe02e8eefcccaadd78ce44003a Mon Sep 17 00:00:00 2001 From: MineGame159 Date: Sun, 5 Jan 2025 17:52:12 +0100 Subject: [PATCH 26/29] Oops --- .../meteorclient/systems/modules/render/Nametags.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java index 95fa6dd4f8..8893f69402 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Nametags.java @@ -577,7 +577,7 @@ private void renderNametagPlayer(Render2DEvent event, PlayerEntity player, boole } } else if (displayEnchants.get()) displayEnchants.set(false); - NametagUtils.end(event.drawContext); + NametagUtils.end(); } private void renderNametagItem(ItemStack stack, boolean shadow) { From 0adc76df4a65906f46d657931e80a58c9b80ab67 Mon Sep 17 00:00:00 2001 From: MineGame159 Date: Mon, 6 Jan 2025 14:17:06 +0100 Subject: [PATCH 27/29] Fix view and hurt bobbing with Tracers --- .../meteorclient/mixin/GameRendererMixin.java | 8 ++-- .../utils/render/RenderUtils.java | 45 ++++--------------- 2 files changed, 13 insertions(+), 40 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java index e733c5fbed..feaad32821 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java @@ -75,7 +75,7 @@ public abstract class GameRendererMixin { private final MatrixStack matrices = new MatrixStack(); @Inject(method = "renderWorld", at = @At(value = "INVOKE_STRING", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", args = {"ldc=hand"})) - private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Local(ordinal = 2) Matrix4f matrix4f3, @Local(ordinal = 1) float tickDelta, @Local MatrixStack matrixStack) { + private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Local(ordinal = 0) Matrix4f projection, @Local(ordinal = 2) Matrix4f view, @Local(ordinal = 1) float tickDelta, @Local MatrixStack matrixStack) { if (!Utils.canUpdate()) return; Profilers.get().push(MeteorClient.MOD_ID + "_render"); @@ -87,12 +87,12 @@ private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Loca // Call utility classes - RenderUtils.updateScreenCenter(); - NametagUtils.onRender(matrix4f3); + RenderUtils.updateScreenCenter(projection, view); + NametagUtils.onRender(view); // Update model view matrix - RenderSystem.getModelViewStack().pushMatrix().mul(matrix4f3); + RenderSystem.getModelViewStack().pushMatrix().mul(view); matrices.push(); diff --git a/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java b/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java index 869325d74e..e0a0257da8 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/render/RenderUtils.java @@ -13,17 +13,13 @@ import meteordevelopment.meteorclient.utils.misc.Pool; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.orbit.EventHandler; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RotationAxis; import net.minecraft.util.math.Vec3d; -import org.joml.Vector3f; +import org.joml.Matrix4f; +import org.joml.Vector4f; import java.util.ArrayList; import java.util.Iterator; @@ -65,38 +61,15 @@ public static void drawItem(DrawContext drawContext, ItemStack itemStack, int x, drawItem(drawContext, itemStack, x, y, scale, overlay, null); } - public static void updateScreenCenter() { - MinecraftClient mc = MinecraftClient.getInstance(); + public static void updateScreenCenter(Matrix4f projection, Matrix4f view) { + Matrix4f invProjection = new Matrix4f(projection).invert(); + Matrix4f invView = new Matrix4f(view).invert(); - Vector3f pos = new Vector3f(0, 0, 1); + Vector4f center4 = new Vector4f(0, 0, 0, 1).mul(invProjection).mul(invView); + center4.div(center4.w); - if (mc.options.getBobView().getValue()) { - MatrixStack bobViewMatrices = new MatrixStack(); - - bobView(bobViewMatrices); - pos.mulPosition(bobViewMatrices.peek().getPositionMatrix().invert()); - } - - center = new Vec3d(pos.x, -pos.y, pos.z) - .rotateX(-(float) Math.toRadians(mc.gameRenderer.getCamera().getPitch())) - .rotateY(-(float) Math.toRadians(mc.gameRenderer.getCamera().getYaw())) - .add(mc.gameRenderer.getCamera().getPos()); - } - - private static void bobView(MatrixStack matrices) { - Entity cameraEntity = MinecraftClient.getInstance().getCameraEntity(); - - if (cameraEntity instanceof AbstractClientPlayerEntity abstractClientPlayerEntity) { - float tickDelta = mc.getRenderTickCounter().getTickDelta(true); - - float var7 = abstractClientPlayerEntity.distanceMoved - abstractClientPlayerEntity.lastDistanceMoved; - float g = -(abstractClientPlayerEntity.distanceMoved + var7 * tickDelta); - float h = MathHelper.lerp(tickDelta, abstractClientPlayerEntity.prevStrideDistance, abstractClientPlayerEntity.strideDistance); - - matrices.translate(MathHelper.sin(g * (float) Math.PI) * h * 0.5F, -Math.abs(MathHelper.cos(g * (float) Math.PI) * h), 0.0F); - matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(MathHelper.sin(g * (float) Math.PI) * h * 3f)); - matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(Math.abs(MathHelper.cos(g * (float) Math.PI - 0.2f) * h) * 5f)); - } + Vec3d camera = mc.gameRenderer.getCamera().getPos(); + center = new Vec3d(camera.x + center4.x, camera.y + center4.y, camera.z + center4.z); } public static void renderTickingBlock(BlockPos blockPos, Color sideColor, Color lineColor, ShapeMode shapeMode, int excludeDir, int duration, boolean fade, boolean shrink) { From 66d0c6991d37273c5812b222f3c29cc01619762b Mon Sep 17 00:00:00 2001 From: MineGame159 Date: Mon, 6 Jan 2025 14:36:25 +0100 Subject: [PATCH 28/29] Future version 0.6.0 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 0abeae552e..9adbdbe949 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ loader_version=0.16.9 fapi_version=0.108.0+1.21.3 # Mod Properties -mod_version=0.5.9 +mod_version=0.6.0 maven_group=meteordevelopment archives_base_name=meteor-client From 2a853b2b6baa5da002f53a8925124850f37d3e73 Mon Sep 17 00:00:00 2001 From: Big Iron <52252627+Big-Iron-Cheems@users.noreply.github.com> Date: Mon, 6 Jan 2025 16:16:32 +0100 Subject: [PATCH 29/29] 1.21.4 update (#5030) --- build.gradle | 7 +- gradle.properties | 16 +- gradle/wrapper/gradle-wrapper.properties | 2 +- .../commands/commands/RotationCommand.java | 2 +- .../commands/commands/VClipCommand.java | 4 +- .../events/render/RenderItemEntityEvent.java | 8 +- ...AbstractSignBlockEntityRendererMixin.java} | 6 +- .../mixin/BannerBlockEntityRendererMixin.java | 77 +- .../meteorclient/mixin/BlockColorsMixin.java | 58 ++ .../meteorclient/mixin/ClientWorldMixin.java | 8 +- ...viderMixin.java => CompassStateMixin.java} | 10 +- .../mixin/FireworksSparkParticleSubMixin.java | 2 +- .../mixin/FoliageColorsMixin.java | 45 -- .../mixin/HeldItemRendererMixin.java | 13 +- .../mixin/InGameOverlayRendererMixin.java | 13 +- .../mixin/ItemEntityRendererMixin.java | 6 +- .../meteorclient/mixin/ItemRendererMixin.java | 12 +- .../mixin/KeyboardInputMixin.java | 2 +- .../meteorclient/mixin/SkyRenderingMixin.java | 40 - .../mixin/TooltipComponentMixin.java | 2 +- .../mixin/WorldRendererMixin.java | 4 +- .../AbstractBlockRenderContextMixin.java | 2 +- .../viafabricplus/GeneralSettingsMixin.java | 2 +- .../systems/accounts/Account.java | 2 +- .../systems/hud/elements/HoleHud.java | 2 +- .../systems/modules/render/ItemPhysics.java | 98 +-- .../systems/modules/world/Collisions.java | 2 +- .../meteorclient/utils/files/StreamUtils.java | 2 +- .../utils/network/PacketUtils.java | 732 +++++++++--------- .../utils/network/PacketUtilsUtil.java | 18 +- .../utils/player/CustomPlayerInput.java | 2 +- .../utils/player/TitleScreenCredits.java | 2 +- .../utils/render/ByteTexture.java | 5 - .../utils/tooltip/BannerTooltipComponent.java | 4 +- src/main/resources/fabric.mod.json | 4 +- .../resources/meteor-client.accesswidener | 6 + src/main/resources/meteor-client.mixins.json | 7 +- 37 files changed, 578 insertions(+), 649 deletions(-) rename src/main/java/meteordevelopment/meteorclient/mixin/{SignBlockEntityRendererMixin.java => AbstractSignBlockEntityRendererMixin.java} (79%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/BlockColorsMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{CompassAnglePredicateProviderMixin.java => CompassStateMixin.java} (82%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/FoliageColorsMixin.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/SkyRenderingMixin.java diff --git a/build.gradle b/build.gradle index 96ae6c3abe..d51be03840 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { - id "fabric-loom" version "1.8-SNAPSHOT" + id "fabric-loom" version "1.9-SNAPSHOT" id "maven-publish" - id "com.github.johnrengelman.shadow" version "8.1.1" + id "com.gradleup.shadow" version "8.3.5" } base { @@ -60,7 +60,8 @@ dependencies { modCompileOnly("maven.modrinth:sodium:${project.sodium_version}") { transitive = false } modCompileOnly("maven.modrinth:lithium:${project.lithium_version}") { transitive = false } modCompileOnly("maven.modrinth:iris:${project.iris_version}") { transitive = false } - modCompileOnly("de.florianmichael:ViaFabricPlus:${project.viafabricplus_version}") { transitive = false } + modCompileOnly("com.viaversion:viafabricplus:${project.viafabricplus_version}") { transitive = false } + modCompileOnly("com.viaversion:viafabricplus-api:${project.viafabricplus_version}") { transitive = false } // Baritone (https://github.com/MeteorDevelopment/baritone) modCompileOnly "meteordevelopment:baritone:${project.baritone_version}-SNAPSHOT" diff --git a/gradle.properties b/gradle.properties index 9adbdbe949..d66ea389b7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,10 +1,10 @@ org.gradle.jvmargs=-Xmx2G # Fabric (https://fabricmc.net/develop) -minecraft_version=1.21.3 -yarn_mappings=1.21.3+build.2 +minecraft_version=1.21.4 +yarn_mappings=1.21.4+build.7 loader_version=0.16.9 -fapi_version=0.108.0+1.21.3 +fapi_version=0.114.0+1.21.4 # Mod Properties mod_version=0.6.0 @@ -14,16 +14,16 @@ archives_base_name=meteor-client # Dependency Versions # Baritone (https://github.com/MeteorDevelopment/baritone) -baritone_version=1.21.3 +baritone_version=1.21.4 # Sodium (https://github.com/CaffeineMC/sodium-fabric) -sodium_version=mc1.21.3-0.6.0-fabric +sodium_version=mc1.21.4-0.6.6-fabric # Lithium (https://github.com/CaffeineMC/lithium-fabric) -lithium_version=mc1.21.3-0.14.2-fabric +lithium_version=mc1.21.4-0.14.3-fabric # Iris (https://github.com/IrisShaders/Iris) -iris_version=1.8.0+1.21.3-fabric +iris_version=1.8.5+1.21.4-fabric # Orbit (https://github.com/MeteorDevelopment/orbit) orbit_version=0.2.4 @@ -41,7 +41,7 @@ reflections_version=0.10.2 netty_version=4.1.90.Final # ViaFabricPlus (https://github.com/ViaVersion/ViaFabricPlus) -viafabricplus_version=3.5.1 +viafabricplus_version=4.0.0 # WaybackAuthLib (https://github.com/FlorianMichael/WaybackAuthLib) waybackauthlib_version=1.0.1 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e1adfb4938..d6e308a637 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/RotationCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/RotationCommand.java index 0910a87379..d9b3be2622 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/RotationCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/RotationCommand.java @@ -25,7 +25,7 @@ public void build(LiteralArgumentBuilder builder) { .then(argument("direction", DirectionArgumentType.create()) .executes(context -> { mc.player.setPitch(context.getArgument("direction", Direction.class).getVector().getY() * -90); - mc.player.setYaw(context.getArgument("direction", Direction.class).asRotation()); + mc.player.setYaw(context.getArgument("direction", Direction.class).getPositiveHorizontalDegrees()); return SINGLE_SUCCESS; })) diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/VClipCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/VClipCommand.java index b74103bb75..13124e5a54 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/VClipCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/VClipCommand.java @@ -40,11 +40,11 @@ public void build(LiteralArgumentBuilder builder) { // Vehicle version // For each 10 blocks, send a vehicle move packet with no delta for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) { - mc.player.networkHandler.sendPacket(new VehicleMoveC2SPacket(mc.player.getVehicle())); + mc.player.networkHandler.sendPacket(VehicleMoveC2SPacket.fromVehicle(mc.player.getVehicle())); } // Now send the final vehicle move packet mc.player.getVehicle().setPosition(mc.player.getVehicle().getX(), mc.player.getVehicle().getY() + blocks, mc.player.getVehicle().getZ()); - mc.player.networkHandler.sendPacket(new VehicleMoveC2SPacket(mc.player.getVehicle())); + mc.player.networkHandler.sendPacket(VehicleMoveC2SPacket.fromVehicle(mc.player.getVehicle())); } else { // No vehicle version // For each 10 blocks, send a player move packet with no delta diff --git a/src/main/java/meteordevelopment/meteorclient/events/render/RenderItemEntityEvent.java b/src/main/java/meteordevelopment/meteorclient/events/render/RenderItemEntityEvent.java index 759303318a..14cd7fbcf4 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/render/RenderItemEntityEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/render/RenderItemEntityEvent.java @@ -7,9 +7,9 @@ import meteordevelopment.meteorclient.events.Cancellable; import meteordevelopment.meteorclient.mixininterface.IEntityRenderState; +import net.minecraft.client.item.ItemModelManager; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.state.ItemEntityRenderState; -import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.ItemEntity; @@ -22,9 +22,9 @@ public class RenderItemEntityEvent extends Cancellable { public MatrixStack matrixStack; public VertexConsumerProvider vertexConsumerProvider; public int light; - public ItemRenderer itemRenderer; + public ItemModelManager itemModelManager; - public static RenderItemEntityEvent get(ItemEntityRenderState renderState, float tickDelta, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, ItemRenderer itemRenderer) { + public static RenderItemEntityEvent get(ItemEntityRenderState renderState, float tickDelta, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, ItemModelManager itemModelManager) { INSTANCE.setCancelled(false); INSTANCE.itemEntity = (ItemEntity) ((IEntityRenderState) renderState).meteor$getEntity(); INSTANCE.renderState = renderState; @@ -32,7 +32,7 @@ public static RenderItemEntityEvent get(ItemEntityRenderState renderState, float INSTANCE.matrixStack = matrixStack; INSTANCE.vertexConsumerProvider = vertexConsumerProvider; INSTANCE.light = light; - INSTANCE.itemRenderer = itemRenderer; + INSTANCE.itemModelManager = itemModelManager; return INSTANCE; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/SignBlockEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignBlockEntityRendererMixin.java similarity index 79% rename from src/main/java/meteordevelopment/meteorclient/mixin/SignBlockEntityRendererMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignBlockEntityRendererMixin.java index cad1b62f5e..cde62a3298 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/SignBlockEntityRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignBlockEntityRendererMixin.java @@ -8,12 +8,12 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.render.block.entity.SignBlockEntityRenderer; +import net.minecraft.client.render.block.entity.AbstractSignBlockEntityRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(SignBlockEntityRenderer.class) -public abstract class SignBlockEntityRendererMixin { +@Mixin(AbstractSignBlockEntityRenderer.class) +public abstract class AbstractSignBlockEntityRendererMixin { @ModifyExpressionValue(method = "renderText", at = @At(value = "CONSTANT", args = {"intValue=4", "ordinal=1"})) private int loopTextLengthProxy(int i) { if (Modules.get().get(NoRender.class).noSignText()) return 0; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BannerBlockEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BannerBlockEntityRendererMixin.java index 572c735480..b40b668b9c 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BannerBlockEntityRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BannerBlockEntityRendererMixin.java @@ -5,21 +5,17 @@ package meteordevelopment.meteorclient.mixin; +import com.llamalad7.mixinextras.sugar.Local; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.block.BannerBlock; -import net.minecraft.block.BlockState; -import net.minecraft.block.WallBannerBlock; import net.minecraft.block.entity.BannerBlockEntity; -import net.minecraft.client.model.ModelPart; import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.block.entity.BannerBlockEntityRenderer; +import net.minecraft.client.render.block.entity.model.BannerBlockModel; import net.minecraft.client.render.model.ModelBaker; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.math.RotationAxis; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -29,63 +25,30 @@ @Mixin(BannerBlockEntityRenderer.class) public abstract class BannerBlockEntityRendererMixin { - - @Final - @Shadow private ModelPart pillar; - @Final - @Shadow private ModelPart crossbar; + @Shadow + public abstract void render(BannerBlockEntity bannerBlockEntity, float f, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, int j); @Inject(method = "render(Lnet/minecraft/block/entity/BannerBlockEntity;FLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;II)V", at = @At("HEAD"), cancellable = true) - private void render(BannerBlockEntity bannerBlockEntity, float f, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, int j, CallbackInfo ci) { - if (bannerBlockEntity.getWorld() != null) { //Don't modify banners in item form - NoRender.BannerRenderMode renderMode = Modules.get().get(NoRender.class).getBannerRenderMode(); - if (renderMode == NoRender.BannerRenderMode.None) ci.cancel(); - else if (renderMode == NoRender.BannerRenderMode.Pillar) { - BlockState blockState = bannerBlockEntity.getCachedState(); - if (blockState.getBlock() instanceof BannerBlock) { //Floor banner - this.pillar.visible = true; - this.crossbar.visible = false; - renderPillar(bannerBlockEntity, matrixStack, vertexConsumerProvider, i, j); - } - else { //Wall banner - this.pillar.visible = false; - this.crossbar.visible = true; - renderCrossbar(bannerBlockEntity, matrixStack, vertexConsumerProvider, i, j); - } - ci.cancel(); - } - } + private void injectRender1(BannerBlockEntity bannerBlockEntity, float tickDelta, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, int overlay, CallbackInfo ci) { + if (Modules.get().get(NoRender.class).getBannerRenderMode() == NoRender.BannerRenderMode.None) ci.cancel(); } - @Unique - private void renderPillar(BannerBlockEntity bannerBlockEntity, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, int j) { - matrixStack.push(); - BlockState blockState = bannerBlockEntity.getCachedState(); - matrixStack.translate(0.5D, 0.5D, 0.5D); - float h = (-(Integer)blockState.get(BannerBlock.ROTATION) * 360) / 16.0F; - matrixStack.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(h)); - matrixStack.push(); - matrixStack.scale(0.6666667F, -0.6666667F, -0.6666667F); - VertexConsumer vertexConsumer = ModelBaker.BANNER_BASE.getVertexConsumer(vertexConsumerProvider, RenderLayer::getEntitySolid); - this.pillar.render(matrixStack, vertexConsumer, i, j); - matrixStack.pop(); - matrixStack.pop(); + @Inject(method = "render(Lnet/minecraft/block/entity/BannerBlockEntity;FLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;II)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/block/entity/BannerBlockEntityRenderer;render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IIFLnet/minecraft/client/render/block/entity/model/BannerBlockModel;Lnet/minecraft/client/render/block/entity/model/BannerFlagBlockModel;FLnet/minecraft/util/DyeColor;Lnet/minecraft/component/type/BannerPatternsComponent;)V"), cancellable = true) + private void injectRender2(BannerBlockEntity bannerBlockEntity, float tickDelta, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, int overlay, CallbackInfo ci, + @Local(ordinal = 1) float rotation, @Local BannerBlockModel bannerBlockModel) { + if (Modules.get().get(NoRender.class).getBannerRenderMode() == NoRender.BannerRenderMode.Pillar) { + renderPillar(matrixStack, vertexConsumerProvider, light, overlay, rotation, bannerBlockModel); + ci.cancel(); + } } @Unique - private void renderCrossbar(BannerBlockEntity bannerBlockEntity, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, int j) { - matrixStack.push(); - BlockState blockState = bannerBlockEntity.getCachedState(); - matrixStack.translate(0.5D, -0.1666666716337204D, 0.5D); - float h = -blockState.get(WallBannerBlock.FACING).asRotation(); - matrixStack.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(h)); - matrixStack.translate(0.0D, -0.3125D, -0.4375D); - matrixStack.push(); - matrixStack.scale(0.6666667F, -0.6666667F, -0.6666667F); - VertexConsumer vertexConsumer = ModelBaker.BANNER_BASE.getVertexConsumer(vertexConsumerProvider, RenderLayer::getEntitySolid); - this.crossbar.render(matrixStack, vertexConsumer, i, j); - matrixStack.pop(); - matrixStack.pop(); + private static void renderPillar(MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, float rotation, BannerBlockModel model) { + matrices.push(); + matrices.translate(0.5F, 0.0F, 0.5F); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(rotation)); + matrices.scale(0.6666667F, -0.6666667F, -0.6666667F); + model.render(matrices, ModelBaker.BANNER_BASE.getVertexConsumer(vertexConsumers, RenderLayer::getEntitySolid), light, overlay); + matrices.pop(); } - } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockColorsMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockColorsMixin.java new file mode 100644 index 0000000000..ede07e615e --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockColorsMixin.java @@ -0,0 +1,58 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.world.Ambience; +import net.minecraft.client.color.block.BlockColorProvider; +import net.minecraft.client.color.block.BlockColors; +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.ModifyArg; + +@Mixin(BlockColors.class) +public abstract class BlockColorsMixin { + // Ambience - Custom Foliage Color + + @ModifyArg( + method = "create", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/color/block/BlockColors;registerColorProvider(Lnet/minecraft/client/color/block/BlockColorProvider;[Lnet/minecraft/block/Block;)V", + ordinal = 3 + ), + index = 0 + ) + private static BlockColorProvider modifySpruceLeavesColor(BlockColorProvider provider) { + return (state, world, pos, tintIndex) -> getModifiedColor(-10380959); + } + + @ModifyArg( + method = "create", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/color/block/BlockColors;registerColorProvider(Lnet/minecraft/client/color/block/BlockColorProvider;[Lnet/minecraft/block/Block;)V", + ordinal = 4 + ), + index = 0 + ) + private static BlockColorProvider modifyBirchLeavesColor(BlockColorProvider provider) { + return (state, world, pos, tintIndex) -> getModifiedColor(-8345771); + } + + @Unique + private static int getModifiedColor(int original) { + if (Modules.get() == null) return original; + + Ambience ambience = Modules.get().get(Ambience.class); + if (ambience.isActive() && ambience.customFoliageColor.get()) { + return ambience.foliageColor.get().getPacked(); + } + + return original; + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientWorldMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientWorldMixin.java index 106d8a1d4b..e47dd8e1b0 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientWorldMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ClientWorldMixin.java @@ -60,11 +60,11 @@ private void onGetSkyProperties(CallbackInfoReturnable info) { * @author Walaryne */ @Inject(method = "getSkyColor", at = @At("HEAD"), cancellable = true) - private void onGetSkyColor(Vec3d cameraPos, float tickDelta, CallbackInfoReturnable info) { + private void onGetSkyColor(Vec3d cameraPos, float tickDelta, CallbackInfoReturnable cir) { Ambience ambience = Modules.get().get(Ambience.class); if (ambience.isActive() && ambience.customSkyColor.get()) { - info.setReturnValue(ambience.skyColor().getVec3d()); + cir.setReturnValue(ambience.skyColor().getPacked()); } } @@ -72,11 +72,11 @@ private void onGetSkyColor(Vec3d cameraPos, float tickDelta, CallbackInfoReturna * @author Walaryne */ @Inject(method = "getCloudsColor", at = @At("HEAD"), cancellable = true) - private void onGetCloudsColor(float tickDelta, CallbackInfoReturnable info) { + private void onGetCloudsColor(float tickDelta, CallbackInfoReturnable info) { Ambience ambience = Modules.get().get(Ambience.class); if (ambience.isActive() && ambience.customCloudColor.get()) { - info.setReturnValue(ambience.cloudColor.get().getVec3d()); + info.setReturnValue(ambience.cloudColor.get().getPacked()); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/CompassAnglePredicateProviderMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/CompassStateMixin.java similarity index 82% rename from src/main/java/meteordevelopment/meteorclient/mixin/CompassAnglePredicateProviderMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/CompassStateMixin.java index a08ed2263d..8554b393db 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/CompassAnglePredicateProviderMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/CompassStateMixin.java @@ -9,8 +9,8 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.Freecam; -import net.minecraft.client.item.CompassAnglePredicateProvider; import net.minecraft.client.render.Camera; +import net.minecraft.client.render.item.property.numeric.CompassState; import net.minecraft.entity.Entity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; @@ -19,16 +19,16 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; -@Mixin(CompassAnglePredicateProvider.class) -public abstract class CompassAnglePredicateProviderMixin { +@Mixin(CompassState.class) +public abstract class CompassStateMixin { @ModifyExpressionValue(method = "getBodyYaw", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getBodyYaw()F")) - private float callLivingEntityGetYaw(float original) { + private static float callLivingEntityGetYaw(float original) { if (Modules.get().isActive(Freecam.class)) return mc.gameRenderer.getCamera().getYaw(); return original; } @ModifyReturnValue(method = "getAngleTo(Lnet/minecraft/entity/Entity;Lnet/minecraft/util/math/BlockPos;)D", at = @At("RETURN")) - private double modifyGetAngleTo(double original, Entity entity, BlockPos pos) { + private static double modifyGetAngleTo(double original, Entity entity, BlockPos pos) { if (Modules.get().isActive(Freecam.class)) { Vec3d vec3d = Vec3d.ofCenter(pos); Camera camera = mc.gameRenderer.getCamera(); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/FireworksSparkParticleSubMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/FireworksSparkParticleSubMixin.java index 4f99f06fc0..388a02cbdf 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/FireworksSparkParticleSubMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/FireworksSparkParticleSubMixin.java @@ -17,7 +17,7 @@ @Mixin(value = {FireworksSparkParticle.Explosion.class, FireworksSparkParticle.Flash.class}) public abstract class FireworksSparkParticleSubMixin { - @Inject(method = "buildGeometry", at = @At("HEAD"), cancellable = true) + @Inject(method = "render", at = @At("HEAD"), cancellable = true) private void buildExplosionGeometry(VertexConsumer vertexConsumer, Camera camera, float tickDelta, CallbackInfo info) { if (Modules.get().get(NoRender.class).noFireworkExplosions()) info.cancel(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/FoliageColorsMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/FoliageColorsMixin.java deleted file mode 100644 index 86fe267126..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/FoliageColorsMixin.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import com.llamalad7.mixinextras.injector.ModifyReturnValue; -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.systems.modules.world.Ambience; -import net.minecraft.world.biome.FoliageColors; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(FoliageColors.class) -public abstract class FoliageColorsMixin { - - @ModifyReturnValue(method = "getBirchColor", at = @At("RETURN")) - private static int onGetBirchColor(int original) { - return getModifiedColor(original); - } - - @ModifyReturnValue(method = "getSpruceColor", at = @At("RETURN")) - private static int onGetSpruceColor(int original) { - return getModifiedColor(original); - } - - @ModifyReturnValue(method = "getMangroveColor", at = @At("RETURN")) - private static int onGetMangroveColor(int original) { - return getModifiedColor(original); - } - - @Unique - private static int getModifiedColor(int original) { - if (Modules.get() == null) return original; - - Ambience ambience = Modules.get().get(Ambience.class); - if (ambience.isActive() && ambience.customFoliageColor.get()) { - return ambience.foliageColor.get().getPacked(); - } - - return original; - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/HeldItemRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/HeldItemRendererMixin.java index 333aa7d0b9..f533c600ec 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/HeldItemRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/HeldItemRendererMixin.java @@ -58,9 +58,9 @@ private float modifySwing(float swingProgress) { return swingProgress; } - @Redirect(method = "updateHeldItems", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;areEqual(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z")) - private boolean redirectSwapping(ItemStack left, ItemStack right) { - return showSwapping(left, right); + @Redirect(method = "updateHeldItems", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/item/HeldItemRenderer;shouldSkipHandAnimationOnSwap(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z")) + private boolean redirectSwapping(HeldItemRenderer instance, ItemStack from, ItemStack to) { + return skipSwapAnimation(from, to); } @ModifyArg(method = "updateHeldItems", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(FFF)F", ordinal = 2), index = 0) @@ -68,12 +68,12 @@ private float modifyEquipProgressMainhand(float value) { float f = mc.player.getAttackCooldownProgress(1f); float modified = Modules.get().get(HandView.class).oldAnimations() ? 1 : f * f * f; - return (showSwapping(mainHand, mc.player.getMainHandStack()) ? modified : 0) - equipProgressMainHand; + return (skipSwapAnimation(mainHand, mc.player.getMainHandStack()) ? modified : 0) - equipProgressMainHand; } @ModifyArg(method = "updateHeldItems", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(FFF)F", ordinal = 3), index = 0) private float modifyEquipProgressOffhand(float value) { - return (showSwapping(offHand, mc.player.getOffHandStack()) ? 1 : 0) - equipProgressOffHand; + return (skipSwapAnimation(offHand, mc.player.getOffHandStack()) ? 1 : 0) - equipProgressOffHand; } @Inject(method = "renderFirstPersonItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/item/HeldItemRenderer;renderItem(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V")) @@ -91,9 +91,8 @@ private void cancelTransformations(MatrixStack matrices, float tickDelta, Arm ar if (Modules.get().get(HandView.class).disableFoodAnimation()) ci.cancel(); } - @Unique - private boolean showSwapping(ItemStack stack1, ItemStack stack2) { + private boolean skipSwapAnimation(ItemStack stack1, ItemStack stack2) { return !Modules.get().get(HandView.class).showSwapping() || ItemStack.areEqual(stack1, stack2); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/InGameOverlayRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/InGameOverlayRendererMixin.java index 402975e34d..c060488a1b 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/InGameOverlayRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/InGameOverlayRendererMixin.java @@ -9,6 +9,7 @@ import meteordevelopment.meteorclient.systems.modules.render.NoRender; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.hud.InGameOverlayRenderer; +import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.texture.Sprite; import net.minecraft.client.util.math.MatrixStack; import org.spongepowered.asm.mixin.Mixin; @@ -19,17 +20,17 @@ @Mixin(InGameOverlayRenderer.class) public abstract class InGameOverlayRendererMixin { @Inject(method = "renderFireOverlay", at = @At("HEAD"), cancellable = true) - private static void onRenderFireOverlay(MinecraftClient minecraftClient, MatrixStack matrixStack, CallbackInfo info) { - if (Modules.get().get(NoRender.class).noFireOverlay()) info.cancel(); + private static void onRenderFireOverlay(MatrixStack matrices, VertexConsumerProvider vertexConsumers, CallbackInfo ci) { + if (Modules.get().get(NoRender.class).noFireOverlay()) ci.cancel(); } @Inject(method = "renderUnderwaterOverlay", at = @At("HEAD"), cancellable = true) - private static void onRenderUnderwaterOverlay(MinecraftClient minecraftClient, MatrixStack matrixStack, CallbackInfo info) { - if (Modules.get().get(NoRender.class).noLiquidOverlay()) info.cancel(); + private static void onRenderUnderwaterOverlay(MinecraftClient client, MatrixStack matrices, VertexConsumerProvider vertexConsumers, CallbackInfo ci) { + if (Modules.get().get(NoRender.class).noLiquidOverlay()) ci.cancel(); } @Inject(method = "renderInWallOverlay", at = @At("HEAD"), cancellable = true) - private static void render(Sprite sprite, MatrixStack matrices, CallbackInfo info) { - if (Modules.get().get(NoRender.class).noInWallOverlay()) info.cancel(); + private static void render(Sprite sprite, MatrixStack matrices, VertexConsumerProvider vertexConsumers, CallbackInfo ci) { + if (Modules.get().get(NoRender.class).noInWallOverlay()) ci.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ItemEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemEntityRendererMixin.java index bcb26058d6..e770a44e56 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ItemEntityRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemEntityRendererMixin.java @@ -7,10 +7,10 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.render.RenderItemEntityEvent; +import net.minecraft.client.item.ItemModelManager; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.ItemEntityRenderer; import net.minecraft.client.render.entity.state.ItemEntityRenderState; -import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.client.util.math.MatrixStack; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -25,11 +25,11 @@ public abstract class ItemEntityRendererMixin { @Shadow @Final - private ItemRenderer itemRenderer; + private ItemModelManager itemModelManager; @Inject(method = "render(Lnet/minecraft/client/render/entity/state/ItemEntityRenderState;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At("HEAD"), cancellable = true) private void renderStack(ItemEntityRenderState itemEntityRenderState, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, CallbackInfo ci) { - RenderItemEntityEvent event = MeteorClient.EVENT_BUS.post(RenderItemEntityEvent.get(itemEntityRenderState, mc.getRenderTickCounter().getTickDelta(true), matrixStack, vertexConsumerProvider, i, this.itemRenderer)); + RenderItemEntityEvent event = MeteorClient.EVENT_BUS.post(RenderItemEntityEvent.get(itemEntityRenderState, mc.getRenderTickCounter().getTickDelta(true), matrixStack, vertexConsumerProvider, i, this.itemModelManager)); if (event.isCancelled()) ci.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ItemRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemRendererMixin.java index 33375c89b5..94f7b97f4a 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ItemRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemRendererMixin.java @@ -7,12 +7,12 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.render.RenderLayers; +import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.item.ItemRenderState; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.client.render.model.BakedModel; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.item.ItemStack; import net.minecraft.item.ModelTransformationMode; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -22,14 +22,14 @@ @Mixin(ItemRenderer.class) public abstract class ItemRendererMixin { @ModifyArgs( - method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ModelTransformationMode;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;Z)V", + method = "renderItem(Lnet/minecraft/item/ModelTransformationMode;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;II[ILnet/minecraft/client/render/model/BakedModel;Lnet/minecraft/client/render/RenderLayer;Lnet/minecraft/client/render/item/ItemRenderState$Glint;)V", at = @At( value = "INVOKE", - target = "Lnet/minecraft/client/render/item/ItemRenderer;renderBakedItemModel(Lnet/minecraft/client/render/model/BakedModel;Lnet/minecraft/item/ItemStack;IILnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;)V" + target = "Lnet/minecraft/client/render/item/ItemRenderer;renderBakedItemModel(Lnet/minecraft/client/render/model/BakedModel;[IIILnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;)V" ) ) - private void modifyEnchant(Args args, ItemStack stack, ModelTransformationMode transformationMode, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, BakedModel model, boolean useInventoryModel) { + private static void modifyEnchant(Args args, ModelTransformationMode transformationMode, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, int[] tints, BakedModel model, RenderLayer layer, ItemRenderState.Glint glint) { if (!Modules.get().get(NoRender.class).noEnchantGlint()) return; - args.set(5, vertexConsumers.getBuffer(RenderLayers.getItemLayer(stack))); + args.set(5, vertexConsumers.getBuffer(layer)); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/KeyboardInputMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/KeyboardInputMixin.java index 9ad5146b79..1c7ca35e51 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/KeyboardInputMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/KeyboardInputMixin.java @@ -18,7 +18,7 @@ @Mixin(KeyboardInput.class) public abstract class KeyboardInputMixin extends Input { @Inject(method = "tick", at = @At("TAIL")) - private void isPressed(boolean slowDown, float f, CallbackInfo ci) { + private void isPressed(CallbackInfo ci) { if (Modules.get().get(Sneak.class).doVanilla()) playerInput = new PlayerInput( playerInput.forward(), playerInput.backward(), diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/SkyRenderingMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/SkyRenderingMixin.java deleted file mode 100644 index b155888d17..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/SkyRenderingMixin.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.systems.modules.world.Ambience; -import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.render.*; -import net.minecraft.client.util.math.MatrixStack; -import org.joml.Matrix4f; -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(SkyRendering.class) -public abstract class SkyRenderingMixin { - // Ambience - - @Inject(method = "renderEndSky", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/BufferRenderer;drawWithGlobalProgram(Lnet/minecraft/client/render/BuiltBuffer;)V")) - private void onRenderEndSkyDraw(MatrixStack matrices, CallbackInfo info) { - Ambience ambience = Modules.get().get(Ambience.class); - - if (ambience.isActive() && ambience.endSky.get() && ambience.customSkyColor.get()) { - Color customEndSkyColor = ambience.skyColor(); - - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder bufferBuilder = tessellator.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR); - Matrix4f matrix4f = matrices.peek().getPositionMatrix(); - - bufferBuilder.vertex(matrix4f, -100.0F, -100.0F, -100.0F).texture(0.0F, 0.0F).color(customEndSkyColor.r, customEndSkyColor.g, customEndSkyColor.b, 255); - bufferBuilder.vertex(matrix4f, -100.0F, -100.0F, 100.0F).texture(0.0F, 16.0F).color(customEndSkyColor.r, customEndSkyColor.g, customEndSkyColor.b, 255); - bufferBuilder.vertex(matrix4f, 100.0F, -100.0F, 100.0F).texture(16.0F, 16.0F).color(customEndSkyColor.r, customEndSkyColor.g, customEndSkyColor.b, 255); - bufferBuilder.vertex(matrix4f, 100.0F, -100.0F, -100.0F).texture(16.0F, 0.0F).color(customEndSkyColor.r, customEndSkyColor.g, customEndSkyColor.b, 255); - } - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/TooltipComponentMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/TooltipComponentMixin.java index 5d8caa073d..dc4379d0ca 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/TooltipComponentMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/TooltipComponentMixin.java @@ -13,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(targets = "net/minecraft/client/gui/tooltip/TooltipComponent") +@Mixin(TooltipComponent.class) public interface TooltipComponentMixin { @Inject(method = "of(Lnet/minecraft/item/tooltip/TooltipData;)Lnet/minecraft/client/gui/tooltip/TooltipComponent;", at = @At("HEAD"), cancellable = true) private static void shortcutMeteorTooltipData(TooltipData tooltipData, CallbackInfoReturnable cir) { diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/WorldRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/WorldRendererMixin.java index a76129b6e6..a47d323891 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/WorldRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/WorldRendererMixin.java @@ -65,7 +65,7 @@ private boolean renderSetupTerrainModifyArg(boolean spectator) { // No Render @Inject(method = "renderWeather", at = @At("HEAD"), cancellable = true) - private void onRenderWeather(FrameGraphBuilder frameGraphBuilder, LightmapTextureManager lightmapTextureManager, Vec3d pos, float tickDelta, Fog fog, CallbackInfo ci) { + private void onRenderWeather(FrameGraphBuilder frameGraphBuilder, Vec3d pos, float tickDelta, Fog fog, CallbackInfo ci) { if (Modules.get().get(NoRender.class).noWeather()) ci.cancel(); } @@ -77,7 +77,7 @@ private void hasBlindnessOrDarkness(Camera camera, CallbackInfoReturnable 0) { + if (j > 0) { float x = (random.nextFloat() * 2 - 1) * 0.25f; float z = (random.nextFloat() * 2 - 1) * 0.25f; translate(matrices, info, x, 0, z); } - event.itemRenderer.renderItem(itemStack, ModelTransformationMode.GROUND, false, matrices, event.vertexConsumerProvider, event.light, OverlayTexture.DEFAULT_UV, model); + event.renderState.itemRenderState.render(matrices, event.vertexConsumerProvider, event.light, OverlayTexture.DEFAULT_UV); matrices.pop(); @@ -109,7 +111,7 @@ private void renderItem(RenderItemEntityEvent event, MatrixStack matrices, ItemS translate(matrices, info, 0, y, 0); } - renderingItem = false; + skipTransformation = false; } private void translate(MatrixStack matrices, ModelInfo info, float x, float y, float z) { @@ -122,20 +124,7 @@ private void translate(MatrixStack matrices, ModelInfo info, float x, float y, f matrices.translate(x, y, z); } - private int getRenderedCount(ItemStack stack) { - int i = 1; - - if (stack.getCount() > 48) i = 5; - else if (stack.getCount() > 32) i = 4; - else if (stack.getCount() > 16) i = 3; - else if (stack.getCount() > 1) i = 2; - - return i; - } - - private void applyTransformation(MatrixStack matrices, BakedModel model) { - Transformation transformation = model.getTransformation().ground; - + private void applyTransformation(MatrixStack matrices, Transformation transformation) { float prevY = transformation.translation.y; transformation.translation.y = 0; @@ -150,18 +139,7 @@ private void offsetInWater(MatrixStack matrices, ItemEntity entity) { } } - private void preventZFighting(MatrixStack matrices, ItemEntity entity) { - float offset = 0.0001f; - - float distance = (float) mc.gameRenderer.getCamera().getPos().distanceTo(entity.getPos()); - offset = Math.min(offset * Math.max(1, distance), 0.01f); // Ensure distance is at least 1 and that final offset is not bigger than 0.01 - - matrices.translate(0, offset, 0); - } - private ModelInfo getInfo(BakedModel model) { - Random random = Random.createLocal(); - float minX = Float.MAX_VALUE, maxX = Float.MIN_VALUE; float minY = Float.MAX_VALUE, maxY = Float.MIN_VALUE; float minZ = Float.MAX_VALUE, maxZ = Float.MIN_VALUE; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Collisions.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Collisions.java index 8d4b50bbe9..9a72435004 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Collisions.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/world/Collisions.java @@ -84,7 +84,7 @@ private void onPlayerMove(PlayerMoveEvent event) { private void onPacketSend(PacketEvent.Send event) { if (!unloadedChunks.get()) return; if (event.packet instanceof VehicleMoveC2SPacket packet) { - if (!mc.world.getChunkManager().isChunkLoaded((int) packet.getX() >> 4, (int) packet.getZ() >> 4)) { + if (!mc.world.getChunkManager().isChunkLoaded((int) packet.position().getX() >> 4, (int) packet.position().getZ() >> 4)) { mc.player.getVehicle().updatePosition(mc.player.getVehicle().prevX, mc.player.getVehicle().prevY, mc.player.getVehicle().prevZ); event.cancel(); } diff --git a/src/main/java/meteordevelopment/meteorclient/utils/files/StreamUtils.java b/src/main/java/meteordevelopment/meteorclient/utils/files/StreamUtils.java index d1e869da8e..776a368111 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/files/StreamUtils.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/files/StreamUtils.java @@ -19,7 +19,7 @@ public static void copy(File from, File to) { OutputStream out = new FileOutputStream(to)) { in.transferTo(out); } catch (IOException e) { - MeteorClient.LOG.error("Error copying from file '%s' to file '%s'.".formatted(from.getName(), to.getName()), e); + MeteorClient.LOG.error("Error copying from file '{}' to file '{}'.", from.getName(), to.getName(), e); } } diff --git a/src/main/java/meteordevelopment/meteorclient/utils/network/PacketUtils.java b/src/main/java/meteordevelopment/meteorclient/utils/network/PacketUtils.java index dfd7268f60..9f52333389 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/network/PacketUtils.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/network/PacketUtils.java @@ -31,433 +31,437 @@ public class PacketUtils { private static final Map>> C2S_PACKETS_R = new Object2ReferenceOpenHashMap<>(); static { - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.ClientStatusC2SPacket.class, "ClientStatusC2SPacket"); - C2S_PACKETS_R.put("ClientStatusC2SPacket", net.minecraft.network.packet.c2s.play.ClientStatusC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket.class, "PlayerInteractItemC2SPacket"); - C2S_PACKETS_R.put("PlayerInteractItemC2SPacket", net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.login.EnterConfigurationC2SPacket.class, "EnterConfigurationC2SPacket"); - C2S_PACKETS_R.put("EnterConfigurationC2SPacket", net.minecraft.network.packet.c2s.login.EnterConfigurationC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.SelectMerchantTradeC2SPacket.class, "SelectMerchantTradeC2SPacket"); - C2S_PACKETS_R.put("SelectMerchantTradeC2SPacket", net.minecraft.network.packet.c2s.play.SelectMerchantTradeC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket.class, "PlayerActionC2SPacket"); - C2S_PACKETS_R.put("PlayerActionC2SPacket", net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.CommandExecutionC2SPacket.class, "CommandExecutionC2SPacket"); - C2S_PACKETS_R.put("CommandExecutionC2SPacket", net.minecraft.network.packet.c2s.play.CommandExecutionC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.RenameItemC2SPacket.class, "RenameItemC2SPacket"); - C2S_PACKETS_R.put("RenameItemC2SPacket", net.minecraft.network.packet.c2s.play.RenameItemC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.login.LoginHelloC2SPacket.class, "LoginHelloC2SPacket"); - C2S_PACKETS_R.put("LoginHelloC2SPacket", net.minecraft.network.packet.c2s.login.LoginHelloC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket.class, "PlayerInteractBlockC2SPacket"); - C2S_PACKETS_R.put("PlayerInteractBlockC2SPacket", net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.QueryBlockNbtC2SPacket.class, "QueryBlockNbtC2SPacket"); - C2S_PACKETS_R.put("QueryBlockNbtC2SPacket", net.minecraft.network.packet.c2s.play.QueryBlockNbtC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket.class, "PlayerInteractEntityC2SPacket"); - C2S_PACKETS_R.put("PlayerInteractEntityC2SPacket", net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.RequestCommandCompletionsC2SPacket.class, "RequestCommandCompletionsC2SPacket"); - C2S_PACKETS_R.put("RequestCommandCompletionsC2SPacket", net.minecraft.network.packet.c2s.play.RequestCommandCompletionsC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdatePlayerAbilitiesC2SPacket.class, "UpdatePlayerAbilitiesC2SPacket"); - C2S_PACKETS_R.put("UpdatePlayerAbilitiesC2SPacket", net.minecraft.network.packet.c2s.play.UpdatePlayerAbilitiesC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.AcknowledgeChunksC2SPacket.class, "AcknowledgeChunksC2SPacket"); + C2S_PACKETS_R.put("AcknowledgeChunksC2SPacket", net.minecraft.network.packet.c2s.play.AcknowledgeChunksC2SPacket.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.AcknowledgeReconfigurationC2SPacket.class, "AcknowledgeReconfigurationC2SPacket"); C2S_PACKETS_R.put("AcknowledgeReconfigurationC2SPacket", net.minecraft.network.packet.c2s.play.AcknowledgeReconfigurationC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.query.QueryRequestC2SPacket.class, "QueryRequestC2SPacket"); - C2S_PACKETS_R.put("QueryRequestC2SPacket", net.minecraft.network.packet.c2s.query.QueryRequestC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateCommandBlockC2SPacket.class, "UpdateCommandBlockC2SPacket"); - C2S_PACKETS_R.put("UpdateCommandBlockC2SPacket", net.minecraft.network.packet.c2s.play.UpdateCommandBlockC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.HandSwingC2SPacket.class, "HandSwingC2SPacket"); - C2S_PACKETS_R.put("HandSwingC2SPacket", net.minecraft.network.packet.c2s.play.HandSwingC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.BundleItemSelectedC2SPacket.class, "BundleItemSelectedC2SPacket"); - C2S_PACKETS_R.put("BundleItemSelectedC2SPacket", net.minecraft.network.packet.c2s.play.BundleItemSelectedC2SPacket.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.AdvancementTabC2SPacket.class, "AdvancementTabC2SPacket"); C2S_PACKETS_R.put("AdvancementTabC2SPacket", net.minecraft.network.packet.c2s.play.AdvancementTabC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.ClickSlotC2SPacket.class, "ClickSlotC2SPacket"); - C2S_PACKETS_R.put("ClickSlotC2SPacket", net.minecraft.network.packet.c2s.play.ClickSlotC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.AcknowledgeChunksC2SPacket.class, "AcknowledgeChunksC2SPacket"); - C2S_PACKETS_R.put("AcknowledgeChunksC2SPacket", net.minecraft.network.packet.c2s.play.AcknowledgeChunksC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.SpectatorTeleportC2SPacket.class, "SpectatorTeleportC2SPacket"); - C2S_PACKETS_R.put("SpectatorTeleportC2SPacket", net.minecraft.network.packet.c2s.play.SpectatorTeleportC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.login.LoginKeyC2SPacket.class, "LoginKeyC2SPacket"); - C2S_PACKETS_R.put("LoginKeyC2SPacket", net.minecraft.network.packet.c2s.login.LoginKeyC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateDifficultyLockC2SPacket.class, "UpdateDifficultyLockC2SPacket"); - C2S_PACKETS_R.put("UpdateDifficultyLockC2SPacket", net.minecraft.network.packet.c2s.play.UpdateDifficultyLockC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.JigsawGeneratingC2SPacket.class, "JigsawGeneratingC2SPacket"); - C2S_PACKETS_R.put("JigsawGeneratingC2SPacket", net.minecraft.network.packet.c2s.play.JigsawGeneratingC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.QueryEntityNbtC2SPacket.class, "QueryEntityNbtC2SPacket"); - C2S_PACKETS_R.put("QueryEntityNbtC2SPacket", net.minecraft.network.packet.c2s.play.QueryEntityNbtC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket.class, "UpdateSelectedSlotC2SPacket"); - C2S_PACKETS_R.put("UpdateSelectedSlotC2SPacket", net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.RecipeCategoryOptionsC2SPacket.class, "RecipeCategoryOptionsC2SPacket"); - C2S_PACKETS_R.put("RecipeCategoryOptionsC2SPacket", net.minecraft.network.packet.c2s.play.RecipeCategoryOptionsC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.common.ResourcePackStatusC2SPacket.class, "ResourcePackStatusC2SPacket"); - C2S_PACKETS_R.put("ResourcePackStatusC2SPacket", net.minecraft.network.packet.c2s.common.ResourcePackStatusC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.class, "PlayerMoveC2SPacket"); - C2S_PACKETS_R.put("PlayerMoveC2SPacket", net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.common.ClientOptionsC2SPacket.class, "ClientOptionsC2SPacket"); - C2S_PACKETS_R.put("ClientOptionsC2SPacket", net.minecraft.network.packet.c2s.common.ClientOptionsC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.common.CustomPayloadC2SPacket.class, "CustomPayloadC2SPacket"); - C2S_PACKETS_R.put("CustomPayloadC2SPacket", net.minecraft.network.packet.c2s.common.CustomPayloadC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PickFromInventoryC2SPacket.class, "PickFromInventoryC2SPacket"); - C2S_PACKETS_R.put("PickFromInventoryC2SPacket", net.minecraft.network.packet.c2s.play.PickFromInventoryC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerSessionC2SPacket.class, "PlayerSessionC2SPacket"); - C2S_PACKETS_R.put("PlayerSessionC2SPacket", net.minecraft.network.packet.c2s.play.PlayerSessionC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.CloseHandledScreenC2SPacket.class, "CloseHandledScreenC2SPacket"); - C2S_PACKETS_R.put("CloseHandledScreenC2SPacket", net.minecraft.network.packet.c2s.play.CloseHandledScreenC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.ChatCommandSignedC2SPacket.class, "ChatCommandSignedC2SPacket"); - C2S_PACKETS_R.put("ChatCommandSignedC2SPacket", net.minecraft.network.packet.c2s.play.ChatCommandSignedC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.config.ReadyC2SPacket.class, "ReadyC2SPacket"); - C2S_PACKETS_R.put("ReadyC2SPacket", net.minecraft.network.packet.c2s.config.ReadyC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.SlotChangedStateC2SPacket.class, "SlotChangedStateC2SPacket"); - C2S_PACKETS_R.put("SlotChangedStateC2SPacket", net.minecraft.network.packet.c2s.play.SlotChangedStateC2SPacket.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.BoatPaddleStateC2SPacket.class, "BoatPaddleStateC2SPacket"); C2S_PACKETS_R.put("BoatPaddleStateC2SPacket", net.minecraft.network.packet.c2s.play.BoatPaddleStateC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.BookUpdateC2SPacket.class, "BookUpdateC2SPacket"); + C2S_PACKETS_R.put("BookUpdateC2SPacket", net.minecraft.network.packet.c2s.play.BookUpdateC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.BundleItemSelectedC2SPacket.class, "BundleItemSelectedC2SPacket"); + C2S_PACKETS_R.put("BundleItemSelectedC2SPacket", net.minecraft.network.packet.c2s.play.BundleItemSelectedC2SPacket.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.ButtonClickC2SPacket.class, "ButtonClickC2SPacket"); C2S_PACKETS_R.put("ButtonClickC2SPacket", net.minecraft.network.packet.c2s.play.ButtonClickC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.config.SelectKnownPacksC2SPacket.class, "SelectKnownPacksC2SPacket"); - C2S_PACKETS_R.put("SelectKnownPacksC2SPacket", net.minecraft.network.packet.c2s.config.SelectKnownPacksC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.ChatCommandSignedC2SPacket.class, "ChatCommandSignedC2SPacket"); + C2S_PACKETS_R.put("ChatCommandSignedC2SPacket", net.minecraft.network.packet.c2s.play.ChatCommandSignedC2SPacket.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket.class, "ChatMessageC2SPacket"); C2S_PACKETS_R.put("ChatMessageC2SPacket", net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateBeaconC2SPacket.class, "UpdateBeaconC2SPacket"); - C2S_PACKETS_R.put("UpdateBeaconC2SPacket", net.minecraft.network.packet.c2s.play.UpdateBeaconC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateSignC2SPacket.class, "UpdateSignC2SPacket"); - C2S_PACKETS_R.put("UpdateSignC2SPacket", net.minecraft.network.packet.c2s.play.UpdateSignC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.TeleportConfirmC2SPacket.class, "TeleportConfirmC2SPacket"); - C2S_PACKETS_R.put("TeleportConfirmC2SPacket", net.minecraft.network.packet.c2s.play.TeleportConfirmC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateStructureBlockC2SPacket.class, "UpdateStructureBlockC2SPacket"); - C2S_PACKETS_R.put("UpdateStructureBlockC2SPacket", net.minecraft.network.packet.c2s.play.UpdateStructureBlockC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateCommandBlockMinecartC2SPacket.class, "UpdateCommandBlockMinecartC2SPacket"); - C2S_PACKETS_R.put("UpdateCommandBlockMinecartC2SPacket", net.minecraft.network.packet.c2s.play.UpdateCommandBlockMinecartC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.common.CommonPongC2SPacket.class, "CommonPongC2SPacket"); - C2S_PACKETS_R.put("CommonPongC2SPacket", net.minecraft.network.packet.c2s.common.CommonPongC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerInputC2SPacket.class, "PlayerInputC2SPacket"); - C2S_PACKETS_R.put("PlayerInputC2SPacket", net.minecraft.network.packet.c2s.play.PlayerInputC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.ClickSlotC2SPacket.class, "ClickSlotC2SPacket"); + C2S_PACKETS_R.put("ClickSlotC2SPacket", net.minecraft.network.packet.c2s.play.ClickSlotC2SPacket.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket.class, "ClientCommandC2SPacket"); C2S_PACKETS_R.put("ClientCommandC2SPacket", net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateJigsawC2SPacket.class, "UpdateJigsawC2SPacket"); - C2S_PACKETS_R.put("UpdateJigsawC2SPacket", net.minecraft.network.packet.c2s.play.UpdateJigsawC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.query.QueryPingC2SPacket.class, "QueryPingC2SPacket"); - C2S_PACKETS_R.put("QueryPingC2SPacket", net.minecraft.network.packet.c2s.query.QueryPingC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.common.ClientOptionsC2SPacket.class, "ClientOptionsC2SPacket"); + C2S_PACKETS_R.put("ClientOptionsC2SPacket", net.minecraft.network.packet.c2s.common.ClientOptionsC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.ClientStatusC2SPacket.class, "ClientStatusC2SPacket"); + C2S_PACKETS_R.put("ClientStatusC2SPacket", net.minecraft.network.packet.c2s.play.ClientStatusC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.ClientTickEndC2SPacket.class, "ClientTickEndC2SPacket"); + C2S_PACKETS_R.put("ClientTickEndC2SPacket", net.minecraft.network.packet.c2s.play.ClientTickEndC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.CloseHandledScreenC2SPacket.class, "CloseHandledScreenC2SPacket"); + C2S_PACKETS_R.put("CloseHandledScreenC2SPacket", net.minecraft.network.packet.c2s.play.CloseHandledScreenC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.CommandExecutionC2SPacket.class, "CommandExecutionC2SPacket"); + C2S_PACKETS_R.put("CommandExecutionC2SPacket", net.minecraft.network.packet.c2s.play.CommandExecutionC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.common.CommonPongC2SPacket.class, "CommonPongC2SPacket"); + C2S_PACKETS_R.put("CommonPongC2SPacket", net.minecraft.network.packet.c2s.common.CommonPongC2SPacket.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.common.CookieResponseC2SPacket.class, "CookieResponseC2SPacket"); C2S_PACKETS_R.put("CookieResponseC2SPacket", net.minecraft.network.packet.c2s.common.CookieResponseC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.MessageAcknowledgmentC2SPacket.class, "MessageAcknowledgmentC2SPacket"); - C2S_PACKETS_R.put("MessageAcknowledgmentC2SPacket", net.minecraft.network.packet.c2s.play.MessageAcknowledgmentC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.DebugSampleSubscriptionC2SPacket.class, "DebugSampleSubscriptionC2SPacket"); - C2S_PACKETS_R.put("DebugSampleSubscriptionC2SPacket", net.minecraft.network.packet.c2s.play.DebugSampleSubscriptionC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.common.KeepAliveC2SPacket.class, "KeepAliveC2SPacket"); - C2S_PACKETS_R.put("KeepAliveC2SPacket", net.minecraft.network.packet.c2s.common.KeepAliveC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.CraftRequestC2SPacket.class, "CraftRequestC2SPacket"); + C2S_PACKETS_R.put("CraftRequestC2SPacket", net.minecraft.network.packet.c2s.play.CraftRequestC2SPacket.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.CreativeInventoryActionC2SPacket.class, "CreativeInventoryActionC2SPacket"); C2S_PACKETS_R.put("CreativeInventoryActionC2SPacket", net.minecraft.network.packet.c2s.play.CreativeInventoryActionC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.VehicleMoveC2SPacket.class, "VehicleMoveC2SPacket"); - C2S_PACKETS_R.put("VehicleMoveC2SPacket", net.minecraft.network.packet.c2s.play.VehicleMoveC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.BookUpdateC2SPacket.class, "BookUpdateC2SPacket"); - C2S_PACKETS_R.put("BookUpdateC2SPacket", net.minecraft.network.packet.c2s.play.BookUpdateC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.ClientTickEndC2SPacket.class, "ClientTickEndC2SPacket"); - C2S_PACKETS_R.put("ClientTickEndC2SPacket", net.minecraft.network.packet.c2s.play.ClientTickEndC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.RecipeBookDataC2SPacket.class, "RecipeBookDataC2SPacket"); - C2S_PACKETS_R.put("RecipeBookDataC2SPacket", net.minecraft.network.packet.c2s.play.RecipeBookDataC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.common.CustomPayloadC2SPacket.class, "CustomPayloadC2SPacket"); + C2S_PACKETS_R.put("CustomPayloadC2SPacket", net.minecraft.network.packet.c2s.common.CustomPayloadC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.DebugSampleSubscriptionC2SPacket.class, "DebugSampleSubscriptionC2SPacket"); + C2S_PACKETS_R.put("DebugSampleSubscriptionC2SPacket", net.minecraft.network.packet.c2s.play.DebugSampleSubscriptionC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.login.EnterConfigurationC2SPacket.class, "EnterConfigurationC2SPacket"); + C2S_PACKETS_R.put("EnterConfigurationC2SPacket", net.minecraft.network.packet.c2s.login.EnterConfigurationC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.HandSwingC2SPacket.class, "HandSwingC2SPacket"); + C2S_PACKETS_R.put("HandSwingC2SPacket", net.minecraft.network.packet.c2s.play.HandSwingC2SPacket.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.handshake.HandshakeC2SPacket.class, "HandshakeC2SPacket"); C2S_PACKETS_R.put("HandshakeC2SPacket", net.minecraft.network.packet.c2s.handshake.HandshakeC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.JigsawGeneratingC2SPacket.class, "JigsawGeneratingC2SPacket"); + C2S_PACKETS_R.put("JigsawGeneratingC2SPacket", net.minecraft.network.packet.c2s.play.JigsawGeneratingC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.common.KeepAliveC2SPacket.class, "KeepAliveC2SPacket"); + C2S_PACKETS_R.put("KeepAliveC2SPacket", net.minecraft.network.packet.c2s.common.KeepAliveC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.login.LoginHelloC2SPacket.class, "LoginHelloC2SPacket"); + C2S_PACKETS_R.put("LoginHelloC2SPacket", net.minecraft.network.packet.c2s.login.LoginHelloC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.login.LoginKeyC2SPacket.class, "LoginKeyC2SPacket"); + C2S_PACKETS_R.put("LoginKeyC2SPacket", net.minecraft.network.packet.c2s.login.LoginKeyC2SPacket.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.login.LoginQueryResponseC2SPacket.class, "LoginQueryResponseC2SPacket"); C2S_PACKETS_R.put("LoginQueryResponseC2SPacket", net.minecraft.network.packet.c2s.login.LoginQueryResponseC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateDifficultyC2SPacket.class, "UpdateDifficultyC2SPacket"); - C2S_PACKETS_R.put("UpdateDifficultyC2SPacket", net.minecraft.network.packet.c2s.play.UpdateDifficultyC2SPacket.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.CraftRequestC2SPacket.class, "CraftRequestC2SPacket"); - C2S_PACKETS_R.put("CraftRequestC2SPacket", net.minecraft.network.packet.c2s.play.CraftRequestC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.MessageAcknowledgmentC2SPacket.class, "MessageAcknowledgmentC2SPacket"); + C2S_PACKETS_R.put("MessageAcknowledgmentC2SPacket", net.minecraft.network.packet.c2s.play.MessageAcknowledgmentC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PickItemFromBlockC2SPacket.class, "PickItemFromBlockC2SPacket"); + C2S_PACKETS_R.put("PickItemFromBlockC2SPacket", net.minecraft.network.packet.c2s.play.PickItemFromBlockC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PickItemFromEntityC2SPacket.class, "PickItemFromEntityC2SPacket"); + C2S_PACKETS_R.put("PickItemFromEntityC2SPacket", net.minecraft.network.packet.c2s.play.PickItemFromEntityC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket.class, "PlayerActionC2SPacket"); + C2S_PACKETS_R.put("PlayerActionC2SPacket", net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerInputC2SPacket.class, "PlayerInputC2SPacket"); + C2S_PACKETS_R.put("PlayerInputC2SPacket", net.minecraft.network.packet.c2s.play.PlayerInputC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket.class, "PlayerInteractBlockC2SPacket"); + C2S_PACKETS_R.put("PlayerInteractBlockC2SPacket", net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket.class, "PlayerInteractEntityC2SPacket"); + C2S_PACKETS_R.put("PlayerInteractEntityC2SPacket", net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket.class, "PlayerInteractItemC2SPacket"); + C2S_PACKETS_R.put("PlayerInteractItemC2SPacket", net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerLoadedC2SPacket.class, "PlayerLoadedC2SPacket"); + C2S_PACKETS_R.put("PlayerLoadedC2SPacket", net.minecraft.network.packet.c2s.play.PlayerLoadedC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.class, "PlayerMoveC2SPacket"); + C2S_PACKETS_R.put("PlayerMoveC2SPacket", net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.Full.class, "PlayerMoveC2SPacket.Full"); + C2S_PACKETS_R.put("PlayerMoveC2SPacket.Full", net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.Full.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.LookAndOnGround.class, "PlayerMoveC2SPacket.LookAndOnGround"); C2S_PACKETS_R.put("PlayerMoveC2SPacket.LookAndOnGround", net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.LookAndOnGround.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.OnGroundOnly.class, "PlayerMoveC2SPacket.OnGroundOnly"); C2S_PACKETS_R.put("PlayerMoveC2SPacket.OnGroundOnly", net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.OnGroundOnly.class); - C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.Full.class, "PlayerMoveC2SPacket.Full"); - C2S_PACKETS_R.put("PlayerMoveC2SPacket.Full", net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.Full.class); C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.PositionAndOnGround.class, "PlayerMoveC2SPacket.PositionAndOnGround"); C2S_PACKETS_R.put("PlayerMoveC2SPacket.PositionAndOnGround", net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket.PositionAndOnGround.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.PlayerSessionC2SPacket.class, "PlayerSessionC2SPacket"); + C2S_PACKETS_R.put("PlayerSessionC2SPacket", net.minecraft.network.packet.c2s.play.PlayerSessionC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.QueryBlockNbtC2SPacket.class, "QueryBlockNbtC2SPacket"); + C2S_PACKETS_R.put("QueryBlockNbtC2SPacket", net.minecraft.network.packet.c2s.play.QueryBlockNbtC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.QueryEntityNbtC2SPacket.class, "QueryEntityNbtC2SPacket"); + C2S_PACKETS_R.put("QueryEntityNbtC2SPacket", net.minecraft.network.packet.c2s.play.QueryEntityNbtC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.query.QueryPingC2SPacket.class, "QueryPingC2SPacket"); + C2S_PACKETS_R.put("QueryPingC2SPacket", net.minecraft.network.packet.c2s.query.QueryPingC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.query.QueryRequestC2SPacket.class, "QueryRequestC2SPacket"); + C2S_PACKETS_R.put("QueryRequestC2SPacket", net.minecraft.network.packet.c2s.query.QueryRequestC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.config.ReadyC2SPacket.class, "ReadyC2SPacket"); + C2S_PACKETS_R.put("ReadyC2SPacket", net.minecraft.network.packet.c2s.config.ReadyC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.RecipeBookDataC2SPacket.class, "RecipeBookDataC2SPacket"); + C2S_PACKETS_R.put("RecipeBookDataC2SPacket", net.minecraft.network.packet.c2s.play.RecipeBookDataC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.RecipeCategoryOptionsC2SPacket.class, "RecipeCategoryOptionsC2SPacket"); + C2S_PACKETS_R.put("RecipeCategoryOptionsC2SPacket", net.minecraft.network.packet.c2s.play.RecipeCategoryOptionsC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.RenameItemC2SPacket.class, "RenameItemC2SPacket"); + C2S_PACKETS_R.put("RenameItemC2SPacket", net.minecraft.network.packet.c2s.play.RenameItemC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.RequestCommandCompletionsC2SPacket.class, "RequestCommandCompletionsC2SPacket"); + C2S_PACKETS_R.put("RequestCommandCompletionsC2SPacket", net.minecraft.network.packet.c2s.play.RequestCommandCompletionsC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.common.ResourcePackStatusC2SPacket.class, "ResourcePackStatusC2SPacket"); + C2S_PACKETS_R.put("ResourcePackStatusC2SPacket", net.minecraft.network.packet.c2s.common.ResourcePackStatusC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.config.SelectKnownPacksC2SPacket.class, "SelectKnownPacksC2SPacket"); + C2S_PACKETS_R.put("SelectKnownPacksC2SPacket", net.minecraft.network.packet.c2s.config.SelectKnownPacksC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.SelectMerchantTradeC2SPacket.class, "SelectMerchantTradeC2SPacket"); + C2S_PACKETS_R.put("SelectMerchantTradeC2SPacket", net.minecraft.network.packet.c2s.play.SelectMerchantTradeC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.SlotChangedStateC2SPacket.class, "SlotChangedStateC2SPacket"); + C2S_PACKETS_R.put("SlotChangedStateC2SPacket", net.minecraft.network.packet.c2s.play.SlotChangedStateC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.SpectatorTeleportC2SPacket.class, "SpectatorTeleportC2SPacket"); + C2S_PACKETS_R.put("SpectatorTeleportC2SPacket", net.minecraft.network.packet.c2s.play.SpectatorTeleportC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.TeleportConfirmC2SPacket.class, "TeleportConfirmC2SPacket"); + C2S_PACKETS_R.put("TeleportConfirmC2SPacket", net.minecraft.network.packet.c2s.play.TeleportConfirmC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateBeaconC2SPacket.class, "UpdateBeaconC2SPacket"); + C2S_PACKETS_R.put("UpdateBeaconC2SPacket", net.minecraft.network.packet.c2s.play.UpdateBeaconC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateCommandBlockC2SPacket.class, "UpdateCommandBlockC2SPacket"); + C2S_PACKETS_R.put("UpdateCommandBlockC2SPacket", net.minecraft.network.packet.c2s.play.UpdateCommandBlockC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateCommandBlockMinecartC2SPacket.class, "UpdateCommandBlockMinecartC2SPacket"); + C2S_PACKETS_R.put("UpdateCommandBlockMinecartC2SPacket", net.minecraft.network.packet.c2s.play.UpdateCommandBlockMinecartC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateDifficultyC2SPacket.class, "UpdateDifficultyC2SPacket"); + C2S_PACKETS_R.put("UpdateDifficultyC2SPacket", net.minecraft.network.packet.c2s.play.UpdateDifficultyC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateDifficultyLockC2SPacket.class, "UpdateDifficultyLockC2SPacket"); + C2S_PACKETS_R.put("UpdateDifficultyLockC2SPacket", net.minecraft.network.packet.c2s.play.UpdateDifficultyLockC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateJigsawC2SPacket.class, "UpdateJigsawC2SPacket"); + C2S_PACKETS_R.put("UpdateJigsawC2SPacket", net.minecraft.network.packet.c2s.play.UpdateJigsawC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdatePlayerAbilitiesC2SPacket.class, "UpdatePlayerAbilitiesC2SPacket"); + C2S_PACKETS_R.put("UpdatePlayerAbilitiesC2SPacket", net.minecraft.network.packet.c2s.play.UpdatePlayerAbilitiesC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket.class, "UpdateSelectedSlotC2SPacket"); + C2S_PACKETS_R.put("UpdateSelectedSlotC2SPacket", net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateSignC2SPacket.class, "UpdateSignC2SPacket"); + C2S_PACKETS_R.put("UpdateSignC2SPacket", net.minecraft.network.packet.c2s.play.UpdateSignC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.UpdateStructureBlockC2SPacket.class, "UpdateStructureBlockC2SPacket"); + C2S_PACKETS_R.put("UpdateStructureBlockC2SPacket", net.minecraft.network.packet.c2s.play.UpdateStructureBlockC2SPacket.class); + C2S_PACKETS.put(net.minecraft.network.packet.c2s.play.VehicleMoveC2SPacket.class, "VehicleMoveC2SPacket"); + C2S_PACKETS_R.put("VehicleMoveC2SPacket", net.minecraft.network.packet.c2s.play.VehicleMoveC2SPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldBorderSizeChangedS2CPacket.class, "WorldBorderSizeChangedS2CPacket"); - S2C_PACKETS_R.put("WorldBorderSizeChangedS2CPacket", net.minecraft.network.packet.s2c.play.WorldBorderSizeChangedS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.AdvancementUpdateS2CPacket.class, "AdvancementUpdateS2CPacket"); S2C_PACKETS_R.put("AdvancementUpdateS2CPacket", net.minecraft.network.packet.s2c.play.AdvancementUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldBorderInterpolateSizeS2CPacket.class, "WorldBorderInterpolateSizeS2CPacket"); - S2C_PACKETS_R.put("WorldBorderInterpolateSizeS2CPacket", net.minecraft.network.packet.s2c.play.WorldBorderInterpolateSizeS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BlockBreakingProgressS2CPacket.class, "BlockBreakingProgressS2CPacket"); + S2C_PACKETS_R.put("BlockBreakingProgressS2CPacket", net.minecraft.network.packet.s2c.play.BlockBreakingProgressS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BlockEntityUpdateS2CPacket.class, "BlockEntityUpdateS2CPacket"); + S2C_PACKETS_R.put("BlockEntityUpdateS2CPacket", net.minecraft.network.packet.s2c.play.BlockEntityUpdateS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BlockEventS2CPacket.class, "BlockEventS2CPacket"); + S2C_PACKETS_R.put("BlockEventS2CPacket", net.minecraft.network.packet.s2c.play.BlockEventS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket.class, "BlockUpdateS2CPacket"); + S2C_PACKETS_R.put("BlockUpdateS2CPacket", net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BossBarS2CPacket.class, "BossBarS2CPacket"); + S2C_PACKETS_R.put("BossBarS2CPacket", net.minecraft.network.packet.s2c.play.BossBarS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BundleDelimiterS2CPacket.class, "BundleDelimiterS2CPacket"); + S2C_PACKETS_R.put("BundleDelimiterS2CPacket", net.minecraft.network.packet.s2c.play.BundleDelimiterS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BundleS2CPacket.class, "BundleS2CPacket"); + S2C_PACKETS_R.put("BundleS2CPacket", net.minecraft.network.packet.s2c.play.BundleS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChatMessageS2CPacket.class, "ChatMessageS2CPacket"); + S2C_PACKETS_R.put("ChatMessageS2CPacket", net.minecraft.network.packet.s2c.play.ChatMessageS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChatSuggestionsS2CPacket.class, "ChatSuggestionsS2CPacket"); + S2C_PACKETS_R.put("ChatSuggestionsS2CPacket", net.minecraft.network.packet.s2c.play.ChatSuggestionsS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChunkBiomeDataS2CPacket.class, "ChunkBiomeDataS2CPacket"); + S2C_PACKETS_R.put("ChunkBiomeDataS2CPacket", net.minecraft.network.packet.s2c.play.ChunkBiomeDataS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket.class, "ChunkDataS2CPacket"); + S2C_PACKETS_R.put("ChunkDataS2CPacket", net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket.class, "ChunkDeltaUpdateS2CPacket"); + S2C_PACKETS_R.put("ChunkDeltaUpdateS2CPacket", net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChunkLoadDistanceS2CPacket.class, "ChunkLoadDistanceS2CPacket"); S2C_PACKETS_R.put("ChunkLoadDistanceS2CPacket", net.minecraft.network.packet.s2c.play.ChunkLoadDistanceS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ItemPickupAnimationS2CPacket.class, "ItemPickupAnimationS2CPacket"); - S2C_PACKETS_R.put("ItemPickupAnimationS2CPacket", net.minecraft.network.packet.s2c.play.ItemPickupAnimationS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket.class, "PlayerRespawnS2CPacket"); - S2C_PACKETS_R.put("PlayerRespawnS2CPacket", net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerListHeaderS2CPacket.class, "PlayerListHeaderS2CPacket"); - S2C_PACKETS_R.put("PlayerListHeaderS2CPacket", net.minecraft.network.packet.s2c.play.PlayerListHeaderS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket.class, "EntitySpawnS2CPacket"); - S2C_PACKETS_R.put("EntitySpawnS2CPacket", net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.RemoveMessageS2CPacket.class, "RemoveMessageS2CPacket"); - S2C_PACKETS_R.put("RemoveMessageS2CPacket", net.minecraft.network.packet.s2c.play.RemoveMessageS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SetCameraEntityS2CPacket.class, "SetCameraEntityS2CPacket"); - S2C_PACKETS_R.put("SetCameraEntityS2CPacket", net.minecraft.network.packet.s2c.play.SetCameraEntityS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityPositionSyncS2CPacket.class, "EntityPositionSyncS2CPacket"); - S2C_PACKETS_R.put("EntityPositionSyncS2CPacket", net.minecraft.network.packet.s2c.play.EntityPositionSyncS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.ResourcePackSendS2CPacket.class, "ResourcePackSendS2CPacket"); - S2C_PACKETS_R.put("ResourcePackSendS2CPacket", net.minecraft.network.packet.s2c.common.ResourcePackSendS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.DamageTiltS2CPacket.class, "DamageTiltS2CPacket"); - S2C_PACKETS_R.put("DamageTiltS2CPacket", net.minecraft.network.packet.s2c.play.DamageTiltS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChunkRenderDistanceCenterS2CPacket.class, "ChunkRenderDistanceCenterS2CPacket"); + S2C_PACKETS_R.put("ChunkRenderDistanceCenterS2CPacket", net.minecraft.network.packet.s2c.play.ChunkRenderDistanceCenterS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChunkSentS2CPacket.class, "ChunkSentS2CPacket"); + S2C_PACKETS_R.put("ChunkSentS2CPacket", net.minecraft.network.packet.s2c.play.ChunkSentS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ClearTitleS2CPacket.class, "ClearTitleS2CPacket"); + S2C_PACKETS_R.put("ClearTitleS2CPacket", net.minecraft.network.packet.s2c.play.ClearTitleS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.CloseScreenS2CPacket.class, "CloseScreenS2CPacket"); + S2C_PACKETS_R.put("CloseScreenS2CPacket", net.minecraft.network.packet.s2c.play.CloseScreenS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.CommandSuggestionsS2CPacket.class, "CommandSuggestionsS2CPacket"); + S2C_PACKETS_R.put("CommandSuggestionsS2CPacket", net.minecraft.network.packet.s2c.play.CommandSuggestionsS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.CommandTreeS2CPacket.class, "CommandTreeS2CPacket"); + S2C_PACKETS_R.put("CommandTreeS2CPacket", net.minecraft.network.packet.s2c.play.CommandTreeS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.CommonPingS2CPacket.class, "CommonPingS2CPacket"); + S2C_PACKETS_R.put("CommonPingS2CPacket", net.minecraft.network.packet.s2c.common.CommonPingS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.CookieRequestS2CPacket.class, "CookieRequestS2CPacket"); + S2C_PACKETS_R.put("CookieRequestS2CPacket", net.minecraft.network.packet.s2c.common.CookieRequestS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.CooldownUpdateS2CPacket.class, "CooldownUpdateS2CPacket"); + S2C_PACKETS_R.put("CooldownUpdateS2CPacket", net.minecraft.network.packet.s2c.play.CooldownUpdateS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.CraftFailedResponseS2CPacket.class, "CraftFailedResponseS2CPacket"); S2C_PACKETS_R.put("CraftFailedResponseS2CPacket", net.minecraft.network.packet.s2c.play.CraftFailedResponseS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.StatisticsS2CPacket.class, "StatisticsS2CPacket"); - S2C_PACKETS_R.put("StatisticsS2CPacket", net.minecraft.network.packet.s2c.play.StatisticsS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.login.LoginQueryRequestS2CPacket.class, "LoginQueryRequestS2CPacket"); - S2C_PACKETS_R.put("LoginQueryRequestS2CPacket", net.minecraft.network.packet.s2c.login.LoginQueryRequestS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SetCursorItemS2CPacket.class, "SetCursorItemS2CPacket"); - S2C_PACKETS_R.put("SetCursorItemS2CPacket", net.minecraft.network.packet.s2c.play.SetCursorItemS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.VehicleMoveS2CPacket.class, "VehicleMoveS2CPacket"); - S2C_PACKETS_R.put("VehicleMoveS2CPacket", net.minecraft.network.packet.s2c.play.VehicleMoveS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.CustomPayloadS2CPacket.class, "CustomPayloadS2CPacket"); + S2C_PACKETS_R.put("CustomPayloadS2CPacket", net.minecraft.network.packet.s2c.common.CustomPayloadS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.CustomReportDetailsS2CPacket.class, "CustomReportDetailsS2CPacket"); + S2C_PACKETS_R.put("CustomReportDetailsS2CPacket", net.minecraft.network.packet.s2c.common.CustomReportDetailsS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.DamageTiltS2CPacket.class, "DamageTiltS2CPacket"); + S2C_PACKETS_R.put("DamageTiltS2CPacket", net.minecraft.network.packet.s2c.play.DamageTiltS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.DeathMessageS2CPacket.class, "DeathMessageS2CPacket"); + S2C_PACKETS_R.put("DeathMessageS2CPacket", net.minecraft.network.packet.s2c.play.DeathMessageS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.DebugSampleS2CPacket.class, "DebugSampleS2CPacket"); + S2C_PACKETS_R.put("DebugSampleS2CPacket", net.minecraft.network.packet.s2c.play.DebugSampleS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.DifficultyS2CPacket.class, "DifficultyS2CPacket"); + S2C_PACKETS_R.put("DifficultyS2CPacket", net.minecraft.network.packet.s2c.play.DifficultyS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.DisconnectS2CPacket.class, "DisconnectS2CPacket"); + S2C_PACKETS_R.put("DisconnectS2CPacket", net.minecraft.network.packet.s2c.common.DisconnectS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.config.DynamicRegistriesS2CPacket.class, "DynamicRegistriesS2CPacket"); + S2C_PACKETS_R.put("DynamicRegistriesS2CPacket", net.minecraft.network.packet.s2c.config.DynamicRegistriesS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EndCombatS2CPacket.class, "EndCombatS2CPacket"); + S2C_PACKETS_R.put("EndCombatS2CPacket", net.minecraft.network.packet.s2c.play.EndCombatS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EnterCombatS2CPacket.class, "EnterCombatS2CPacket"); + S2C_PACKETS_R.put("EnterCombatS2CPacket", net.minecraft.network.packet.s2c.play.EnterCombatS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EnterReconfigurationS2CPacket.class, "EnterReconfigurationS2CPacket"); + S2C_PACKETS_R.put("EnterReconfigurationS2CPacket", net.minecraft.network.packet.s2c.play.EnterReconfigurationS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntitiesDestroyS2CPacket.class, "EntitiesDestroyS2CPacket"); + S2C_PACKETS_R.put("EntitiesDestroyS2CPacket", net.minecraft.network.packet.s2c.play.EntitiesDestroyS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityAnimationS2CPacket.class, "EntityAnimationS2CPacket"); + S2C_PACKETS_R.put("EntityAnimationS2CPacket", net.minecraft.network.packet.s2c.play.EntityAnimationS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityAttachS2CPacket.class, "EntityAttachS2CPacket"); + S2C_PACKETS_R.put("EntityAttachS2CPacket", net.minecraft.network.packet.s2c.play.EntityAttachS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityAttributesS2CPacket.class, "EntityAttributesS2CPacket"); S2C_PACKETS_R.put("EntityAttributesS2CPacket", net.minecraft.network.packet.s2c.play.EntityAttributesS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.TickStepS2CPacket.class, "TickStepS2CPacket"); - S2C_PACKETS_R.put("TickStepS2CPacket", net.minecraft.network.packet.s2c.play.TickStepS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.StopSoundS2CPacket.class, "StopSoundS2CPacket"); - S2C_PACKETS_R.put("StopSoundS2CPacket", net.minecraft.network.packet.s2c.play.StopSoundS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ScoreboardObjectiveUpdateS2CPacket.class, "ScoreboardObjectiveUpdateS2CPacket"); - S2C_PACKETS_R.put("ScoreboardObjectiveUpdateS2CPacket", net.minecraft.network.packet.s2c.play.ScoreboardObjectiveUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.RecipeBookAddS2CPacket.class, "RecipeBookAddS2CPacket"); - S2C_PACKETS_R.put("RecipeBookAddS2CPacket", net.minecraft.network.packet.s2c.play.RecipeBookAddS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.StartChunkSendS2CPacket.class, "StartChunkSendS2CPacket"); - S2C_PACKETS_R.put("StartChunkSendS2CPacket", net.minecraft.network.packet.s2c.play.StartChunkSendS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.CookieRequestS2CPacket.class, "CookieRequestS2CPacket"); - S2C_PACKETS_R.put("CookieRequestS2CPacket", net.minecraft.network.packet.s2c.common.CookieRequestS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityDamageS2CPacket.class, "EntityDamageS2CPacket"); + S2C_PACKETS_R.put("EntityDamageS2CPacket", net.minecraft.network.packet.s2c.play.EntityDamageS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityEquipmentUpdateS2CPacket.class, "EntityEquipmentUpdateS2CPacket"); + S2C_PACKETS_R.put("EntityEquipmentUpdateS2CPacket", net.minecraft.network.packet.s2c.play.EntityEquipmentUpdateS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityPassengersSetS2CPacket.class, "EntityPassengersSetS2CPacket"); + S2C_PACKETS_R.put("EntityPassengersSetS2CPacket", net.minecraft.network.packet.s2c.play.EntityPassengersSetS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket.class, "EntityPositionS2CPacket"); + S2C_PACKETS_R.put("EntityPositionS2CPacket", net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityPositionSyncS2CPacket.class, "EntityPositionSyncS2CPacket"); + S2C_PACKETS_R.put("EntityPositionSyncS2CPacket", net.minecraft.network.packet.s2c.play.EntityPositionSyncS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityS2CPacket.class, "EntityS2CPacket"); + S2C_PACKETS_R.put("EntityS2CPacket", net.minecraft.network.packet.s2c.play.EntityS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityS2CPacket.MoveRelative.class, "EntityS2CPacket.MoveRelative"); + S2C_PACKETS_R.put("EntityS2CPacket.MoveRelative", net.minecraft.network.packet.s2c.play.EntityS2CPacket.MoveRelative.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityS2CPacket.Rotate.class, "EntityS2CPacket.Rotate"); + S2C_PACKETS_R.put("EntityS2CPacket.Rotate", net.minecraft.network.packet.s2c.play.EntityS2CPacket.Rotate.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityS2CPacket.RotateAndMoveRelative.class, "EntityS2CPacket.RotateAndMoveRelative"); + S2C_PACKETS_R.put("EntityS2CPacket.RotateAndMoveRelative", net.minecraft.network.packet.s2c.play.EntityS2CPacket.RotateAndMoveRelative.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntitySetHeadYawS2CPacket.class, "EntitySetHeadYawS2CPacket"); S2C_PACKETS_R.put("EntitySetHeadYawS2CPacket", net.minecraft.network.packet.s2c.play.EntitySetHeadYawS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SetPlayerInventoryS2CPacket.class, "SetPlayerInventoryS2CPacket"); - S2C_PACKETS_R.put("SetPlayerInventoryS2CPacket", net.minecraft.network.packet.s2c.play.SetPlayerInventoryS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SelectAdvancementTabS2CPacket.class, "SelectAdvancementTabS2CPacket"); - S2C_PACKETS_R.put("SelectAdvancementTabS2CPacket", net.minecraft.network.packet.s2c.play.SelectAdvancementTabS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SetTradeOffersS2CPacket.class, "SetTradeOffersS2CPacket"); - S2C_PACKETS_R.put("SetTradeOffersS2CPacket", net.minecraft.network.packet.s2c.play.SetTradeOffersS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerRotationS2CPaket.class, "PlayerRotationS2CPaket"); - S2C_PACKETS_R.put("PlayerRotationS2CPaket", net.minecraft.network.packet.s2c.play.PlayerRotationS2CPaket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.StoreCookieS2CPacket.class, "StoreCookieS2CPacket"); - S2C_PACKETS_R.put("StoreCookieS2CPacket", net.minecraft.network.packet.s2c.common.StoreCookieS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket.class, "PlaySoundS2CPacket"); - S2C_PACKETS_R.put("PlaySoundS2CPacket", net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.MoveMinecartAlongTrackS2CPacket.class, "MoveMinecartAlongTrackS2CPacket"); - S2C_PACKETS_R.put("MoveMinecartAlongTrackS2CPacket", net.minecraft.network.packet.s2c.play.MoveMinecartAlongTrackS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BlockEventS2CPacket.class, "BlockEventS2CPacket"); - S2C_PACKETS_R.put("BlockEventS2CPacket", net.minecraft.network.packet.s2c.play.BlockEventS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket.class, "PlayerPositionLookS2CPacket"); - S2C_PACKETS_R.put("PlayerPositionLookS2CPacket", net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChunkSentS2CPacket.class, "ChunkSentS2CPacket"); - S2C_PACKETS_R.put("ChunkSentS2CPacket", net.minecraft.network.packet.s2c.play.ChunkSentS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.HealthUpdateS2CPacket.class, "HealthUpdateS2CPacket"); - S2C_PACKETS_R.put("HealthUpdateS2CPacket", net.minecraft.network.packet.s2c.play.HealthUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldEventS2CPacket.class, "WorldEventS2CPacket"); - S2C_PACKETS_R.put("WorldEventS2CPacket", net.minecraft.network.packet.s2c.play.WorldEventS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.SynchronizeTagsS2CPacket.class, "SynchronizeTagsS2CPacket"); - S2C_PACKETS_R.put("SynchronizeTagsS2CPacket", net.minecraft.network.packet.s2c.common.SynchronizeTagsS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ServerMetadataS2CPacket.class, "ServerMetadataS2CPacket"); - S2C_PACKETS_R.put("ServerMetadataS2CPacket", net.minecraft.network.packet.s2c.play.ServerMetadataS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.UpdateSelectedSlotS2CPacket.class, "UpdateSelectedSlotS2CPacket"); - S2C_PACKETS_R.put("UpdateSelectedSlotS2CPacket", net.minecraft.network.packet.s2c.play.UpdateSelectedSlotS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket.class, "ChunkDeltaUpdateS2CPacket"); - S2C_PACKETS_R.put("ChunkDeltaUpdateS2CPacket", net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.query.QueryResponseS2CPacket.class, "QueryResponseS2CPacket"); - S2C_PACKETS_R.put("QueryResponseS2CPacket", net.minecraft.network.packet.s2c.query.QueryResponseS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.TeamS2CPacket.class, "TeamS2CPacket"); - S2C_PACKETS_R.put("TeamS2CPacket", net.minecraft.network.packet.s2c.play.TeamS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.CooldownUpdateS2CPacket.class, "CooldownUpdateS2CPacket"); - S2C_PACKETS_R.put("CooldownUpdateS2CPacket", net.minecraft.network.packet.s2c.play.CooldownUpdateS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket.class, "EntitySpawnS2CPacket"); + S2C_PACKETS_R.put("EntitySpawnS2CPacket", net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityStatusEffectS2CPacket.class, "EntityStatusEffectS2CPacket"); + S2C_PACKETS_R.put("EntityStatusEffectS2CPacket", net.minecraft.network.packet.s2c.play.EntityStatusEffectS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket.class, "EntityStatusS2CPacket"); + S2C_PACKETS_R.put("EntityStatusS2CPacket", net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket.class, "EntityTrackerUpdateS2CPacket"); + S2C_PACKETS_R.put("EntityTrackerUpdateS2CPacket", net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket.class, "EntityVelocityUpdateS2CPacket"); + S2C_PACKETS_R.put("EntityVelocityUpdateS2CPacket", net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ExperienceBarUpdateS2CPacket.class, "ExperienceBarUpdateS2CPacket"); + S2C_PACKETS_R.put("ExperienceBarUpdateS2CPacket", net.minecraft.network.packet.s2c.play.ExperienceBarUpdateS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ExperienceOrbSpawnS2CPacket.class, "ExperienceOrbSpawnS2CPacket"); S2C_PACKETS_R.put("ExperienceOrbSpawnS2CPacket", net.minecraft.network.packet.s2c.play.ExperienceOrbSpawnS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityAnimationS2CPacket.class, "EntityAnimationS2CPacket"); - S2C_PACKETS_R.put("EntityAnimationS2CPacket", net.minecraft.network.packet.s2c.play.EntityAnimationS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ExplosionS2CPacket.class, "ExplosionS2CPacket"); + S2C_PACKETS_R.put("ExplosionS2CPacket", net.minecraft.network.packet.s2c.play.ExplosionS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.config.FeaturesS2CPacket.class, "FeaturesS2CPacket"); + S2C_PACKETS_R.put("FeaturesS2CPacket", net.minecraft.network.packet.s2c.config.FeaturesS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.GameJoinS2CPacket.class, "GameJoinS2CPacket"); + S2C_PACKETS_R.put("GameJoinS2CPacket", net.minecraft.network.packet.s2c.play.GameJoinS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.GameMessageS2CPacket.class, "GameMessageS2CPacket"); + S2C_PACKETS_R.put("GameMessageS2CPacket", net.minecraft.network.packet.s2c.play.GameMessageS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.GameStateChangeS2CPacket.class, "GameStateChangeS2CPacket"); + S2C_PACKETS_R.put("GameStateChangeS2CPacket", net.minecraft.network.packet.s2c.play.GameStateChangeS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.HealthUpdateS2CPacket.class, "HealthUpdateS2CPacket"); + S2C_PACKETS_R.put("HealthUpdateS2CPacket", net.minecraft.network.packet.s2c.play.HealthUpdateS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.InventoryS2CPacket.class, "InventoryS2CPacket"); + S2C_PACKETS_R.put("InventoryS2CPacket", net.minecraft.network.packet.s2c.play.InventoryS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ItemPickupAnimationS2CPacket.class, "ItemPickupAnimationS2CPacket"); + S2C_PACKETS_R.put("ItemPickupAnimationS2CPacket", net.minecraft.network.packet.s2c.play.ItemPickupAnimationS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.KeepAliveS2CPacket.class, "KeepAliveS2CPacket"); + S2C_PACKETS_R.put("KeepAliveS2CPacket", net.minecraft.network.packet.s2c.common.KeepAliveS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.LightUpdateS2CPacket.class, "LightUpdateS2CPacket"); + S2C_PACKETS_R.put("LightUpdateS2CPacket", net.minecraft.network.packet.s2c.play.LightUpdateS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.login.LoginCompressionS2CPacket.class, "LoginCompressionS2CPacket"); + S2C_PACKETS_R.put("LoginCompressionS2CPacket", net.minecraft.network.packet.s2c.login.LoginCompressionS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.login.LoginDisconnectS2CPacket.class, "LoginDisconnectS2CPacket"); + S2C_PACKETS_R.put("LoginDisconnectS2CPacket", net.minecraft.network.packet.s2c.login.LoginDisconnectS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.login.LoginHelloS2CPacket.class, "LoginHelloS2CPacket"); + S2C_PACKETS_R.put("LoginHelloS2CPacket", net.minecraft.network.packet.s2c.login.LoginHelloS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.login.LoginQueryRequestS2CPacket.class, "LoginQueryRequestS2CPacket"); + S2C_PACKETS_R.put("LoginQueryRequestS2CPacket", net.minecraft.network.packet.s2c.login.LoginQueryRequestS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.login.LoginSuccessS2CPacket.class, "LoginSuccessS2CPacket"); + S2C_PACKETS_R.put("LoginSuccessS2CPacket", net.minecraft.network.packet.s2c.login.LoginSuccessS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.LookAtS2CPacket.class, "LookAtS2CPacket"); + S2C_PACKETS_R.put("LookAtS2CPacket", net.minecraft.network.packet.s2c.play.LookAtS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.MapUpdateS2CPacket.class, "MapUpdateS2CPacket"); + S2C_PACKETS_R.put("MapUpdateS2CPacket", net.minecraft.network.packet.s2c.play.MapUpdateS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.MoveMinecartAlongTrackS2CPacket.class, "MoveMinecartAlongTrackS2CPacket"); + S2C_PACKETS_R.put("MoveMinecartAlongTrackS2CPacket", net.minecraft.network.packet.s2c.play.MoveMinecartAlongTrackS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.NbtQueryResponseS2CPacket.class, "NbtQueryResponseS2CPacket"); + S2C_PACKETS_R.put("NbtQueryResponseS2CPacket", net.minecraft.network.packet.s2c.play.NbtQueryResponseS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.OpenHorseScreenS2CPacket.class, "OpenHorseScreenS2CPacket"); + S2C_PACKETS_R.put("OpenHorseScreenS2CPacket", net.minecraft.network.packet.s2c.play.OpenHorseScreenS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.OpenScreenS2CPacket.class, "OpenScreenS2CPacket"); S2C_PACKETS_R.put("OpenScreenS2CPacket", net.minecraft.network.packet.s2c.play.OpenScreenS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.OpenWrittenBookS2CPacket.class, "OpenWrittenBookS2CPacket"); + S2C_PACKETS_R.put("OpenWrittenBookS2CPacket", net.minecraft.network.packet.s2c.play.OpenWrittenBookS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.OverlayMessageS2CPacket.class, "OverlayMessageS2CPacket"); + S2C_PACKETS_R.put("OverlayMessageS2CPacket", net.minecraft.network.packet.s2c.play.OverlayMessageS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ParticleS2CPacket.class, "ParticleS2CPacket"); + S2C_PACKETS_R.put("ParticleS2CPacket", net.minecraft.network.packet.s2c.play.ParticleS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.query.PingResultS2CPacket.class, "PingResultS2CPacket"); + S2C_PACKETS_R.put("PingResultS2CPacket", net.minecraft.network.packet.s2c.query.PingResultS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlaySoundFromEntityS2CPacket.class, "PlaySoundFromEntityS2CPacket"); + S2C_PACKETS_R.put("PlaySoundFromEntityS2CPacket", net.minecraft.network.packet.s2c.play.PlaySoundFromEntityS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket.class, "PlaySoundS2CPacket"); + S2C_PACKETS_R.put("PlaySoundS2CPacket", net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerAbilitiesS2CPacket.class, "PlayerAbilitiesS2CPacket"); S2C_PACKETS_R.put("PlayerAbilitiesS2CPacket", net.minecraft.network.packet.s2c.play.PlayerAbilitiesS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerActionResponseS2CPacket.class, "PlayerActionResponseS2CPacket"); + S2C_PACKETS_R.put("PlayerActionResponseS2CPacket", net.minecraft.network.packet.s2c.play.PlayerActionResponseS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerListHeaderS2CPacket.class, "PlayerListHeaderS2CPacket"); + S2C_PACKETS_R.put("PlayerListHeaderS2CPacket", net.minecraft.network.packet.s2c.play.PlayerListHeaderS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerListS2CPacket.class, "PlayerListS2CPacket"); + S2C_PACKETS_R.put("PlayerListS2CPacket", net.minecraft.network.packet.s2c.play.PlayerListS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket.class, "PlayerPositionLookS2CPacket"); + S2C_PACKETS_R.put("PlayerPositionLookS2CPacket", net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerRemoveS2CPacket.class, "PlayerRemoveS2CPacket"); + S2C_PACKETS_R.put("PlayerRemoveS2CPacket", net.minecraft.network.packet.s2c.play.PlayerRemoveS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket.class, "PlayerRespawnS2CPacket"); + S2C_PACKETS_R.put("PlayerRespawnS2CPacket", net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerRotationS2CPacket.class, "PlayerRotationS2CPacket"); + S2C_PACKETS_R.put("PlayerRotationS2CPacket", net.minecraft.network.packet.s2c.play.PlayerRotationS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerSpawnPositionS2CPacket.class, "PlayerSpawnPositionS2CPacket"); + S2C_PACKETS_R.put("PlayerSpawnPositionS2CPacket", net.minecraft.network.packet.s2c.play.PlayerSpawnPositionS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ProfilelessChatMessageS2CPacket.class, "ProfilelessChatMessageS2CPacket"); + S2C_PACKETS_R.put("ProfilelessChatMessageS2CPacket", net.minecraft.network.packet.s2c.play.ProfilelessChatMessageS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ProjectilePowerS2CPacket.class, "ProjectilePowerS2CPacket"); + S2C_PACKETS_R.put("ProjectilePowerS2CPacket", net.minecraft.network.packet.s2c.play.ProjectilePowerS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.query.QueryResponseS2CPacket.class, "QueryResponseS2CPacket"); + S2C_PACKETS_R.put("QueryResponseS2CPacket", net.minecraft.network.packet.s2c.query.QueryResponseS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.config.ReadyS2CPacket.class, "ReadyS2CPacket"); + S2C_PACKETS_R.put("ReadyS2CPacket", net.minecraft.network.packet.s2c.config.ReadyS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.RecipeBookAddS2CPacket.class, "RecipeBookAddS2CPacket"); + S2C_PACKETS_R.put("RecipeBookAddS2CPacket", net.minecraft.network.packet.s2c.play.RecipeBookAddS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.RecipeBookRemoveS2CPacket.class, "RecipeBookRemoveS2CPacket"); S2C_PACKETS_R.put("RecipeBookRemoveS2CPacket", net.minecraft.network.packet.s2c.play.RecipeBookRemoveS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.RecipeBookSettingsS2CPacket.class, "RecipeBookSettingsS2CPacket"); S2C_PACKETS_R.put("RecipeBookSettingsS2CPacket", net.minecraft.network.packet.s2c.play.RecipeBookSettingsS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.RemoveEntityStatusEffectS2CPacket.class, "RemoveEntityStatusEffectS2CPacket"); + S2C_PACKETS_R.put("RemoveEntityStatusEffectS2CPacket", net.minecraft.network.packet.s2c.play.RemoveEntityStatusEffectS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.RemoveMessageS2CPacket.class, "RemoveMessageS2CPacket"); + S2C_PACKETS_R.put("RemoveMessageS2CPacket", net.minecraft.network.packet.s2c.play.RemoveMessageS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.config.ResetChatS2CPacket.class, "ResetChatS2CPacket"); S2C_PACKETS_R.put("ResetChatS2CPacket", net.minecraft.network.packet.s2c.config.ResetChatS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldBorderWarningBlocksChangedS2CPacket.class, "WorldBorderWarningBlocksChangedS2CPacket"); - S2C_PACKETS_R.put("WorldBorderWarningBlocksChangedS2CPacket", net.minecraft.network.packet.s2c.play.WorldBorderWarningBlocksChangedS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntitiesDestroyS2CPacket.class, "EntitiesDestroyS2CPacket"); - S2C_PACKETS_R.put("EntitiesDestroyS2CPacket", net.minecraft.network.packet.s2c.play.EntitiesDestroyS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerRemoveS2CPacket.class, "PlayerRemoveS2CPacket"); - S2C_PACKETS_R.put("PlayerRemoveS2CPacket", net.minecraft.network.packet.s2c.play.PlayerRemoveS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.LightUpdateS2CPacket.class, "LightUpdateS2CPacket"); - S2C_PACKETS_R.put("LightUpdateS2CPacket", net.minecraft.network.packet.s2c.play.LightUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.OverlayMessageS2CPacket.class, "OverlayMessageS2CPacket"); - S2C_PACKETS_R.put("OverlayMessageS2CPacket", net.minecraft.network.packet.s2c.play.OverlayMessageS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldBorderInitializeS2CPacket.class, "WorldBorderInitializeS2CPacket"); - S2C_PACKETS_R.put("WorldBorderInitializeS2CPacket", net.minecraft.network.packet.s2c.play.WorldBorderInitializeS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldBorderCenterChangedS2CPacket.class, "WorldBorderCenterChangedS2CPacket"); - S2C_PACKETS_R.put("WorldBorderCenterChangedS2CPacket", net.minecraft.network.packet.s2c.play.WorldBorderCenterChangedS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket.class, "EntityVelocityUpdateS2CPacket"); - S2C_PACKETS_R.put("EntityVelocityUpdateS2CPacket", net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.DifficultyS2CPacket.class, "DifficultyS2CPacket"); - S2C_PACKETS_R.put("DifficultyS2CPacket", net.minecraft.network.packet.s2c.play.DifficultyS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.LookAtS2CPacket.class, "LookAtS2CPacket"); - S2C_PACKETS_R.put("LookAtS2CPacket", net.minecraft.network.packet.s2c.play.LookAtS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.ResourcePackRemoveS2CPacket.class, "ResourcePackRemoveS2CPacket"); + S2C_PACKETS_R.put("ResourcePackRemoveS2CPacket", net.minecraft.network.packet.s2c.common.ResourcePackRemoveS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.ResourcePackSendS2CPacket.class, "ResourcePackSendS2CPacket"); + S2C_PACKETS_R.put("ResourcePackSendS2CPacket", net.minecraft.network.packet.s2c.common.ResourcePackSendS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ScoreboardDisplayS2CPacket.class, "ScoreboardDisplayS2CPacket"); + S2C_PACKETS_R.put("ScoreboardDisplayS2CPacket", net.minecraft.network.packet.s2c.play.ScoreboardDisplayS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ScoreboardObjectiveUpdateS2CPacket.class, "ScoreboardObjectiveUpdateS2CPacket"); + S2C_PACKETS_R.put("ScoreboardObjectiveUpdateS2CPacket", net.minecraft.network.packet.s2c.play.ScoreboardObjectiveUpdateS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ScoreboardScoreResetS2CPacket.class, "ScoreboardScoreResetS2CPacket"); + S2C_PACKETS_R.put("ScoreboardScoreResetS2CPacket", net.minecraft.network.packet.s2c.play.ScoreboardScoreResetS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ScoreboardScoreUpdateS2CPacket.class, "ScoreboardScoreUpdateS2CPacket"); S2C_PACKETS_R.put("ScoreboardScoreUpdateS2CPacket", net.minecraft.network.packet.s2c.play.ScoreboardScoreUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.TitleS2CPacket.class, "TitleS2CPacket"); - S2C_PACKETS_R.put("TitleS2CPacket", net.minecraft.network.packet.s2c.play.TitleS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ScreenHandlerPropertyUpdateS2CPacket.class, "ScreenHandlerPropertyUpdateS2CPacket"); S2C_PACKETS_R.put("ScreenHandlerPropertyUpdateS2CPacket", net.minecraft.network.packet.s2c.play.ScreenHandlerPropertyUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.OpenHorseScreenS2CPacket.class, "OpenHorseScreenS2CPacket"); - S2C_PACKETS_R.put("OpenHorseScreenS2CPacket", net.minecraft.network.packet.s2c.play.OpenHorseScreenS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SimulationDistanceS2CPacket.class, "SimulationDistanceS2CPacket"); - S2C_PACKETS_R.put("SimulationDistanceS2CPacket", net.minecraft.network.packet.s2c.play.SimulationDistanceS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChatSuggestionsS2CPacket.class, "ChatSuggestionsS2CPacket"); - S2C_PACKETS_R.put("ChatSuggestionsS2CPacket", net.minecraft.network.packet.s2c.play.ChatSuggestionsS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EnterCombatS2CPacket.class, "EnterCombatS2CPacket"); - S2C_PACKETS_R.put("EnterCombatS2CPacket", net.minecraft.network.packet.s2c.play.EnterCombatS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ProfilelessChatMessageS2CPacket.class, "ProfilelessChatMessageS2CPacket"); - S2C_PACKETS_R.put("ProfilelessChatMessageS2CPacket", net.minecraft.network.packet.s2c.play.ProfilelessChatMessageS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.DeathMessageS2CPacket.class, "DeathMessageS2CPacket"); - S2C_PACKETS_R.put("DeathMessageS2CPacket", net.minecraft.network.packet.s2c.play.DeathMessageS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.MapUpdateS2CPacket.class, "MapUpdateS2CPacket"); - S2C_PACKETS_R.put("MapUpdateS2CPacket", net.minecraft.network.packet.s2c.play.MapUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BlockEntityUpdateS2CPacket.class, "BlockEntityUpdateS2CPacket"); - S2C_PACKETS_R.put("BlockEntityUpdateS2CPacket", net.minecraft.network.packet.s2c.play.BlockEntityUpdateS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ScreenHandlerSlotUpdateS2CPacket.class, "ScreenHandlerSlotUpdateS2CPacket"); S2C_PACKETS_R.put("ScreenHandlerSlotUpdateS2CPacket", net.minecraft.network.packet.s2c.play.ScreenHandlerSlotUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerSpawnPositionS2CPacket.class, "PlayerSpawnPositionS2CPacket"); - S2C_PACKETS_R.put("PlayerSpawnPositionS2CPacket", net.minecraft.network.packet.s2c.play.PlayerSpawnPositionS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityStatusEffectS2CPacket.class, "EntityStatusEffectS2CPacket"); - S2C_PACKETS_R.put("EntityStatusEffectS2CPacket", net.minecraft.network.packet.s2c.play.EntityStatusEffectS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.CustomReportDetailsS2CPacket.class, "CustomReportDetailsS2CPacket"); - S2C_PACKETS_R.put("CustomReportDetailsS2CPacket", net.minecraft.network.packet.s2c.common.CustomReportDetailsS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ClearTitleS2CPacket.class, "ClearTitleS2CPacket"); - S2C_PACKETS_R.put("ClearTitleS2CPacket", net.minecraft.network.packet.s2c.play.ClearTitleS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.login.LoginCompressionS2CPacket.class, "LoginCompressionS2CPacket"); - S2C_PACKETS_R.put("LoginCompressionS2CPacket", net.minecraft.network.packet.s2c.login.LoginCompressionS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.CommandTreeS2CPacket.class, "CommandTreeS2CPacket"); - S2C_PACKETS_R.put("CommandTreeS2CPacket", net.minecraft.network.packet.s2c.play.CommandTreeS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.CommonPingS2CPacket.class, "CommonPingS2CPacket"); - S2C_PACKETS_R.put("CommonPingS2CPacket", net.minecraft.network.packet.s2c.common.CommonPingS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ScoreboardScoreResetS2CPacket.class, "ScoreboardScoreResetS2CPacket"); - S2C_PACKETS_R.put("ScoreboardScoreResetS2CPacket", net.minecraft.network.packet.s2c.play.ScoreboardScoreResetS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.TitleFadeS2CPacket.class, "TitleFadeS2CPacket"); - S2C_PACKETS_R.put("TitleFadeS2CPacket", net.minecraft.network.packet.s2c.play.TitleFadeS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.query.PingResultS2CPacket.class, "PingResultS2CPacket"); - S2C_PACKETS_R.put("PingResultS2CPacket", net.minecraft.network.packet.s2c.query.PingResultS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.UpdateTickRateS2CPacket.class, "UpdateTickRateS2CPacket"); - S2C_PACKETS_R.put("UpdateTickRateS2CPacket", net.minecraft.network.packet.s2c.play.UpdateTickRateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerActionResponseS2CPacket.class, "PlayerActionResponseS2CPacket"); - S2C_PACKETS_R.put("PlayerActionResponseS2CPacket", net.minecraft.network.packet.s2c.play.PlayerActionResponseS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.InventoryS2CPacket.class, "InventoryS2CPacket"); - S2C_PACKETS_R.put("InventoryS2CPacket", net.minecraft.network.packet.s2c.play.InventoryS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.DebugSampleS2CPacket.class, "DebugSampleS2CPacket"); - S2C_PACKETS_R.put("DebugSampleS2CPacket", net.minecraft.network.packet.s2c.play.DebugSampleS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChunkBiomeDataS2CPacket.class, "ChunkBiomeDataS2CPacket"); - S2C_PACKETS_R.put("ChunkBiomeDataS2CPacket", net.minecraft.network.packet.s2c.play.ChunkBiomeDataS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldBorderWarningTimeChangedS2CPacket.class, "WorldBorderWarningTimeChangedS2CPacket"); - S2C_PACKETS_R.put("WorldBorderWarningTimeChangedS2CPacket", net.minecraft.network.packet.s2c.play.WorldBorderWarningTimeChangedS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityDamageS2CPacket.class, "EntityDamageS2CPacket"); - S2C_PACKETS_R.put("EntityDamageS2CPacket", net.minecraft.network.packet.s2c.play.EntityDamageS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChatMessageS2CPacket.class, "ChatMessageS2CPacket"); - S2C_PACKETS_R.put("ChatMessageS2CPacket", net.minecraft.network.packet.s2c.play.ChatMessageS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SelectAdvancementTabS2CPacket.class, "SelectAdvancementTabS2CPacket"); + S2C_PACKETS_R.put("SelectAdvancementTabS2CPacket", net.minecraft.network.packet.s2c.play.SelectAdvancementTabS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.config.SelectKnownPacksS2CPacket.class, "SelectKnownPacksS2CPacket"); + S2C_PACKETS_R.put("SelectKnownPacksS2CPacket", net.minecraft.network.packet.s2c.config.SelectKnownPacksS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.ServerLinksS2CPacket.class, "ServerLinksS2CPacket"); S2C_PACKETS_R.put("ServerLinksS2CPacket", net.minecraft.network.packet.s2c.common.ServerLinksS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.KeepAliveS2CPacket.class, "KeepAliveS2CPacket"); - S2C_PACKETS_R.put("KeepAliveS2CPacket", net.minecraft.network.packet.s2c.common.KeepAliveS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.OpenWrittenBookS2CPacket.class, "OpenWrittenBookS2CPacket"); - S2C_PACKETS_R.put("OpenWrittenBookS2CPacket", net.minecraft.network.packet.s2c.play.OpenWrittenBookS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.ResourcePackRemoveS2CPacket.class, "ResourcePackRemoveS2CPacket"); - S2C_PACKETS_R.put("ResourcePackRemoveS2CPacket", net.minecraft.network.packet.s2c.common.ResourcePackRemoveS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket.class, "WorldTimeUpdateS2CPacket"); - S2C_PACKETS_R.put("WorldTimeUpdateS2CPacket", net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlaySoundFromEntityS2CPacket.class, "PlaySoundFromEntityS2CPacket"); - S2C_PACKETS_R.put("PlaySoundFromEntityS2CPacket", net.minecraft.network.packet.s2c.play.PlaySoundFromEntityS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.config.FeaturesS2CPacket.class, "FeaturesS2CPacket"); - S2C_PACKETS_R.put("FeaturesS2CPacket", net.minecraft.network.packet.s2c.config.FeaturesS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ServerMetadataS2CPacket.class, "ServerMetadataS2CPacket"); + S2C_PACKETS_R.put("ServerMetadataS2CPacket", net.minecraft.network.packet.s2c.play.ServerMetadataS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.ServerTransferS2CPacket.class, "ServerTransferS2CPacket"); + S2C_PACKETS_R.put("ServerTransferS2CPacket", net.minecraft.network.packet.s2c.common.ServerTransferS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SetCameraEntityS2CPacket.class, "SetCameraEntityS2CPacket"); + S2C_PACKETS_R.put("SetCameraEntityS2CPacket", net.minecraft.network.packet.s2c.play.SetCameraEntityS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SetCursorItemS2CPacket.class, "SetCursorItemS2CPacket"); + S2C_PACKETS_R.put("SetCursorItemS2CPacket", net.minecraft.network.packet.s2c.play.SetCursorItemS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SetPlayerInventoryS2CPacket.class, "SetPlayerInventoryS2CPacket"); + S2C_PACKETS_R.put("SetPlayerInventoryS2CPacket", net.minecraft.network.packet.s2c.play.SetPlayerInventoryS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SetTradeOffersS2CPacket.class, "SetTradeOffersS2CPacket"); + S2C_PACKETS_R.put("SetTradeOffersS2CPacket", net.minecraft.network.packet.s2c.play.SetTradeOffersS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SignEditorOpenS2CPacket.class, "SignEditorOpenS2CPacket"); S2C_PACKETS_R.put("SignEditorOpenS2CPacket", net.minecraft.network.packet.s2c.play.SignEditorOpenS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ExplosionS2CPacket.class, "ExplosionS2CPacket"); - S2C_PACKETS_R.put("ExplosionS2CPacket", net.minecraft.network.packet.s2c.play.ExplosionS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.login.LoginDisconnectS2CPacket.class, "LoginDisconnectS2CPacket"); - S2C_PACKETS_R.put("LoginDisconnectS2CPacket", net.minecraft.network.packet.s2c.login.LoginDisconnectS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.RemoveEntityStatusEffectS2CPacket.class, "RemoveEntityStatusEffectS2CPacket"); - S2C_PACKETS_R.put("RemoveEntityStatusEffectS2CPacket", net.minecraft.network.packet.s2c.play.RemoveEntityStatusEffectS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EndCombatS2CPacket.class, "EndCombatS2CPacket"); - S2C_PACKETS_R.put("EndCombatS2CPacket", net.minecraft.network.packet.s2c.play.EndCombatS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.PlayerListS2CPacket.class, "PlayerListS2CPacket"); - S2C_PACKETS_R.put("PlayerListS2CPacket", net.minecraft.network.packet.s2c.play.PlayerListS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChunkRenderDistanceCenterS2CPacket.class, "ChunkRenderDistanceCenterS2CPacket"); - S2C_PACKETS_R.put("ChunkRenderDistanceCenterS2CPacket", net.minecraft.network.packet.s2c.play.ChunkRenderDistanceCenterS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ExperienceBarUpdateS2CPacket.class, "ExperienceBarUpdateS2CPacket"); - S2C_PACKETS_R.put("ExperienceBarUpdateS2CPacket", net.minecraft.network.packet.s2c.play.ExperienceBarUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket.class, "BlockUpdateS2CPacket"); - S2C_PACKETS_R.put("BlockUpdateS2CPacket", net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.CommandSuggestionsS2CPacket.class, "CommandSuggestionsS2CPacket"); - S2C_PACKETS_R.put("CommandSuggestionsS2CPacket", net.minecraft.network.packet.s2c.play.CommandSuggestionsS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ParticleS2CPacket.class, "ParticleS2CPacket"); - S2C_PACKETS_R.put("ParticleS2CPacket", net.minecraft.network.packet.s2c.play.ParticleS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.CloseScreenS2CPacket.class, "CloseScreenS2CPacket"); - S2C_PACKETS_R.put("CloseScreenS2CPacket", net.minecraft.network.packet.s2c.play.CloseScreenS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ScoreboardDisplayS2CPacket.class, "ScoreboardDisplayS2CPacket"); - S2C_PACKETS_R.put("ScoreboardDisplayS2CPacket", net.minecraft.network.packet.s2c.play.ScoreboardDisplayS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.login.LoginSuccessS2CPacket.class, "LoginSuccessS2CPacket"); - S2C_PACKETS_R.put("LoginSuccessS2CPacket", net.minecraft.network.packet.s2c.login.LoginSuccessS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BlockBreakingProgressS2CPacket.class, "BlockBreakingProgressS2CPacket"); - S2C_PACKETS_R.put("BlockBreakingProgressS2CPacket", net.minecraft.network.packet.s2c.play.BlockBreakingProgressS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.DisconnectS2CPacket.class, "DisconnectS2CPacket"); - S2C_PACKETS_R.put("DisconnectS2CPacket", net.minecraft.network.packet.s2c.common.DisconnectS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.GameMessageS2CPacket.class, "GameMessageS2CPacket"); - S2C_PACKETS_R.put("GameMessageS2CPacket", net.minecraft.network.packet.s2c.play.GameMessageS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityPassengersSetS2CPacket.class, "EntityPassengersSetS2CPacket"); - S2C_PACKETS_R.put("EntityPassengersSetS2CPacket", net.minecraft.network.packet.s2c.play.EntityPassengersSetS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.login.LoginHelloS2CPacket.class, "LoginHelloS2CPacket"); - S2C_PACKETS_R.put("LoginHelloS2CPacket", net.minecraft.network.packet.s2c.login.LoginHelloS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.GameJoinS2CPacket.class, "GameJoinS2CPacket"); - S2C_PACKETS_R.put("GameJoinS2CPacket", net.minecraft.network.packet.s2c.play.GameJoinS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SynchronizeRecipesS2CPacket.class, "SynchronizeRecipesS2CPacket"); - S2C_PACKETS_R.put("SynchronizeRecipesS2CPacket", net.minecraft.network.packet.s2c.play.SynchronizeRecipesS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityS2CPacket.class, "EntityS2CPacket"); - S2C_PACKETS_R.put("EntityS2CPacket", net.minecraft.network.packet.s2c.play.EntityS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket.class, "EntityTrackerUpdateS2CPacket"); - S2C_PACKETS_R.put("EntityTrackerUpdateS2CPacket", net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket.class, "EntityStatusS2CPacket"); - S2C_PACKETS_R.put("EntityStatusS2CPacket", net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.config.SelectKnownPacksS2CPacket.class, "SelectKnownPacksS2CPacket"); - S2C_PACKETS_R.put("SelectKnownPacksS2CPacket", net.minecraft.network.packet.s2c.config.SelectKnownPacksS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.config.DynamicRegistriesS2CPacket.class, "DynamicRegistriesS2CPacket"); - S2C_PACKETS_R.put("DynamicRegistriesS2CPacket", net.minecraft.network.packet.s2c.config.DynamicRegistriesS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.CustomPayloadS2CPacket.class, "CustomPayloadS2CPacket"); - S2C_PACKETS_R.put("CustomPayloadS2CPacket", net.minecraft.network.packet.s2c.common.CustomPayloadS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SimulationDistanceS2CPacket.class, "SimulationDistanceS2CPacket"); + S2C_PACKETS_R.put("SimulationDistanceS2CPacket", net.minecraft.network.packet.s2c.play.SimulationDistanceS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.StartChunkSendS2CPacket.class, "StartChunkSendS2CPacket"); + S2C_PACKETS_R.put("StartChunkSendS2CPacket", net.minecraft.network.packet.s2c.play.StartChunkSendS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.StatisticsS2CPacket.class, "StatisticsS2CPacket"); + S2C_PACKETS_R.put("StatisticsS2CPacket", net.minecraft.network.packet.s2c.play.StatisticsS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.StopSoundS2CPacket.class, "StopSoundS2CPacket"); + S2C_PACKETS_R.put("StopSoundS2CPacket", net.minecraft.network.packet.s2c.play.StopSoundS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.StoreCookieS2CPacket.class, "StoreCookieS2CPacket"); + S2C_PACKETS_R.put("StoreCookieS2CPacket", net.minecraft.network.packet.s2c.common.StoreCookieS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SubtitleS2CPacket.class, "SubtitleS2CPacket"); S2C_PACKETS_R.put("SubtitleS2CPacket", net.minecraft.network.packet.s2c.play.SubtitleS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.NbtQueryResponseS2CPacket.class, "NbtQueryResponseS2CPacket"); - S2C_PACKETS_R.put("NbtQueryResponseS2CPacket", net.minecraft.network.packet.s2c.play.NbtQueryResponseS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityEquipmentUpdateS2CPacket.class, "EntityEquipmentUpdateS2CPacket"); - S2C_PACKETS_R.put("EntityEquipmentUpdateS2CPacket", net.minecraft.network.packet.s2c.play.EntityEquipmentUpdateS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.SynchronizeRecipesS2CPacket.class, "SynchronizeRecipesS2CPacket"); + S2C_PACKETS_R.put("SynchronizeRecipesS2CPacket", net.minecraft.network.packet.s2c.play.SynchronizeRecipesS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.SynchronizeTagsS2CPacket.class, "SynchronizeTagsS2CPacket"); + S2C_PACKETS_R.put("SynchronizeTagsS2CPacket", net.minecraft.network.packet.s2c.common.SynchronizeTagsS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.TeamS2CPacket.class, "TeamS2CPacket"); + S2C_PACKETS_R.put("TeamS2CPacket", net.minecraft.network.packet.s2c.play.TeamS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.TickStepS2CPacket.class, "TickStepS2CPacket"); + S2C_PACKETS_R.put("TickStepS2CPacket", net.minecraft.network.packet.s2c.play.TickStepS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.TitleFadeS2CPacket.class, "TitleFadeS2CPacket"); + S2C_PACKETS_R.put("TitleFadeS2CPacket", net.minecraft.network.packet.s2c.play.TitleFadeS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.TitleS2CPacket.class, "TitleS2CPacket"); + S2C_PACKETS_R.put("TitleS2CPacket", net.minecraft.network.packet.s2c.play.TitleS2CPacket.class); S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.UnloadChunkS2CPacket.class, "UnloadChunkS2CPacket"); S2C_PACKETS_R.put("UnloadChunkS2CPacket", net.minecraft.network.packet.s2c.play.UnloadChunkS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.config.ReadyS2CPacket.class, "ReadyS2CPacket"); - S2C_PACKETS_R.put("ReadyS2CPacket", net.minecraft.network.packet.s2c.config.ReadyS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EnterReconfigurationS2CPacket.class, "EnterReconfigurationS2CPacket"); - S2C_PACKETS_R.put("EnterReconfigurationS2CPacket", net.minecraft.network.packet.s2c.play.EnterReconfigurationS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityAttachS2CPacket.class, "EntityAttachS2CPacket"); - S2C_PACKETS_R.put("EntityAttachS2CPacket", net.minecraft.network.packet.s2c.play.EntityAttachS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BossBarS2CPacket.class, "BossBarS2CPacket"); - S2C_PACKETS_R.put("BossBarS2CPacket", net.minecraft.network.packet.s2c.play.BossBarS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.common.ServerTransferS2CPacket.class, "ServerTransferS2CPacket"); - S2C_PACKETS_R.put("ServerTransferS2CPacket", net.minecraft.network.packet.s2c.common.ServerTransferS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket.class, "EntityPositionS2CPacket"); - S2C_PACKETS_R.put("EntityPositionS2CPacket", net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket.class, "ChunkDataS2CPacket"); - S2C_PACKETS_R.put("ChunkDataS2CPacket", net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.ProjectilePowerS2CPacket.class, "ProjectilePowerS2CPacket"); - S2C_PACKETS_R.put("ProjectilePowerS2CPacket", net.minecraft.network.packet.s2c.play.ProjectilePowerS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.GameStateChangeS2CPacket.class, "GameStateChangeS2CPacket"); - S2C_PACKETS_R.put("GameStateChangeS2CPacket", net.minecraft.network.packet.s2c.play.GameStateChangeS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BundleDelimiterS2CPacket.class, "BundleDelimiterS2CPacket"); - S2C_PACKETS_R.put("BundleDelimiterS2CPacket", net.minecraft.network.packet.s2c.play.BundleDelimiterS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.BundleS2CPacket.class, "BundleS2CPacket"); - S2C_PACKETS_R.put("BundleS2CPacket", net.minecraft.network.packet.s2c.play.BundleS2CPacket.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityS2CPacket.RotateAndMoveRelative.class, "EntityS2CPacket.RotateAndMoveRelative"); - S2C_PACKETS_R.put("EntityS2CPacket.RotateAndMoveRelative", net.minecraft.network.packet.s2c.play.EntityS2CPacket.RotateAndMoveRelative.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityS2CPacket.Rotate.class, "EntityS2CPacket.Rotate"); - S2C_PACKETS_R.put("EntityS2CPacket.Rotate", net.minecraft.network.packet.s2c.play.EntityS2CPacket.Rotate.class); - S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.EntityS2CPacket.MoveRelative.class, "EntityS2CPacket.MoveRelative"); - S2C_PACKETS_R.put("EntityS2CPacket.MoveRelative", net.minecraft.network.packet.s2c.play.EntityS2CPacket.MoveRelative.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.UpdateSelectedSlotS2CPacket.class, "UpdateSelectedSlotS2CPacket"); + S2C_PACKETS_R.put("UpdateSelectedSlotS2CPacket", net.minecraft.network.packet.s2c.play.UpdateSelectedSlotS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.UpdateTickRateS2CPacket.class, "UpdateTickRateS2CPacket"); + S2C_PACKETS_R.put("UpdateTickRateS2CPacket", net.minecraft.network.packet.s2c.play.UpdateTickRateS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.VehicleMoveS2CPacket.class, "VehicleMoveS2CPacket"); + S2C_PACKETS_R.put("VehicleMoveS2CPacket", net.minecraft.network.packet.s2c.play.VehicleMoveS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldBorderCenterChangedS2CPacket.class, "WorldBorderCenterChangedS2CPacket"); + S2C_PACKETS_R.put("WorldBorderCenterChangedS2CPacket", net.minecraft.network.packet.s2c.play.WorldBorderCenterChangedS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldBorderInitializeS2CPacket.class, "WorldBorderInitializeS2CPacket"); + S2C_PACKETS_R.put("WorldBorderInitializeS2CPacket", net.minecraft.network.packet.s2c.play.WorldBorderInitializeS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldBorderInterpolateSizeS2CPacket.class, "WorldBorderInterpolateSizeS2CPacket"); + S2C_PACKETS_R.put("WorldBorderInterpolateSizeS2CPacket", net.minecraft.network.packet.s2c.play.WorldBorderInterpolateSizeS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldBorderSizeChangedS2CPacket.class, "WorldBorderSizeChangedS2CPacket"); + S2C_PACKETS_R.put("WorldBorderSizeChangedS2CPacket", net.minecraft.network.packet.s2c.play.WorldBorderSizeChangedS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldBorderWarningBlocksChangedS2CPacket.class, "WorldBorderWarningBlocksChangedS2CPacket"); + S2C_PACKETS_R.put("WorldBorderWarningBlocksChangedS2CPacket", net.minecraft.network.packet.s2c.play.WorldBorderWarningBlocksChangedS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldBorderWarningTimeChangedS2CPacket.class, "WorldBorderWarningTimeChangedS2CPacket"); + S2C_PACKETS_R.put("WorldBorderWarningTimeChangedS2CPacket", net.minecraft.network.packet.s2c.play.WorldBorderWarningTimeChangedS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldEventS2CPacket.class, "WorldEventS2CPacket"); + S2C_PACKETS_R.put("WorldEventS2CPacket", net.minecraft.network.packet.s2c.play.WorldEventS2CPacket.class); + S2C_PACKETS.put(net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket.class, "WorldTimeUpdateS2CPacket"); + S2C_PACKETS_R.put("WorldTimeUpdateS2CPacket", net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket.class); } private PacketUtils() { diff --git a/src/main/java/meteordevelopment/meteorclient/utils/network/PacketUtilsUtil.java b/src/main/java/meteordevelopment/meteorclient/utils/network/PacketUtilsUtil.java index 28fc10504b..fdc3b839a8 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/network/PacketUtilsUtil.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/network/PacketUtilsUtil.java @@ -15,7 +15,10 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.util.Comparator; import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; public class PacketUtilsUtil { private static final String packetRegistryClass = """ @@ -128,8 +131,7 @@ private PacketUtilsUtil() { public static void main(String[] args) { try { init(); - } - catch (IOException e) { + } catch (IOException e) { throw new RuntimeException(e); } } @@ -180,11 +182,17 @@ public static void init() throws IOException { // Write static block writer.write(" static {\n"); + Comparator> packetsComparator = Comparator + .comparing((Class cls) -> cls.getName().substring(cls.getName().lastIndexOf('.') + 1)) + .thenComparing(Class::getName); + // Client -> Sever Packets Reflections c2s = new Reflections("net.minecraft.network.packet.c2s", Scanners.SubTypes); Set> c2sPackets = c2s.getSubTypesOf(Packet.class); + SortedSet> sortedC2SPackets = new TreeSet<>(packetsComparator); + sortedC2SPackets.addAll(c2sPackets); - for (Class c2sPacket : c2sPackets) { + for (Class c2sPacket : sortedC2SPackets) { String name = c2sPacket.getName(); String className = name.substring(name.lastIndexOf('.') + 1).replace('$', '.'); String fullName = name.replace('$', '.'); @@ -198,8 +206,10 @@ public static void init() throws IOException { // Server -> Client Packets Reflections s2c = new Reflections("net.minecraft.network.packet.s2c", Scanners.SubTypes); Set> s2cPackets = s2c.getSubTypesOf(Packet.class); + SortedSet> sortedS2CPackets = new TreeSet<>(packetsComparator); + sortedS2CPackets.addAll(s2cPackets); - for (Class s2cPacket : s2cPackets) { + for (Class s2cPacket : sortedS2CPackets) { if (s2cPacket == BundlePacket.class || s2cPacket == BundleSplitterPacket.class) continue; String name = s2cPacket.getName(); String className = name.substring(name.lastIndexOf('.') + 1).replace('$', '.'); diff --git a/src/main/java/meteordevelopment/meteorclient/utils/player/CustomPlayerInput.java b/src/main/java/meteordevelopment/meteorclient/utils/player/CustomPlayerInput.java index 5cf032c1c2..4784492264 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/player/CustomPlayerInput.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/player/CustomPlayerInput.java @@ -12,7 +12,7 @@ public class CustomPlayerInput extends Input { @Override - public void tick(boolean slowDown, float f) { + public void tick() { movementForward = mc.player.input.playerInput.forward() == mc.player.input.playerInput.backward() ? 0.0F : (mc.player.input.playerInput.forward() ? 1.0F : -1.0F); movementSideways = mc.player.input.playerInput.left() == mc.player.input.playerInput.right() ? 0.0F : (mc.player.input.playerInput.left() ? 1.0F : -1.0F); diff --git a/src/main/java/meteordevelopment/meteorclient/utils/player/TitleScreenCredits.java b/src/main/java/meteordevelopment/meteorclient/utils/player/TitleScreenCredits.java index 2b3589862b..0d8b7fe1ac 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/player/TitleScreenCredits.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/player/TitleScreenCredits.java @@ -48,7 +48,7 @@ private static void init() { GithubRepo repo = credit.addon.getRepo(); Http.Request request = Http.get("https://api.github.com/repos/%s/branches/%s".formatted(repo.getOwnerName(), repo.branch())); - request.exceptionHandler(e -> MeteorClient.LOG.error("Could not fetch repository information for addon '%s'.".formatted(credit.addon.name), e)); + request.exceptionHandler(e -> MeteorClient.LOG.error("Could not fetch repository information for addon '{}'.", credit.addon.name, e)); repo.authenticate(request); HttpResponse res = request.sendJsonResponse(Response.class); diff --git a/src/main/java/meteordevelopment/meteorclient/utils/render/ByteTexture.java b/src/main/java/meteordevelopment/meteorclient/utils/render/ByteTexture.java index a5bb122ce9..1a5fdfae8d 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/render/ByteTexture.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/render/ByteTexture.java @@ -7,10 +7,8 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.texture.AbstractTexture; -import net.minecraft.resource.ResourceManager; import org.lwjgl.BufferUtils; -import java.io.IOException; import java.nio.Buffer; import java.nio.ByteBuffer; @@ -60,9 +58,6 @@ private void upload(int width, int height, ByteBuffer buffer, Format format, Fil glTexImage2D(GL_TEXTURE_2D, 0, format.toOpenGL(), width, height, 0, format.toOpenGL(), GL_UNSIGNED_BYTE, buffer); } - @Override - public void load(ResourceManager manager) throws IOException {} - public enum Format { A, RGB, diff --git a/src/main/java/meteordevelopment/meteorclient/utils/tooltip/BannerTooltipComponent.java b/src/main/java/meteordevelopment/meteorclient/utils/tooltip/BannerTooltipComponent.java index a3668425c6..d448ddbfd3 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/tooltip/BannerTooltipComponent.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/tooltip/BannerTooltipComponent.java @@ -33,13 +33,13 @@ public class BannerTooltipComponent implements MeteorTooltipData, TooltipCompone public BannerTooltipComponent(ItemStack banner) { this.color = ((BannerItem) banner.getItem()).getColor(); this.patterns = banner.getOrDefault(DataComponentTypes.BANNER_PATTERNS, BannerPatternsComponent.DEFAULT); - this.bannerField = mc.getEntityModelLoader().getModelPart(EntityModelLayers.BANNER).getChild("flag"); + this.bannerField = mc.getLoadedEntityModels().getModelPart(EntityModelLayers.STANDING_BANNER_FLAG).getChild("flag"); } public BannerTooltipComponent(DyeColor color, BannerPatternsComponent patterns) { this.color = color; this.patterns = patterns; - this.bannerField = mc.getEntityModelLoader().getModelPart(EntityModelLayers.BANNER).getChild("flag"); + this.bannerField = mc.getLoadedEntityModels().getModelPart(EntityModelLayers.STANDING_BANNER_FLAG).getChild("flag"); } @Override diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 3c24487f47..eaceae0292 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -44,7 +44,7 @@ }, "depends": { "java": ">=21", - "minecraft": ["1.21.2", "${minecraft_version}"], + "minecraft": ["${minecraft_version}"], "fabricloader": ">=${loader_version}" }, "breaks": { @@ -52,7 +52,7 @@ "feather": "*", "origins": "*", "wurst": "*", - "sodium": "<0.6.0", + "sodium": "<0.6.5", "morechathistory": "*" } } diff --git a/src/main/resources/meteor-client.accesswidener b/src/main/resources/meteor-client.accesswidener index 6d1b444d9a..161f9f95be 100644 --- a/src/main/resources/meteor-client.accesswidener +++ b/src/main/resources/meteor-client.accesswidener @@ -29,3 +29,9 @@ accessible class net/minecraft/client/render/RenderLayer$MultiPhase accessible field net/minecraft/client/render/RenderPhase ITEM_ENTITY_TARGET Lnet/minecraft/client/render/RenderPhase$Target; accessible class net/minecraft/client/render/RenderLayer$MultiPhaseParameters accessible class net/minecraft/client/render/RenderPhase$Target + +# Item Physics +accessible field net/minecraft/client/render/item/ItemRenderState layers [Lnet/minecraft/client/render/item/ItemRenderState$LayerRenderState; +accessible field net/minecraft/client/render/item/ItemRenderState layerCount I +accessible field net/minecraft/client/render/item/ItemRenderState$LayerRenderState model Lnet/minecraft/client/render/model/BakedModel; +accessible method net/minecraft/client/render/item/ItemRenderState$LayerRenderState getTransformation ()Lnet/minecraft/client/render/model/json/Transformation; diff --git a/src/main/resources/meteor-client.mixins.json b/src/main/resources/meteor-client.mixins.json index a90fc5f167..0c6c2875e7 100644 --- a/src/main/resources/meteor-client.mixins.json +++ b/src/main/resources/meteor-client.mixins.json @@ -11,6 +11,7 @@ "AbstractClientPlayerEntityMixin", "AbstractFurnaceScreenHandlerMixin", "AbstractFurnaceScreenMixin", + "AbstractSignBlockEntityRendererMixin", "AbstractSignEditScreenAccessor", "AbstractSignEditScreenMixin", "ArmorFeatureRendererMixin", @@ -22,6 +23,7 @@ "BeaconScreenMixin", "BiomeColorsMixin", "BlockCollisionSpliteratorMixin", + "BlockColorsMixin", "BlockEntityRenderDispatcherMixin", "BlockEntityTypeAccessor", "BlockHitResultAccessor", @@ -64,7 +66,7 @@ "ClientWorldMixin", "CloseHandledScreenC2SPacketAccessor", "CobwebBlockMixin", - "CompassAnglePredicateProviderMixin", + "CompassStateMixin", "ConnectScreenMixin", "ContainerComponentAccessor", "CrashReportMixin", @@ -95,7 +97,6 @@ "FireworksSparkParticleSubMixin", "FishingBobberEntityMixin", "FluidRendererMixin", - "FoliageColorsMixin", "GameOptionsMixin", "GameRendererMixin", "HandledScreenAccessor", @@ -161,10 +162,8 @@ "ServerResourcePackLoaderMixin", "ShapeIndexBufferAccessor", "ShulkerBoxBlockMixin", - "SignBlockEntityRendererMixin", "SimpleEntityLookupAccessor", "SimpleOptionMixin", - "SkyRenderingMixin", "SlimeBlockMixin", "SlotMixin", "SoundSystemMixin",