Skip to content

Commit 917153e

Browse files
committed
Adapted for Minecraft 1.12.2
1 parent f1453c8 commit 917153e

File tree

8 files changed

+56
-137
lines changed

8 files changed

+56
-137
lines changed

.editorconfig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ ij_java_space_before_synchronized_parentheses = true
2222
ij_java_space_after_type_cast = true
2323
ij_java_spaces_within_array_initializer_braces = true
2424
ij_java_space_before_array_initializer_left_brace = true
25-
ij_java_class_brace_style = next_line
26-
ij_java_method_brace_style = next_line
27-
ij_java_block_brace_style = next_line
25+
ij_java_class_brace_style = end_of_line
26+
ij_java_method_brace_style = end_of_line
27+
ij_java_block_brace_style = end_of_line
2828
ij_java_else_on_new_line = true
2929
ij_java_imports_layout = unset
3030
ij_java_class_count_to_use_import_on_demand = 10

build.gradle

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,31 @@ buildscript {
77
}
88
}
99
dependencies {
10-
classpath('com.anatawa12.forge:ForgeGradle:1.2-1.1.+') {
10+
classpath('com.anatawa12.forge:ForgeGradle:2.3-1.0.+') {
1111
changing = true
1212
}
1313
}
1414
}
1515

16-
apply plugin: 'forge'
16+
apply plugin: 'net.minecraftforge.gradle.forge'
1717

1818
tasks.withType(JavaCompile).configureEach {
1919
options.encoding = 'UTF-8'
2020
}
2121

2222
minecraft {
23-
version = "1.7.10-10.13.4.1614-1.7.10"
23+
version = '1.12.2-14.23.5.2847' // Max forge for FG v2.3
24+
mappings = 'stable_39'
2425
runDir = "run"
26+
makeObfSourceJar = false
2527

2628
replace '@VERSION@', project.mod_version
2729
replaceIn 'CoreMod.java'
30+
2831
}
2932

33+
// Project settings
34+
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_1_8
3035
version = minecraft.version + '-' + project.mod_version
3136

