From 346db25ddf00deca0bde50ed42e0233d63c126d9 Mon Sep 17 00:00:00 2001 From: blackysky Date: Tue, 9 Apr 2024 23:25:34 +0200 Subject: [PATCH 1/4] =?UTF-8?q?=D0=9A=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BD=D0=B0=D0=B7=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B9=20=D0=B8=20=D0=BE=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- gradle.properties | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index cc85438..914df4c 100644 --- a/build.gradle +++ b/build.gradle @@ -106,7 +106,7 @@ tasks.named('jar', Jar).configure { 'Implementation-Version' : project.jar.archiveVersion, 'Implementation-Vendor' : mod_authors, 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), - 'MixinConfigs': 'mixins.duble.json' + 'MixinConfigs': 'mixins.packetdoubler.json' ]) } diff --git a/gradle.properties b/gradle.properties index 34fdce2..89c581d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -48,12 +48,12 @@ mod_name=Packet size doubler InCube # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=MIT # The mod version. See https://semver.org/ -mod_version=0.1 +mod_version=1.0 # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. # See https://maven.apache.org/guides/mini/guide-naming-conventions.html mod_group_id=ru.vkprofi.packetDoubler # The authors of the mod. This is a simple text string that is used for display purposes in the mod list. -mod_authors=VkProfi +mod_authors=VkProfi, Silke # The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list. -mod_description=Мод добавляющий отпечатки пальца в игру маинкрафт \ No newline at end of file +mod_description=Мод увеличивающий размер пакетов \ No newline at end of file From d57f91922b9dd148f5fed40d233a42fbcc8cb5a5 Mon Sep 17 00:00:00 2001 From: blackysky Date: Tue, 9 Apr 2024 23:26:09 +0200 Subject: [PATCH 2/4] =?UTF-8?q?=D1=8D=D1=82=D0=BE=20=D1=87=D1=82=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/vkprofi/packetDoubler/ExampleMod.java | 23 ------------------- .../mixin/PacketInflaterMixin.java | 14 ----------- 2 files changed, 37 deletions(-) delete mode 100644 src/main/java/ru/vkprofi/packetDoubler/ExampleMod.java delete mode 100644 src/main/java/ru/vkprofi/packetDoubler/mixin/PacketInflaterMixin.java diff --git a/src/main/java/ru/vkprofi/packetDoubler/ExampleMod.java b/src/main/java/ru/vkprofi/packetDoubler/ExampleMod.java deleted file mode 100644 index a8da1b5..0000000 --- a/src/main/java/ru/vkprofi/packetDoubler/ExampleMod.java +++ /dev/null @@ -1,23 +0,0 @@ -package ru.vkprofi.packetDoubler; - -import com.mojang.logging.LogUtils; -import net.minecraftforge.event.server.ServerStartingEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import org.slf4j.Logger; - -// The value here should match an entry in the META-INF/mods.toml file -@Mod(ExampleMod.MODID) -public class ExampleMod { - // Define mod id in a common place for everything to reference - public static final String MODID = "Fingerprint"; - // Directly reference a slf4j logger - private static final Logger LOGGER = LogUtils.getLogger(); - - // You can use SubscribeEvent and let the Event Bus discover methods to call - @SubscribeEvent - public void onServerStarting(ServerStartingEvent event) { - // Do something when the server starts - LOGGER.info("HELLO from server starting"); - } -} diff --git a/src/main/java/ru/vkprofi/packetDoubler/mixin/PacketInflaterMixin.java b/src/main/java/ru/vkprofi/packetDoubler/mixin/PacketInflaterMixin.java deleted file mode 100644 index d56c0df..0000000 --- a/src/main/java/ru/vkprofi/packetDoubler/mixin/PacketInflaterMixin.java +++ /dev/null @@ -1,14 +0,0 @@ -package ru.vkprofi.packetDoubler.mixin; - -import net.minecraft.network.PacketDecoder; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.Constant; -import org.spongepowered.asm.mixin.injection.ModifyConstant; - -@Mixin(PacketDecoder.class) -public class PacketInflaterMixin { - @ModifyConstant(method = "decode", constant = @Constant(intValue = 8388608)) - private int injected(int value) { - return value * 10; - } -} From 08090106ba15167a31bb69e01a3403fb0562e1df Mon Sep 17 00:00:00 2001 From: blackysky Date: Tue, 9 Apr 2024 23:37:00 +0200 Subject: [PATCH 3/4] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D0=BC=D0=B8?= =?UTF-8?q?=D0=BA=D1=81=D0=B8=D0=BD=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/ru/vkprofi/packetDoubler/Main.java | 18 ++++++ .../mixin/PacketDecoderMixin.java | 55 +++++++++++++++++++ .../mixin/PacketEncoderMixin.java | 5 +- src/main/resources/mixins.packetdoubler.json | 15 +++++ 4 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 src/main/java/ru/vkprofi/packetDoubler/Main.java create mode 100644 src/main/java/ru/vkprofi/packetDoubler/mixin/PacketDecoderMixin.java create mode 100644 src/main/resources/mixins.packetdoubler.json diff --git a/src/main/java/ru/vkprofi/packetDoubler/Main.java b/src/main/java/ru/vkprofi/packetDoubler/Main.java new file mode 100644 index 0000000..0da0553 --- /dev/null +++ b/src/main/java/ru/vkprofi/packetDoubler/Main.java @@ -0,0 +1,18 @@ +package ru.vkprofi.packetdoubler; + +import com.mojang.logging.LogUtils; +import net.minecraftforge.event.server.ServerStartingEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import org.slf4j.Logger; + +@Mod(Main.MODID) +public class Main { + public static final String MODID = "PackerDoubler"; + private static final Logger LOGGER = LogUtils.getLogger(); + + @SubscribeEvent + public void onServerStarting(ServerStartingEvent event) { + LOGGER.info(MODID + " started"); + } +} diff --git a/src/main/java/ru/vkprofi/packetDoubler/mixin/PacketDecoderMixin.java b/src/main/java/ru/vkprofi/packetDoubler/mixin/PacketDecoderMixin.java new file mode 100644 index 0000000..658dd43 --- /dev/null +++ b/src/main/java/ru/vkprofi/packetDoubler/mixin/PacketDecoderMixin.java @@ -0,0 +1,55 @@ +package ru.vkprofi.packetdoubler.mixin; + +import com.mojang.logging.LogUtils; +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.ByteToMessageDecoder; +import net.minecraft.network.Connection; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.PacketDecoder; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.PacketFlow; +import net.minecraft.util.profiling.jfr.JvmProfiler; +import org.slf4j.Logger; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; + +import java.io.IOException; +import java.util.List; + +@Mixin(PacketDecoder.class) +public abstract class PacketDecoderMixin extends ByteToMessageDecoder { + @Unique + private static final Logger LOGGER = LogUtils.getLogger(); + + @Final @Shadow + private PacketFlow flow; + + @Override + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { + int i = in.readableBytes(); + if (i != 0) { + FriendlyByteBuf friendlybytebuf = new FriendlyByteBuf(in); + int j = friendlybytebuf.readVarInt(); + Packet packet = ctx.channel().attr(Connection.ATTRIBUTE_PROTOCOL).get().createPacket(this.flow, j, friendlybytebuf); + if (packet == null) { + throw new IOException("Bad packet id " + j); + } else { + int k = ctx.channel().attr(Connection.ATTRIBUTE_PROTOCOL).get().getId(); + JvmProfiler.INSTANCE.onPacketReceived(k, j, ctx.channel().remoteAddress(), i); + if (friendlybytebuf.readableBytes() > 0) { + // Разрешаем пакеты с большим количеством читаемых байтов + if (friendlybytebuf.readableBytes() > 83886080) { + throw new IOException("Packet " + ctx.channel().attr(Connection.ATTRIBUTE_PROTOCOL).get().getId() + "/" + j + " (" + packet.getClass().getSimpleName() + ") was larger than I expected, found " + friendlybytebuf.readableBytes() + " bytes extra whilst reading packet " + j); + } + } + out.add(packet); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug(Connection.PACKET_RECEIVED_MARKER, " IN: [{}:{}] {}", ctx.channel().attr(Connection.ATTRIBUTE_PROTOCOL).get(), j, packet.getClass().getName()); + } + } + } + } +} \ No newline at end of file diff --git a/src/main/java/ru/vkprofi/packetDoubler/mixin/PacketEncoderMixin.java b/src/main/java/ru/vkprofi/packetDoubler/mixin/PacketEncoderMixin.java index 936d380..bb26938 100644 --- a/src/main/java/ru/vkprofi/packetDoubler/mixin/PacketEncoderMixin.java +++ b/src/main/java/ru/vkprofi/packetDoubler/mixin/PacketEncoderMixin.java @@ -1,4 +1,4 @@ -package ru.vkprofi.packetDoubler.mixin; +package ru.vkprofi.packetdoubler.mixin; import net.minecraft.network.PacketEncoder; import org.spongepowered.asm.mixin.Mixin; @@ -7,9 +7,8 @@ @Mixin(PacketEncoder.class) public class PacketEncoderMixin { - @ModifyConstant(method = "encode(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/Packet;Lio/netty/buffer/ByteBuf;)V", constant = @Constant(intValue = 8388608)) + @ModifyConstant(method = "encode(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/protocol/Packet;Lio/netty/buffer/ByteBuf;)V", constant = @Constant(intValue = 8388608)) private int injected(int value) { return value * 10; } - } diff --git a/src/main/resources/mixins.packetdoubler.json b/src/main/resources/mixins.packetdoubler.json new file mode 100644 index 0000000..c1cfff1 --- /dev/null +++ b/src/main/resources/mixins.packetdoubler.json @@ -0,0 +1,15 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "ru.vkprofi.packetdoubler.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [ + "PacketEncoderMixin", + "PacketDecoderMixin" + ], + "client": [ + ], + "injectors": { + "defaultRequire": 1 + } + } \ No newline at end of file From a3221b4a836aa196df42878b6e6f43ba33043e26 Mon Sep 17 00:00:00 2001 From: Silke <53826868+blackysky@users.noreply.github.com> Date: Tue, 9 Apr 2024 23:38:06 +0200 Subject: [PATCH 4/4] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=81=D1=82=D0=B0=D1=80=D0=BE=D0=B3=D0=BE=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mixins.duble.json | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 src/main/resources/mixins.duble.json diff --git a/src/main/resources/mixins.duble.json b/src/main/resources/mixins.duble.json deleted file mode 100644 index 8496d1d..0000000 --- a/src/main/resources/mixins.duble.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "required": true, - "minVersion": "0.8", - "package": "ru.vkprofi.packetDoubler.mixin", - "compatibilityLevel": "JAVA_17", - "mixins": [ - "PacketEncoderMixin", - "PacketInflaterMixin" - ], - "client": [ - ], - "injectors": { - "defaultRequire": 1 - } - } \ No newline at end of file