Skip to content

Commit 37f5649

Browse files
committed
Добавлен конфиг исключений
1 parent 9e4effb commit 37f5649

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package me.theandrey.objectstream;
2+
3+
import java.io.File;
4+
import java.util.Arrays;
5+
import java.util.HashSet;
6+
import java.util.List;
7+
import java.util.Set;
8+
import java.util.stream.Collectors;
9+
import net.minecraftforge.common.config.Configuration;
10+
11+
public final class Config {
12+
13+
public static final Set<String> excludeClass = new HashSet<>();
14+
15+
public static void load(File file) {
16+
Configuration config = new Configuration(file);
17+
config.load();
18+
19+
String[] classNames = config.getStringList("ExcludeClass", "general", new String[0],
20+
"Список полных названий классов для которых не будет применяться исправление");
21+
22+
excludeClass.clear();
23+
excludeClass.addAll(filterStringList(classNames));
24+
25+
if (config.hasChanged()) {
26+
config.save();
27+
}
28+
}
29+
30+
private static List<String> filterStringList(String[] strings) {
31+
return Arrays.stream(strings)
32+
.map(String::trim)
33+
.distinct()
34+
.collect(Collectors.toList());
35+
}
36+
}

src/main/java/me/theandrey/objectstream/asm/LoadingPlugin.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
package me.theandrey.objectstream.asm;
22

3+
import java.io.File;
34
import java.util.Map;
45
import cpw.mods.fml.relauncher.IFMLLoadingPlugin;
6+
import me.theandrey.objectstream.Config;
57

68
@IFMLLoadingPlugin.SortingIndex(2000)
79
@IFMLLoadingPlugin.TransformerExclusions("me.theandrey.objectstream.asm.")
810
public class LoadingPlugin implements IFMLLoadingPlugin {
911

12+
public LoadingPlugin() {
13+
Config.load(new File("config/ObjectStreamBlocker.cfg"));
14+
}
15+
1016
@Override
1117
public String[] getASMTransformerClass() {
1218
return new String[]{"me.theandrey.objectstream.asm.ObjectInputStreamTransformer"};

src/main/java/me/theandrey/objectstream/asm/ObjectInputStreamTransformer.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import java.util.ArrayList;
55
import java.util.List;
66
import java.util.ListIterator;
7+
import javax.annotation.Nullable;
8+
import me.theandrey.objectstream.Config;
79
import net.minecraft.launchwrapper.IClassTransformer;
810
import org.apache.logging.log4j.LogManager;
911
import org.apache.logging.log4j.Logger;
@@ -30,7 +32,11 @@ public ObjectInputStreamTransformer() {
3032
}
3133

3234
@Override
33-
public byte[] transform(String name, String transformedName, byte[] bytes) {
35+
public byte[] transform(String name, String transformedName, @Nullable byte[] bytes) {
36+
if (bytes == null || bytes.length == 0 || Config.excludeClass.contains(name)) {
37+
return bytes;
38+
}
39+
3440
ClassNode node = ASMHelper.readClass(bytes);
3541

3642
List<MethodNode> unsafeMethods = scanMethods(node);

0 commit comments

Comments
 (0)