3237
jar {

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# Project
22
group=com.gamerforea
3-
mod_version=1.1
3+
mod_version=1.0
44
core_mod_class=com.gamerforea.packetunlimiter.CoreMod

src/main/java/com/gamerforea/packetunlimiter/CoreMod.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import java.io.File;
44
import java.util.Map;
55

6-
import cpw.mods.fml.relauncher.IFMLLoadingPlugin;
76
import net.minecraftforge.common.config.Configuration;
7+
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin;
88

9-
@IFMLLoadingPlugin.MCVersion("1.7.10")
9+
@IFMLLoadingPlugin.MCVersion("1.12.2")
1010
@IFMLLoadingPlugin.Name(CoreMod.NAME)
1111
@IFMLLoadingPlugin.SortingIndex(1001)
1212
public final class CoreMod implements IFMLLoadingPlugin
@@ -18,17 +18,13 @@ public final class CoreMod implements IFMLLoadingPlugin
1818
public static boolean isObfuscated = false;
1919
public static boolean bigPacketWarning = true;
2020
public static boolean readNbtLimit = false;
21-
public static boolean writeNbtLimit = false;
22-
public static boolean unpackNbtLimit = false;
2321

2422
public CoreMod()
2523
{
2624
Configuration config = new Configuration(new File("config", NAME + ".cfg"));
2725
config.load();
2826
bigPacketWarning = config.getBoolean("bigPacketWarning", "general", bigPacketWarning, "Включить оповещение при превышении стандартного лимита (2 MB)");
2927
readNbtLimit = config.getBoolean("readNbtLimit", "general", readNbtLimit, "Включить ограничение чтения NBT");
30-
writeNbtLimit = config.getBoolean("writeNbtLimit", "general", writeNbtLimit, "Включить ограничение записи NBT");
31-
unpackNbtLimit = config.getBoolean("unpackNbtLimit", "general", unpackNbtLimit, "Включить ограничение распаковки NBT");
3228
config.save();
3329
}
3430

src/main/java/com/gamerforea/packetunlimiter/ModContainer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
import com.google.common.eventbus.EventBus;
88

9-
import cpw.mods.fml.common.DummyModContainer;
10-
import cpw.mods.fml.common.LoadController;
11-
import cpw.mods.fml.common.ModMetadata;
9+
import net.minecraftforge.fml.common.DummyModContainer;
10+
import net.minecraftforge.fml.common.LoadController;
11+
import net.minecraftforge.fml.common.ModMetadata;
1212

1313
public final class ModContainer extends DummyModContainer
1414
{

src/main/java/com/gamerforea/packetunlimiter/asm/ASMHelper.java

Lines changed: 0 additions & 22 deletions
This file was deleted.
Lines changed: 39 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,70 @@
11
package com.gamerforea.packetunlimiter.asm;
22

3+
import net.minecraftforge.fml.relauncher.FMLRelaunchLog;
34
import org.objectweb.asm.ClassReader;
45
import org.objectweb.asm.ClassWriter;
56
import org.objectweb.asm.Opcodes;
7+
import org.objectweb.asm.tree.AbstractInsnNode;
68
import org.objectweb.asm.tree.ClassNode;
7-
import org.objectweb.asm.tree.InsnList;
8-
import org.objectweb.asm.tree.InsnNode;
9+
import org.objectweb.asm.tree.LdcInsnNode;
910
import org.objectweb.asm.tree.MethodInsnNode;
1011
import org.objectweb.asm.tree.MethodNode;
11-
import org.objectweb.asm.tree.VarInsnNode;
1212

1313
import com.gamerforea.packetunlimiter.CoreMod;
1414

1515
import net.minecraft.launchwrapper.IClassTransformer;
16+
import java.util.ListIterator;
1617

17-
public final class ASMTransformer implements IClassTransformer, Opcodes
18-
{
18+
public final class ASMTransformer implements IClassTransformer, Opcodes {
1919
@Override
20-
public byte[] transform(String name, String transformedName, byte[] basicClass)
21-
{
20+
public byte[] transform(String name, String transformedName, byte[] basicClass) {
2221
if (transformedName.equals("net.minecraft.network.PacketBuffer"))
2322
return patchPacketBuffer(basicClass);
2423

2524
return basicClass;
2625
}
2726

28-
private static byte[] patchPacketBuffer(byte[] basicClass)
29-
{
27+
private static byte[] patchPacketBuffer(byte[] basicClass) {
28+
boolean patched = false;
29+
String readNbt = CoreMod.isObfuscated ? "func_150793_b" : "readCompoundTag";
30+
3031
ClassNode cNode = new ClassNode();
3132
new ClassReader(basicClass).accept(cNode, 0);
3233

33-
String writeNbt = ASMHelper.getMethod("net.minecraft.network.PacketBuffer.writeNBTTagCompoundToBuffer");
34-
String readNbt = ASMHelper.getMethod("net.minecraft.network.PacketBuffer.readNBTTagCompoundFromBuffer");
3534
for (MethodNode mNode : cNode.methods)
36-
if (mNode.name.equals(writeNbt) && mNode.desc.equals("(Lnet/minecraft/nbt/NBTTagCompound;)V"))
37-
{
38-
if (CoreMod.writeNbtLimit)
39-
continue;
40-
41-
InsnList insn = new InsnList();
42-
insn.add(new VarInsnNode(ALOAD, 0));
43-
insn.add(new VarInsnNode(ALOAD, 1));
44-
insn.add(new MethodInsnNode(INVOKESTATIC, "com/gamerforea/packetunlimiter/asm/PacketBufferPatch", "writeNBTTagCompoundToBuffer", "(Lnet/minecraft/network/PacketBuffer;Lnet/minecraft/nbt/NBTTagCompound;)V", false));
45-
insn.add(new InsnNode(RETURN));
46-
mNode.instructions = insn;
47-
}
48-
else if (mNode.name.equals(readNbt) && mNode.desc.equals("()Lnet/minecraft/nbt/NBTTagCompound;"))
49-
{
35+
if (mNode.name.equals(readNbt) && mNode.desc.equals("()Lnet/minecraft/nbt/NBTTagCompound;")) {
5036
if (CoreMod.readNbtLimit)
5137
continue;
5238

53-
InsnList insn = new InsnList();
54-
insn.add(new VarInsnNode(ALOAD, 0));
55-
insn.add(new MethodInsnNode(INVOKESTATIC, "com/gamerforea/packetunlimiter/asm/PacketBufferPatch", "readNBTTagCompoundFromBuffer", "(Lnet/minecraft/network/PacketBuffer;)Lnet/minecraft/nbt/NBTTagCompound;", false));
56-
insn.add(new InsnNode(ARETURN));
57-
mNode.instructions = insn;
39+
ListIterator<AbstractInsnNode> it = mNode.instructions.iterator();
40+
while (it.hasNext()) {
41+
AbstractInsnNode insn = it.next();
42+
43+
if (insn.getType() == AbstractInsnNode.LDC_INSN) {
44+
LdcInsnNode ldcNode = (LdcInsnNode) insn;
45+
AbstractInsnNode next = insn.getNext();
46+
47+
if (next.getType() == AbstractInsnNode.METHOD_INSN) {
48+
MethodInsnNode methodNode = (MethodInsnNode) next;
49+
50+
if ("net/minecraft/nbt/NBTSizeTracker".equals(methodNode.owner)) {
51+
ldcNode.cst = Long.MAX_VALUE;
52+
patched = true;
53+
break;
54+
}
55+
}
56+
}
57+
}
5858
}
5959

60-
ClassWriter cWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS);
61-
cNode.accept(cWriter);
62-
return cWriter.toByteArray();
60+
if (patched) {
61+
FMLRelaunchLog.info("[PacketUnlimiter] PacketBuffer successfully patched!");
62+
63+
ClassWriter cWriter = new ClassWriter(0);
64+
cNode.accept(cWriter);
65+
return cWriter.toByteArray();
66+
}
67+
68+
return basicClass;
6369
}
6470
}

src/main/java/com/gamerforea/packetunlimiter/asm/PacketBufferPatch.java

Lines changed: 0 additions & 66 deletions
This file was deleted.

0 commit comments

Comments
 (0)