Skip to content

Commit d6390e4

Browse files
Ugh. Just Ugh.
Just pushing this since I've already released 1.0.10 but need to commit this anyway. Ugh.
1 parent e93f0a3 commit d6390e4

13 files changed

+118
-143
lines changed

src/main/java/org/dimdev/vanillafix/LoadingConfig.java

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,17 @@ public class LoadingConfig {
88

99
private Configuration config;
1010

11-
public boolean bugFixes;
12-
public boolean crashFixes;
13-
public boolean modSupport;
14-
public boolean profiler;
15-
public boolean textureFixes;
16-
17-
18-
public void init(File file) {
19-
if (!file.exists()) {
20-
bugFixes = true;
21-
crashFixes = true;
22-
modSupport = true;
23-
profiler = true;
24-
textureFixes = true;
25-
return;
26-
}
27-
if (config == null) {
28-
config = new Configuration(file);
29-
reload();
30-
}
31-
}
11+
public boolean bugFixes = true;
12+
public boolean crashFixes = true;
13+
public boolean modSupport = true;
14+
public boolean profiler = true;
15+
public boolean textureFixes = true;
16+
17+
18+
public LoadingConfig(File file) {
19+
if (!file.exists()) { return; }
3220

33-
public void reload() {
21+
config = new Configuration(file);
3422
bugFixes = config.get("fixes", "bugFixes", true).getBoolean();
3523
crashFixes = config.get("fixes", "crashFixes", true).getBoolean();
3624
modSupport = config.get("fixes", "modSupport", true).getBoolean();

src/main/java/org/dimdev/vanillafix/ModConfig.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public enum ProblemAction {
1919

2020
public static Fixes fixes = new Fixes();
2121
public static Crashes crashes = new Crashes();
22+
//public static Options options = new Options();
2223

2324
public static class Fixes {
2425
@Name("bugFixes")
@@ -69,6 +70,13 @@ public static class Crashes {
6970
public int errorNotificationDuration = 30000;
7071
}
7172

73+
/*public static class Options {
74+
@Name("loginTimeout")
75+
@LangKey("vanilafix.options.loginTimeout")
76+
@RangeInt(min = 600)
77+
public int loginTimeout = 600;
78+
}*/
79+
7280
@SubscribeEvent
7381
public static void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent event) {
7482
if (event.getModID().equals("vanillafix")) {

src/main/java/org/dimdev/vanillafix/VanillaFixLoadingPlugin.java

Lines changed: 45 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -22,45 +22,21 @@
2222
import java.util.Map;
2323

2424
@IFMLLoadingPlugin.MCVersion(ForgeVersion.mcVersion)
25-
@IFMLLoadingPlugin.SortingIndex(-100000)
25+
@IFMLLoadingPlugin.SortingIndex(Integer.MIN_VALUE + 10000)
2626
public class VanillaFixLoadingPlugin implements IFMLLoadingPlugin {
27-
private static final Logger log = LogManager.getLogger();
28-
private static boolean initialized = false;
29-
27+
private static final Logger log = LogManager.getLogger("VanillaFix");
3028
public static LoadingConfig config;
3129

32-
public VanillaFixLoadingPlugin() {
33-
initialize();
34-
35-
MixinBootstrap.init();
30+
static {
31+
log.info("Initializing VanillaFix");
32+
config = new LoadingConfig(new File(Launch.minecraftHome, "config/vanillafix.cfg"));
3633

37-
// @formatter:off
38-
if (config.bugFixes) Mixins.addConfiguration("mixins.vanillafix.bugs.json");
39-
if (config.crashFixes) Mixins.addConfiguration("mixins.vanillafix.crashes.json");
40-
if (config.profiler) Mixins.addConfiguration("mixins.vanillafix.profiler.json");
41-
if (config.textureFixes) Mixins.addConfiguration("mixins.vanillafix.textures.json");
42-
if (config.modSupport) Mixins.addConfiguration("mixins.vanillafix.modsupport.json");
43-
// @formatter:on
34+
trustIdenTrust();
35+
initStacktraceDeobfuscator();
36+
initMixin();
4437
}
4538

46-
public static void initialize() {
47-
if (initialized) return;
48-
initialized = true;
49-
50-
config = new LoadingConfig();
51-
config.init(new File(Launch.minecraftHome, "config/vanillafix.cfg"));
52-
53-
// Trust the "IdenTrust DST Root CA X3" certificate (used by Let's Encrypt, which is used by paste.dimdev.org)
54-
// TODO: Trust two other certificates, use same alias: https://bugs.openjdk.java.net/browse/JDK-8161008
55-
try (InputStream keyStoreInputStream = VanillaFixLoadingPlugin.class.getResourceAsStream("/dst_root_ca_x3.jks")) {
56-
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
57-
keyStore.load(keyStoreInputStream, "password".toCharArray());
58-
SSLUtils.trustCertificates(keyStore);
59-
} catch (IOException | CertificateException | NoSuchAlgorithmException | KeyStoreException e) {
60-
throw new RuntimeException();
61-
}
62-
63-
// Initialize StacktraceDeobfuscator
39+
private static void initStacktraceDeobfuscator() {
6440
File modDir = new File(Launch.minecraftHome, "config/vanillafix");
6541
modDir.mkdirs();
6642

@@ -83,6 +59,42 @@ public static void initialize() {
8359
DeobfuscatingRewritePolicy.install();
8460
}
8561

62+
private static void initMixin() {
63+
MixinBootstrap.init();
64+
65+
if (config.bugFixes) {
66+
log.info("Initializing Bug Fix Mixins");
67+
Mixins.addConfiguration("mixins.vanillafix.bugs.json");
68+
}
69+
if (config.crashFixes) {
70+
log.info("Initializing Crash Fix Mixins");
71+
Mixins.addConfiguration("mixins.vanillafix.crashes.json");
72+
}
73+
if (config.profiler) {
74+
log.info("Initializing Profiler Improvement Mixins");
75+
Mixins.addConfiguration("mixins.vanillafix.profiler.json");
76+
}
77+
if (config.textureFixes) {
78+
log.info("Initializing Texture Fix Mixins");
79+
Mixins.addConfiguration("mixins.vanillafix.textures.json");
80+
}
81+
if (config.modSupport) {
82+
log.info("Initializing Mod Support Mixins");
83+
Mixins.addConfiguration("mixins.vanillafix.modsupport.json");
84+
}
85+
}
86+
87+
private static void trustIdenTrust() {
88+
// Trust the "IdenTrust DST Root CA X3" certificate (used by Let's Encrypt, which is used by paste.dimdev.org)
89+
try (InputStream keyStoreInputStream = VanillaFixLoadingPlugin.class.getResourceAsStream("/dst_root_ca_x3.jks")) {
90+
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
91+
keyStore.load(keyStoreInputStream, "password".toCharArray());
92+
SSLUtils.trustCertificates(keyStore);
93+
} catch (IOException | CertificateException | NoSuchAlgorithmException | KeyStoreException e) {
94+
throw new RuntimeException();
95+
}
96+
}
97+
8698
@Override public String[] getASMTransformerClass() {
8799
return new String[0];
88100
}

src/main/java/org/dimdev/vanillafix/bugs/IPatchedSPacketPong.java

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

src/main/java/org/dimdev/vanillafix/bugs/mixins/MixinChunk.java

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

src/main/java/org/dimdev/vanillafix/bugs/mixins/MixinEntity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@
1010
import org.spongepowered.asm.mixin.injection.Inject;
1111
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1212

13-
@Mixin(Entity.class)
13+
@Mixin(value = Entity.class, priority = 500)
1414
public abstract class MixinEntity {
1515
@Shadow public float fallDistance;
16-
@Shadow public boolean onGround;
1716
@Shadow public World world;
1817

1918
/**
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.dimdev.vanillafix.bugs.mixins;
2+
3+
import net.minecraft.entity.Entity;
4+
import net.minecraft.entity.EntityLiving;
5+
import net.minecraft.entity.EntityTrackerEntry;
6+
import net.minecraft.entity.player.EntityPlayerMP;
7+
import net.minecraft.network.play.server.SPacketEntityAttach;
8+
import org.spongepowered.asm.mixin.Final;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.Shadow;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
import org.spongepowered.asm.mixin.injection.Inject;
13+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
14+
15+
@Mixin(EntityTrackerEntry.class)
16+
public class MixinEntityTrackerEntry {
17+
18+
@Shadow @Final private Entity trackedEntity;
19+
20+
@Inject(method = "updatePlayerEntity", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;addTrackingPlayer(Lnet/minecraft/entity/player/EntityPlayerMP;)V"))
21+
public void sendAttachPacketIfNecessary(EntityPlayerMP playerMP, CallbackInfo ci) {
22+
if (trackedEntity instanceof EntityLiving) {
23+
playerMP.connection.sendPacket(new SPacketEntityAttach(trackedEntity, ((EntityLiving) trackedEntity).getLeashHolder()));
24+
}
25+
}
26+
27+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.dimdev.vanillafix.bugs.mixins;
2+
3+
import net.minecraft.server.network.NetHandlerLoginServer;
4+
import org.dimdev.vanillafix.ModConfig;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.injection.Constant;
7+
import org.spongepowered.asm.mixin.injection.ModifyConstant;
8+
9+
@Mixin(NetHandlerLoginServer.class)
10+
public class MixinNetHandlerLoginServer {
11+
12+
/**
13+
* Increases server timeout when connecting to prevent
14+
* issues with logging in with mods installed
15+
*
16+
* @return Timeout limit increase
17+
*/
18+
//@ModifyConstant(method = "update", constant = @Constant(intValue = 600, ordinal = 0))
19+
//public int update(int value) { return ModConfig.options.loginTimeout; }
20+
21+
}

src/main/java/org/dimdev/vanillafix/bugs/mixins/MixinSPacketPong.java

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

src/main/java/org/dimdev/vanillafix/bugs/mixins/client/MixinServerPinger$1.java

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

0 commit comments

Comments
 (0)