Skip to content

Commit

Permalink
Support OptiFine 1.15.2 HD U G1 pre14.
Browse files Browse the repository at this point in the history
Fix transformer wrapper for MoreCrashInfo mod.
  • Loading branch information
ZekerZhayard committed May 3, 2020
1 parent deb1c7a commit 68efd25
Show file tree
Hide file tree
Showing 46 changed files with 26 additions and 1,879 deletions.
11 changes: 7 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
# OptiForge ([CurseForge](https://www.curseforge.com/minecraft/mc-mods/optiforge))

*Compatibility: (2020-05-01)*
 *OptiForge-0.1.14*
*Compatibility: (2020-05-03)*
 *OptiForge-0.1.15*
 *Forge-1.15.2-31.1.60 or newer version*
 *OptiFine-1.15.2-G1-pre7 or newer version*
 *OptiFine-1.15.2-G1-pre14 or newer version*

## How to Use

1. Download [OptiFine](https://www.optifine.net/downloads) 1.15.2
2. Download [MixinBootstrap](https://github.com/LXGaming/MixinBootstrap/releases/download/v1.0.2/MixinBootstrap-1.0.2.jar)
2. Download [MixinBootstrap](https://github.com/LXGaming/MixinBootstrap/releases)
3. Download [OptiForge](https://github.com/ZekerZhayard/OptiForge/releases) at the release page
4. Put the above mods into the `mods` folder.
5. Launch Minecraft!

*Notice: If you find a bug, please report it to OptiForge first unless you are sure it is an OptiFine bug.*

### About reporting crash
I recommend installing [MoreCrashInfo](https://github.com/xfl03/MoreCrashInfo/releases) mod. This mod will print more useful information to crash reports, and these can help us locate errors faster.

### For Development Environment

1. There is a project called [OptiFineDevTweaker](https://github.com/OpenCubicChunks/OptiFineDevTweaker) can help us use OptiFine under development environment. You should put OptiFine itself and OptiFineDevTweaker mod to `<projectDir>/run/mods` folder.
Expand Down
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false

mod_version=0.1.14
# G1_pre7
optifine_version=7.1.7
mod_version=0.1.15
# G1_pre14
optifine_version=7.1.14
minecraft_version=1.15.2
forge_version=31.1.60
forge_gradle_version=3.0.170
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package io.github.zekerzhayard.optiforge.asm;

import org.spongepowered.asm.launch.MixinBootstrap;
import org.spongepowered.asm.mixin.Mixins;
import org.spongepowered.asm.mixin.connect.IMixinConnector;

public class MixinConnector implements IMixinConnector {
@Override
public void connect() {
MixinBootstrap.init();
Mixins.addConfiguration("mixins.optiforge.json");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import cpw.mods.modlauncher.TransformStore;
import cpw.mods.modlauncher.TransformTargetLabel;
import cpw.mods.modlauncher.TransformationServiceDecorator;
import cpw.mods.modlauncher.TransformerHolder;
import cpw.mods.modlauncher.api.IEnvironment;
import cpw.mods.modlauncher.api.ITransformationService;
import cpw.mods.modlauncher.api.ITransformer;
Expand Down Expand Up @@ -122,7 +123,6 @@ public void onLoad(@Nonnull IEnvironment env, @Nonnull Set<String> otherServices
"unchecked"
})
public List<ITransformer> transformers() {
List<ITransformer> list = new ArrayList<>();
if (checked) {
// See https://github.com/cpw/modlauncher/issues/37
// OptiFine transformer overwrite all JavaScript field and method transformers.
Expand All @@ -138,7 +138,9 @@ public List<ITransformer> transformers() {
Map<TransformTargetLabel, List<ITransformer<?>>> transformersMap = (Map<TransformTargetLabel, List<ITransformer<?>>>) FieldUtils.readDeclaredField(transformListEntry.getValue(), "transformers", true);
for (Map.Entry<TransformTargetLabel, List<ITransformer<?>>> entry : transformersMap.entrySet()) {
for (ITransformer<?> transformer : entry.getValue()) {
list.add(new OptiForgeTransformer(transformer, transformListEntry.getKey().equals(TransformTargetLabel.LabelType.FIELD) ? ITransformer.Target.targetField(((Type) MethodUtils.invokeMethod(entry.getKey(), true, "getClassName")).getInternalName(), entry.getKey().getElementName()) : ITransformer.Target.targetMethod(((Type) MethodUtils.invokeMethod(entry.getKey(), true, "getClassName")).getInternalName(), entry.getKey().getElementName(), entry.getKey().getElementDescriptor().getInternalName())));
// assert transformer instanceof TransformerHolder
String className = ((Type) MethodUtils.invokeMethod(entry.getKey(), true, "getClassName")).getInternalName();
MethodUtils.invokeMethod(transformers.get(TransformTargetLabel.LabelType.CLASS), true, "addTransformer", new TransformTargetLabel(className), new TransformerHolder<>(new OptiForgeTransformer<>(transformer, transformListEntry.getKey().equals(TransformTargetLabel.LabelType.FIELD) ? ITransformer.Target.targetField(className, entry.getKey().getElementName()) : ITransformer.Target.targetMethod(className, entry.getKey().getElementName(), entry.getKey().getElementDescriptor().getInternalName())), ((TransformerHolder<?>) transformer).owner()));
}
}
transformersMap.clear();
Expand All @@ -147,6 +149,6 @@ public List<ITransformer> transformers() {
LOGGER.error("", e);
}
}
return list;
return new ArrayList<>();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,9 @@ public TransformerVoteResult castVote(@Nonnull ITransformerVotingContext context
public Set<Target> targets() {
return Sets.newHashSet(Target.targetClass(this.target.getClassName()));
}

@Override
public String[] labels() {
return this.wrappedTransformer.labels();
}
}

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit 68efd25

Please sign in to comment.