From b36f18e93d1941870555c7011d08f1dda15a8a05 Mon Sep 17 00:00:00 2001 From: Connor Slade Date: Fri, 28 Jun 2024 19:33:17 -0400 Subject: [PATCH] Working packet cancler --- .../connorcode/sigmautils/commands/Dump.java | 18 -- .../sigmautils/config/ConfigGui.java | 6 +- .../config/settings/list/PacketList.java | 59 +++--- .../sigmautils/misc/util/NetworkUtils.java | 45 +---- .../sigmautils/mixin/EntityMixin.java | 6 +- .../modules/misc/PacketCanceler.java | 18 +- .../rendering/ShowInvisibleEntities.java | 10 +- .../resources/assets/sigma-utils/packets.txt | 189 ------------------ todo.txt | 8 +- 9 files changed, 59 insertions(+), 300 deletions(-) delete mode 100644 src/main/resources/assets/sigma-utils/packets.txt diff --git a/src/main/java/com/connorcode/sigmautils/commands/Dump.java b/src/main/java/com/connorcode/sigmautils/commands/Dump.java index ee19a07..736aa01 100644 --- a/src/main/java/com/connorcode/sigmautils/commands/Dump.java +++ b/src/main/java/com/connorcode/sigmautils/commands/Dump.java @@ -3,7 +3,6 @@ import com.connorcode.sigmautils.SigmaUtils; import com.connorcode.sigmautils.config.Config; import com.connorcode.sigmautils.config.settings.*; -import com.connorcode.sigmautils.misc.util.NetworkUtils; import com.connorcode.sigmautils.module.Category; import com.connorcode.sigmautils.module.DocumentedEnum; import com.connorcode.sigmautils.module.Module; @@ -54,23 +53,6 @@ int execute(CommandContext context) throws IOExceptio var dumps = directory.resolve("dump").toFile(); dumps.mkdirs(); - if (resource.equals("packets")) { - StringBuilder out = new StringBuilder("# Generated with `/util dump packets` (only works in dev builds)\n"); - var mr = FabricLoader.getInstance().getMappingResolver(); - for (var i : NetworkUtils.getPackets() - .keySet() - .stream() - .sorted(Comparator.comparing(Class::getSimpleName)) - .toList()) - out.append(mr.unmapClassName("intermediary", i.getName())) - .append(" ") - .append(i.getSimpleName()) - .append("\n"); - Files.write(dumps.toPath().resolve("packets.txt"), out.toString().getBytes()); - context.getSource().sendFeedback(Text.of("Dumped packets to " + dumps.toPath().resolve("packets.txt"))); - return 0; - } - if (resource.equals("docs")) { var docs = directory.resolve("dump").resolve("docs").toFile(); docs.mkdirs(); diff --git a/src/main/java/com/connorcode/sigmautils/config/ConfigGui.java b/src/main/java/com/connorcode/sigmautils/config/ConfigGui.java index 9bd1877..6a06cae 100644 --- a/src/main/java/com/connorcode/sigmautils/config/ConfigGui.java +++ b/src/main/java/com/connorcode/sigmautils/config/ConfigGui.java @@ -64,15 +64,15 @@ protected void init() { } public void render(DrawContext drawContext, int mouseX, int mouseY, float delta) { - int padding = getPadding(); this.renderBackground(drawContext, mouseX, mouseY, delta); + int padding = getPadding(); + super.render(drawContext, mouseX, mouseY, delta); + for (int x = 0; x < Category.realValues().length; x++) drawContext.drawCenteredTextWithShadow(textRenderer, Text.of("§f§n§l" + Category.realValues()[x].toString()), 75 + padding + x * (150 + padding), padding, 0); - - super.render(drawContext, mouseX, mouseY, delta); } public void close() { diff --git a/src/main/java/com/connorcode/sigmautils/config/settings/list/PacketList.java b/src/main/java/com/connorcode/sigmautils/config/settings/list/PacketList.java index 8f8c162..e2fa777 100644 --- a/src/main/java/com/connorcode/sigmautils/config/settings/list/PacketList.java +++ b/src/main/java/com/connorcode/sigmautils/config/settings/list/PacketList.java @@ -3,23 +3,24 @@ import com.connorcode.sigmautils.config.settings.DynamicListSetting; import com.connorcode.sigmautils.misc.util.NetworkUtils; -import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.minecraft.client.gui.screen.Screen; import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtIntArray; +import net.minecraft.nbt.NbtList; +import net.minecraft.nbt.NbtString; import net.minecraft.network.NetworkSide; import net.minecraft.network.packet.Packet; +import net.minecraft.network.packet.PacketType; +import net.minecraft.network.state.PlayStateFactories; +import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; -import java.util.Optional; -public class PacketList implements DynamicListSetting.ResourceManager>> { - DynamicListSetting>> setting; - Object2IntOpenHashMap>> packets = null; +public class PacketList implements DynamicListSetting.ResourceManager>> { + DynamicListSetting>> setting; NetworkSide side; - public PacketList(DynamicListSetting>> setting, NetworkSide side) { + public PacketList(DynamicListSetting>> setting, NetworkSide side) { this.setting = setting; this.side = side; } @@ -30,22 +31,24 @@ public int width() { } @Override - public List>> getAllResources() { - return getPackets().keySet().stream().toList(); + public List>> getAllResources() { + var out = new ArrayList>>(); + (side == NetworkSide.SERVERBOUND ? PlayStateFactories.C2S : PlayStateFactories.S2C).forEachPacketType(((type, protocolId) -> out.add(type))); + return out; } @Override - public String getDisplay(Class> resource) { - return Optional.ofNullable(NetworkUtils.getPacketName(resource)).orElse(resource.getName()); + public String getDisplay(PacketType> resource) { + return resource.id().toString(); } @Override - public void render(Class> resource, Screen data, int x, int y) { + public void render(PacketType> resource, Screen data, int x, int y) { SimpleList.render(setting, resource, getDisplay(resource), data, x, y, 0); } @Override - public boolean renderSelector(Class> resource, Screen data, int x, int y) { + public boolean renderSelector(PacketType> resource, Screen data, int x, int y) { if (setting.value().contains(resource)) return false; SimpleList.selector(setting, resource, getDisplay(resource), data, x, y, 0); @@ -53,29 +56,21 @@ public boolean renderSelector(Class> resource, Screen data, } @Override - public NbtElement serialize(List>> resources) { - var thisPackets = getPackets(); - var list = resources.stream().mapToInt(thisPackets::getInt).toArray(); - return new NbtIntArray(list); + public NbtElement serialize(List>> resources) { + var out = new NbtList(); + for (var resource : resources) + out.add(NbtString.of(resource.id().getPath())); + return out; } @Override - public List>> deserialize(NbtElement nbt) { - if (!(nbt instanceof NbtIntArray resourceList)) + public List>> deserialize(NbtElement nbt) { + if (!(nbt instanceof NbtList resourceList)) return null; - var list = resourceList.stream().map(e -> getPacket(e.intValue())).toList(); - return new ArrayList<>(list); - } - - Class> getPacket(int id) { - var thisPackets = getPackets(); - return thisPackets.keySet().stream().filter(e -> thisPackets.getInt(e) == id).findFirst().orElse(null); - } - - Object2IntOpenHashMap>> getPackets() { - if (packets == null) - this.packets = NetworkUtils.getPackets(side); - return packets; + var out = new ArrayList>>(); + for (var resource : resourceList) + out.add(NetworkUtils.getPacket(Identifier.of(resource.asString()))); + return new ArrayList<>(out); } @Override diff --git a/src/main/java/com/connorcode/sigmautils/misc/util/NetworkUtils.java b/src/main/java/com/connorcode/sigmautils/misc/util/NetworkUtils.java index f2ad64f..a54ad9d 100644 --- a/src/main/java/com/connorcode/sigmautils/misc/util/NetworkUtils.java +++ b/src/main/java/com/connorcode/sigmautils/misc/util/NetworkUtils.java @@ -3,12 +3,10 @@ import com.connorcode.sigmautils.misc.TextStyle; import com.mojang.authlib.exceptions.AuthenticationException; import com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService; -import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.api.MappingResolver; -import net.minecraft.network.NetworkSide; import net.minecraft.network.packet.Packet; -import org.jetbrains.annotations.Nullable; +import net.minecraft.network.packet.PacketType; +import net.minecraft.network.state.PlayStateFactories; +import net.minecraft.util.Identifier; import java.util.HashMap; import java.util.UUID; @@ -16,42 +14,17 @@ import static com.connorcode.sigmautils.SigmaUtils.client; public class NetworkUtils { - static HashMap packetNames = new HashMap<>(); - static MappingResolver mappingResolver = FabricLoader.getInstance().getMappingResolver(); + static HashMap>> packetNames = new HashMap<>(); private static AuthStatus authStatus = AuthStatus.Unknown; private static long lastAuthStatusCheck = 0; - public static Object2IntOpenHashMap>> getPackets(NetworkSide side) { - var packets = new Object2IntOpenHashMap>>(); - // TODO: Fix -// Arrays.stream(NetworkPhase.values()) -// .map(state -> state.packetHandlers.get(side)) -// .filter(Objects::nonNull) -// .forEach(handler -> packets.putAll(handler.backingHandler.packetIds)); - return packets; + static { + PlayStateFactories.C2S.forEachPacketType((type, protocolId) -> packetNames.put(type.id(), type)); + PlayStateFactories.S2C.forEachPacketType((type, protocolId) -> packetNames.put(type.id(), type)); } - public static Object2IntOpenHashMap>> getPackets() { - var packets = new Object2IntOpenHashMap>>(); - packets.putAll(getPackets(NetworkSide.CLIENTBOUND)); - packets.putAll(getPackets(NetworkSide.SERVERBOUND)); - return packets; - } - - public static String getPacketName(Class> packet) { - return getPacketName(packet.getName()); - } - - @Nullable - public static String getPacketName(String bytecodeName) { - var intermediary = mappingResolver.unmapClassName("intermediary", bytecodeName); - if (packetNames.isEmpty()) - Util.loadResourceString("assets/sigma-utils/packets.txt") - .lines() - .filter(line -> !line.startsWith("#")) - .map(line -> line.split(" ")) - .forEach(parts -> packetNames.put(parts[0], parts[1])); - return packetNames.get(intermediary); + public static PacketType> getPacket(Identifier id) { + return packetNames.get(id); } public static synchronized AuthStatus getAuthStatus() { diff --git a/src/main/java/com/connorcode/sigmautils/mixin/EntityMixin.java b/src/main/java/com/connorcode/sigmautils/mixin/EntityMixin.java index e5d3706..e20118c 100644 --- a/src/main/java/com/connorcode/sigmautils/mixin/EntityMixin.java +++ b/src/main/java/com/connorcode/sigmautils/mixin/EntityMixin.java @@ -13,16 +13,14 @@ public class EntityMixin { @Inject(method = "isInvisible", at = @At("HEAD"), cancellable = true) void isInvisible(CallbackInfoReturnable cir) { - if (!Config.getEnabled(ShowInvisibleEntities.class) || - !ShowInvisibleEntities.isInvisible((Entity) (Object) this)) + if (!Config.getEnabled(ShowInvisibleEntities.class) || ShowInvisibleEntities.isVisible((Entity) (Object) this)) return; cir.setReturnValue(false); } @Inject(method = "isInvisibleTo", at = @At("HEAD"), cancellable = true) void isInvisibleTo(PlayerEntity player, CallbackInfoReturnable cir) { - if (!Config.getEnabled(ShowInvisibleEntities.class) || - !ShowInvisibleEntities.isInvisible((Entity) (Object) this)) + if (!Config.getEnabled(ShowInvisibleEntities.class) || ShowInvisibleEntities.isVisible((Entity) (Object) this)) return; cir.setReturnValue(false); } diff --git a/src/main/java/com/connorcode/sigmautils/modules/misc/PacketCanceler.java b/src/main/java/com/connorcode/sigmautils/modules/misc/PacketCanceler.java index 32ceffd..c494b6f 100644 --- a/src/main/java/com/connorcode/sigmautils/modules/misc/PacketCanceler.java +++ b/src/main/java/com/connorcode/sigmautils/modules/misc/PacketCanceler.java @@ -6,11 +6,11 @@ import com.connorcode.sigmautils.event.EventHandler; import com.connorcode.sigmautils.event.network.PacketReceiveEvent; import com.connorcode.sigmautils.event.network.PacketSendEvent; -import com.connorcode.sigmautils.misc.util.NetworkUtils; import com.connorcode.sigmautils.module.Module; import com.connorcode.sigmautils.module.ModuleInfo; import net.minecraft.network.NetworkSide; import net.minecraft.network.packet.Packet; +import net.minecraft.network.packet.PacketType; import net.minecraft.text.Text; import static com.connorcode.sigmautils.SigmaUtils.client; @@ -18,41 +18,41 @@ // Warning: When updating versions the packets may change and this won't be automatically updated, causing unexpected behaviour (gasp) @ModuleInfo(description = "Cancels the specified packets.") public class PacketCanceler extends Module { - DynamicListSetting>> clientPackets = + DynamicListSetting>> clientPackets = new DynamicListSetting<>(PacketCanceler.class, "Client Packets", PacketCanceler::getClientPacketManager).description("Packets to the client.").build(); - DynamicListSetting>> serverPackets = + DynamicListSetting>> serverPackets = new DynamicListSetting<>(PacketCanceler.class, "Server Packets", PacketCanceler::getServerPacketManager).description("Packets to the server.").build(); BoolSetting debug = new BoolSetting(PacketCanceler.class, "Debug") .description("Prints debug messages when a packet is canceled.") .build(); - static DynamicListSetting.ResourceManager>> getClientPacketManager(DynamicListSetting>> setting) { + static DynamicListSetting.ResourceManager>> getClientPacketManager(DynamicListSetting>> setting) { return new PacketList(setting, NetworkSide.CLIENTBOUND); } - static DynamicListSetting.ResourceManager>> getServerPacketManager(DynamicListSetting>> setting) { + static DynamicListSetting.ResourceManager>> getServerPacketManager(DynamicListSetting>> setting) { return new PacketList(setting, NetworkSide.SERVERBOUND); } @EventHandler void onPacketSend(PacketSendEvent packet) { - if (!enabled || !serverPackets.value().contains(packet.get().getClass())) return; + if (!enabled || !serverPackets.value().contains(packet.packet.getPacketId())) return; sendDebug(NetworkSide.SERVERBOUND, packet.get()); packet.cancel(); } @EventHandler void onPacketReceive(PacketReceiveEvent packet) { - if (!enabled || !clientPackets.value().contains(packet.get().getClass())) return; + if (!enabled || !clientPackets.value().contains(packet.packet.getPacketId())) return; sendDebug(NetworkSide.CLIENTBOUND, packet.get()); packet.cancel(); } void sendDebug(NetworkSide side, Packet packet) { if (client.player == null || !debug.value()) return; - client.player.sendMessage(Text.of(String.format("[SIGMAUTILS::PacketCancel] Cancelling %s packet %s", side, - NetworkUtils.getPacketName(packet.getClass().getName()))), false); + client.player.sendMessage(Text.of(String.format("[SIGMAUTILS::PacketCancel] Cancelling %s packet %s", side, packet.getPacketId() + .id().getPath())), false); } } diff --git a/src/main/java/com/connorcode/sigmautils/modules/rendering/ShowInvisibleEntities.java b/src/main/java/com/connorcode/sigmautils/modules/rendering/ShowInvisibleEntities.java index 31ac26e..5c1e724 100644 --- a/src/main/java/com/connorcode/sigmautils/modules/rendering/ShowInvisibleEntities.java +++ b/src/main/java/com/connorcode/sigmautils/modules/rendering/ShowInvisibleEntities.java @@ -3,7 +3,6 @@ import com.connorcode.sigmautils.config.settings.DynamicListSetting; import com.connorcode.sigmautils.config.settings.EnumSetting; -import com.connorcode.sigmautils.config.settings.NumberSetting; import com.connorcode.sigmautils.config.settings.list.EntityList; import com.connorcode.sigmautils.misc.util.Util; import com.connorcode.sigmautils.module.Module; @@ -13,16 +12,17 @@ @ModuleInfo(description = "Render all invisible entities") public class ShowInvisibleEntities extends Module { - public static NumberSetting opacity = new NumberSetting(ShowInvisibleEntities.class, "Opacity", 0, 1).value(0.25) - .description("Opacity of invisible entities.") - .build(); + // TODO: Show invis entities as translucent +// public static NumberSetting opacity = new NumberSetting(ShowInvisibleEntities.class, "Opacity", 0, 1).value(0.25) +// .description("Opacity of invisible entities.") +// .build(); static EnumSetting filterType = Util.filterSetting(ShowInvisibleEntities.class).build(); static DynamicListSetting> entities = new DynamicListSetting<>(ShowInvisibleEntities.class, "Entities", EntityList::new).description( "Entities show while invisible. Whitelisting an entities will make it not render flipped.") .build(); - public static boolean isInvisible(Entity entity) { + public static boolean isVisible(Entity entity) { var inList = entities.value().contains(entity.getType()); return filterType.value() == Util.FilterType.Whitelist == inList; } diff --git a/src/main/resources/assets/sigma-utils/packets.txt b/src/main/resources/assets/sigma-utils/packets.txt deleted file mode 100644 index 9a3dbc8..0000000 --- a/src/main/resources/assets/sigma-utils/packets.txt +++ /dev/null @@ -1,189 +0,0 @@ -# Generated with `/util dump packets` (only works in dev builds) -net.minecraft.class_8590 AcknowledgeChunksC2SPacket -net.minecraft.class_8591 AcknowledgeReconfigurationC2SPacket -net.minecraft.class_2859 AdvancementTabC2SPacket -net.minecraft.class_2779 AdvancementUpdateS2CPacket -net.minecraft.class_2620 BlockBreakingProgressS2CPacket -net.minecraft.class_2622 BlockEntityUpdateS2CPacket -net.minecraft.class_2623 BlockEventS2CPacket -net.minecraft.class_2626 BlockUpdateS2CPacket -net.minecraft.class_2836 BoatPaddleStateC2SPacket -net.minecraft.class_2820 BookUpdateC2SPacket -net.minecraft.class_2629 BossBarS2CPacket -net.minecraft.class_8037 BundleSplitterPacket -net.minecraft.class_2811 ButtonClickC2SPacket -net.minecraft.class_2797 ChatMessageC2SPacket -net.minecraft.class_7438 ChatMessageS2CPacket -net.minecraft.class_7597 ChatSuggestionsS2CPacket -net.minecraft.class_8212 ChunkBiomeDataS2CPacket -net.minecraft.class_2672 ChunkDataS2CPacket -net.minecraft.class_2637 ChunkDeltaUpdateS2CPacket -net.minecraft.class_4273 ChunkLoadDistanceS2CPacket -net.minecraft.class_4282 ChunkRenderDistanceCenterS2CPacket -net.minecraft.class_8738 ChunkSentS2CPacket -net.minecraft.class_5888 ClearTitleS2CPacket -net.minecraft.class_2813 ClickSlotC2SPacket -net.minecraft.class_2848 ClientCommandC2SPacket -net.minecraft.class_2803 ClientOptionsC2SPacket -net.minecraft.class_2799 ClientStatusC2SPacket -net.minecraft.class_2815 CloseHandledScreenC2SPacket -net.minecraft.class_2645 CloseScreenS2CPacket -net.minecraft.class_7472 CommandExecutionC2SPacket -net.minecraft.class_2639 CommandSuggestionsS2CPacket -net.minecraft.class_2641 CommandTreeS2CPacket -net.minecraft.class_6373 CommonPingS2CPacket -net.minecraft.class_6374 CommonPongC2SPacket -net.minecraft.class_2656 CooldownUpdateS2CPacket -net.minecraft.class_2695 CraftFailedResponseS2CPacket -net.minecraft.class_2840 CraftRequestC2SPacket -net.minecraft.class_2873 CreativeInventoryActionC2SPacket -net.minecraft.class_2817 CustomPayloadC2SPacket -net.minecraft.class_2658 CustomPayloadS2CPacket -net.minecraft.class_8043 DamageTiltS2CPacket -net.minecraft.class_5892 DeathMessageS2CPacket -net.minecraft.class_2632 DifficultyS2CPacket -net.minecraft.class_2661 DisconnectS2CPacket -net.minecraft.class_8734 DynamicRegistriesS2CPacket -net.minecraft.class_5890 EndCombatS2CPacket -net.minecraft.class_5891 EnterCombatS2CPacket -net.minecraft.class_8593 EnterConfigurationC2SPacket -net.minecraft.class_8588 EnterReconfigurationS2CPacket -net.minecraft.class_2716 EntitiesDestroyS2CPacket -net.minecraft.class_2616 EntityAnimationS2CPacket -net.minecraft.class_2740 EntityAttachS2CPacket -net.minecraft.class_2781 EntityAttributesS2CPacket -net.minecraft.class_8143 EntityDamageS2CPacket -net.minecraft.class_2744 EntityEquipmentUpdateS2CPacket -net.minecraft.class_2752 EntityPassengersSetS2CPacket -net.minecraft.class_2777 EntityPositionS2CPacket -net.minecraft.class_2726 EntitySetHeadYawS2CPacket -net.minecraft.class_2604 EntitySpawnS2CPacket -net.minecraft.class_2783 EntityStatusEffectS2CPacket -net.minecraft.class_2663 EntityStatusS2CPacket -net.minecraft.class_2739 EntityTrackerUpdateS2CPacket -net.minecraft.class_2743 EntityVelocityUpdateS2CPacket -net.minecraft.class_2748 ExperienceBarUpdateS2CPacket -net.minecraft.class_2606 ExperienceOrbSpawnS2CPacket -net.minecraft.class_2664 ExplosionS2CPacket -net.minecraft.class_7832 FeaturesS2CPacket -net.minecraft.class_2828$class_2830 Full -net.minecraft.class_2678 GameJoinS2CPacket -net.minecraft.class_7439 GameMessageS2CPacket -net.minecraft.class_2668 GameStateChangeS2CPacket -net.minecraft.class_2879 HandSwingC2SPacket -net.minecraft.class_2889 HandshakeC2SPacket -net.minecraft.class_2749 HealthUpdateS2CPacket -net.minecraft.class_2649 InventoryS2CPacket -net.minecraft.class_2775 ItemPickupAnimationS2CPacket -net.minecraft.class_5194 JigsawGeneratingC2SPacket -net.minecraft.class_2827 KeepAliveC2SPacket -net.minecraft.class_2670 KeepAliveS2CPacket -net.minecraft.class_2676 LightUpdateS2CPacket -net.minecraft.class_2907 LoginCompressionS2CPacket -net.minecraft.class_2909 LoginDisconnectS2CPacket -net.minecraft.class_2915 LoginHelloC2SPacket -net.minecraft.class_2905 LoginHelloS2CPacket -net.minecraft.class_2917 LoginKeyC2SPacket -net.minecraft.class_2899 LoginQueryRequestS2CPacket -net.minecraft.class_2913 LoginQueryResponseC2SPacket -net.minecraft.class_2901 LoginSuccessS2CPacket -net.minecraft.class_2828$class_2831 LookAndOnGround -net.minecraft.class_2707 LookAtS2CPacket -net.minecraft.class_2683 MapUpdateS2CPacket -net.minecraft.class_7640 MessageAcknowledgmentC2SPacket -net.minecraft.class_2684$class_2685 MoveRelative -net.minecraft.class_2774 NbtQueryResponseS2CPacket -net.minecraft.class_2828$class_5911 OnGroundOnly -net.minecraft.class_2648 OpenHorseScreenS2CPacket -net.minecraft.class_3944 OpenScreenS2CPacket -net.minecraft.class_3895 OpenWrittenBookS2CPacket -net.minecraft.class_5894 OverlayMessageS2CPacket -net.minecraft.class_2675 ParticleS2CPacket -net.minecraft.class_2838 PickFromInventoryC2SPacket -net.minecraft.class_2923 PingResultS2CPacket -net.minecraft.class_2765 PlaySoundFromEntityS2CPacket -net.minecraft.class_2767 PlaySoundS2CPacket -net.minecraft.class_2696 PlayerAbilitiesS2CPacket -net.minecraft.class_2846 PlayerActionC2SPacket -net.minecraft.class_4463 PlayerActionResponseS2CPacket -net.minecraft.class_2851 PlayerInputC2SPacket -net.minecraft.class_2885 PlayerInteractBlockC2SPacket -net.minecraft.class_2824 PlayerInteractEntityC2SPacket -net.minecraft.class_2886 PlayerInteractItemC2SPacket -net.minecraft.class_2772 PlayerListHeaderS2CPacket -net.minecraft.class_2703 PlayerListS2CPacket -net.minecraft.class_2708 PlayerPositionLookS2CPacket -net.minecraft.class_7828 PlayerRemoveS2CPacket -net.minecraft.class_2724 PlayerRespawnS2CPacket -net.minecraft.class_7861 PlayerSessionC2SPacket -net.minecraft.class_2759 PlayerSpawnPositionS2CPacket -net.minecraft.class_2828$class_2829 PositionAndOnGround -net.minecraft.class_7827 ProfilelessChatMessageS2CPacket -net.minecraft.class_2795 QueryBlockNbtC2SPacket -net.minecraft.class_2822 QueryEntityNbtC2SPacket -net.minecraft.class_2935 QueryPingC2SPacket -net.minecraft.class_2937 QueryRequestC2SPacket -net.minecraft.class_2924 QueryResponseS2CPacket -net.minecraft.class_8736 ReadyC2SPacket -net.minecraft.class_8733 ReadyS2CPacket -net.minecraft.class_2853 RecipeBookDataC2SPacket -net.minecraft.class_5427 RecipeCategoryOptionsC2SPacket -net.minecraft.class_2718 RemoveEntityStatusEffectS2CPacket -net.minecraft.class_7617 RemoveMessageS2CPacket -net.minecraft.class_2855 RenameItemC2SPacket -net.minecraft.class_2805 RequestCommandCompletionsC2SPacket -net.minecraft.class_9053 ResourcePackRemoveS2CPacket -net.minecraft.class_2720 ResourcePackSendS2CPacket -net.minecraft.class_2856 ResourcePackStatusC2SPacket -net.minecraft.class_2684$class_2687 Rotate -net.minecraft.class_2684$class_2686 RotateAndMoveRelative -net.minecraft.class_2736 ScoreboardDisplayS2CPacket -net.minecraft.class_2751 ScoreboardObjectiveUpdateS2CPacket -net.minecraft.class_9006 ScoreboardScoreResetS2CPacket -net.minecraft.class_2757 ScoreboardScoreUpdateS2CPacket -net.minecraft.class_2651 ScreenHandlerPropertyUpdateS2CPacket -net.minecraft.class_2653 ScreenHandlerSlotUpdateS2CPacket -net.minecraft.class_2729 SelectAdvancementTabS2CPacket -net.minecraft.class_2863 SelectMerchantTradeC2SPacket -net.minecraft.class_7495 ServerMetadataS2CPacket -net.minecraft.class_2734 SetCameraEntityS2CPacket -net.minecraft.class_3943 SetTradeOffersS2CPacket -net.minecraft.class_2693 SignEditorOpenS2CPacket -net.minecraft.class_6682 SimulationDistanceS2CPacket -net.minecraft.class_8875 SlotChangedStateC2SPacket -net.minecraft.class_2884 SpectatorTeleportC2SPacket -net.minecraft.class_8739 StartChunkSendS2CPacket -net.minecraft.class_2617 StatisticsS2CPacket -net.minecraft.class_2770 StopSoundS2CPacket -net.minecraft.class_5903 SubtitleS2CPacket -net.minecraft.class_2788 SynchronizeRecipesS2CPacket -net.minecraft.class_2790 SynchronizeTagsS2CPacket -net.minecraft.class_5900 TeamS2CPacket -net.minecraft.class_2793 TeleportConfirmC2SPacket -net.minecraft.class_8914 TickStepS2CPacket -net.minecraft.class_5905 TitleFadeS2CPacket -net.minecraft.class_5904 TitleS2CPacket -net.minecraft.class_2666 UnloadChunkS2CPacket -net.minecraft.class_2713 UnlockRecipesS2CPacket -net.minecraft.class_2866 UpdateBeaconC2SPacket -net.minecraft.class_2870 UpdateCommandBlockC2SPacket -net.minecraft.class_2871 UpdateCommandBlockMinecartC2SPacket -net.minecraft.class_4210 UpdateDifficultyC2SPacket -net.minecraft.class_4211 UpdateDifficultyLockC2SPacket -net.minecraft.class_3753 UpdateJigsawC2SPacket -net.minecraft.class_2842 UpdatePlayerAbilitiesC2SPacket -net.minecraft.class_2868 UpdateSelectedSlotC2SPacket -net.minecraft.class_2735 UpdateSelectedSlotS2CPacket -net.minecraft.class_2877 UpdateSignC2SPacket -net.minecraft.class_2875 UpdateStructureBlockC2SPacket -net.minecraft.class_8913 UpdateTickRateS2CPacket -net.minecraft.class_2833 VehicleMoveC2SPacket -net.minecraft.class_2692 VehicleMoveS2CPacket -net.minecraft.class_5895 WorldBorderCenterChangedS2CPacket -net.minecraft.class_5889 WorldBorderInitializeS2CPacket -net.minecraft.class_5896 WorldBorderInterpolateSizeS2CPacket -net.minecraft.class_5897 WorldBorderSizeChangedS2CPacket -net.minecraft.class_5899 WorldBorderWarningBlocksChangedS2CPacket -net.minecraft.class_5898 WorldBorderWarningTimeChangedS2CPacket -net.minecraft.class_2673 WorldEventS2CPacket -net.minecraft.class_2761 WorldTimeUpdateS2CPacket diff --git a/todo.txt b/todo.txt index 7e71328..f544fbc 100644 --- a/todo.txt +++ b/todo.txt @@ -1,8 +1,8 @@ - fix ShowInvisableEntites opacity property -- fix packet stuff (NetworkUtils) -- test auto trade cycle -- fix tick speed -- Update packet registry +x fix packet stuff (NetworkUtils) +x test auto trade cycle +x fix tick speed +x Update packet registry - fix map border x fix fast doll stuff (InventoryScreenMixin)