Skip to content

Commit

Permalink
Use FML mod instead of mod container, only support 1.8.9
Browse files Browse the repository at this point in the history
  • Loading branch information
prplz committed Nov 27, 2017
1 parent ca7fcf1 commit d5eef77
Show file tree
Hide file tree
Showing 11 changed files with 45 additions and 122 deletions.
17 changes: 6 additions & 11 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ minecraft {
version = project.forgeVersion
runDir = "run"
mappings = project.mcpVersion
coreMod = "io.prplz.memoryfix.FMLLoadingPlugin"
replace "%%UPDATE_URL%%": "$updateUrl/$modBaseName/$project.version"
}

repositories {
Expand All @@ -37,26 +39,19 @@ dependencies {

processResources {
inputs.property "version", project.version
inputs.property "updateUrl", updateUrl

from(sourceSets.main.resources.srcDirs) {
include '**/*.info'
include '**/*.properties'

expand(
"version": project.version,
"updateUrl": updateUrl
)
include "mcmod.info"
expand "version": project.version
}

from(sourceSets.main.resources.srcDirs) {
exclude '**/*.info'
exclude '**/*.properties'
exclude "mcmod.info"
}
}

jar {
manifest {
attributes("FMLCorePlugin": "io.prplz.memoryfix.FMLLoadingPlugin")
attributes 'FMLCorePluginContainsFMLMod': 'true'
}
}
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ modVersion=0.2
modBaseName=MemoryFix
forgeVersion=1.8.9-11.15.1.1902-1.8.9
mcpVersion=stable_22
updateUrl=https://mods.purple.services/update/check/
updateUrl=https://mods.purple.services/update/check
16 changes: 6 additions & 10 deletions src/main/java/io/prplz/memoryfix/ClassTransformer.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,17 @@ public byte[] transform(String name, String transformedName, byte[] bytes) {
private byte[] transformMethods(byte[] bytes, BiConsumer<ClassNode, MethodNode> transformer) {
ClassReader classReader = new ClassReader(bytes);
ClassNode classNode = new ClassNode();
classReader.accept(classNode, ClassReader.EXPAND_FRAMES);
classReader.accept(classNode, 0);

classNode.methods.forEach(m -> transformer.accept(classNode, m));

ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);
ClassWriter classWriter = new ClassWriter(0);
classNode.accept(classWriter);
return classWriter.toByteArray();
}

private byte[] transformCapeUtils(byte[] bytes) {
ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);
ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES);

RemappingClassAdapter adapter = new RemappingClassAdapter(classWriter, new Remapper() {
@Override
Expand Down Expand Up @@ -82,12 +82,7 @@ private void transformCapeImageBuffer(ClassNode clazz, MethodNode method) {
}

private void transformAbstractResourcePack(ClassNode clazz, MethodNode method) {
if (DeobfUtil.matchMethod(
clazz,
method,
"func_110586_a",
"getPackImage",
"()Ljava/awt/image/BufferedImage;")) {
if ((method.name.equals("getPackImage") || method.name.equals("func_110586_a")) && method.desc.equals("()Ljava/awt/image/BufferedImage;")) {
Iterator<AbstractInsnNode> iter = method.instructions.iterator();
while (iter.hasNext()) {
AbstractInsnNode insn = iter.next();
Expand All @@ -96,7 +91,8 @@ private void transformAbstractResourcePack(ClassNode clazz, MethodNode method) {
Opcodes.INVOKESTATIC,
"io.prplz.memoryfix.ResourcePackImageScaler".replace('.', '/'),
"scalePackImage",
"(Ljava/awt/image/BufferedImage;)Ljava/awt/image/BufferedImage;"));
"(Ljava/awt/image/BufferedImage;)Ljava/awt/image/BufferedImage;",
false));
}
}
}
Expand Down
14 changes: 0 additions & 14 deletions src/main/java/io/prplz/memoryfix/DeobfUtil.java

This file was deleted.

17 changes: 5 additions & 12 deletions src/main/java/io/prplz/memoryfix/FMLLoadingPlugin.java
Original file line number Diff line number Diff line change
@@ -1,32 +1,25 @@
package io.prplz.memoryfix;

import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin;
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin.MCVersion;
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin.SortingIndex;

import java.util.Map;

@MCVersion("1.8.9")
@SortingIndex(1001)
public class FMLLoadingPlugin implements IFMLLoadingPlugin {

@Override
public String[] getASMTransformerClass() {
if (!VersionUtil.is1_8_X()) {
System.out.println("***********************************");
System.out.println("");
System.out.println("MemoryFix only supports 1.8.x! Bye!");
System.out.println("");
System.out.println("***********************************");
return null;
}
return new String[]{
ClassTransformer.class.getName()
};
}

@Override
public String getModContainerClass() {
if (!VersionUtil.is1_8_X()) {
return null;
}
return MemoryFix.class.getName();
return null;
}

@Override
Expand Down
49 changes: 6 additions & 43 deletions src/main/java/io/prplz/memoryfix/MemoryFix.java
Original file line number Diff line number Diff line change
@@ -1,63 +1,26 @@
package io.prplz.memoryfix;

import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
import net.minecraft.client.Minecraft;
import net.minecraft.util.IChatComponent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.DummyModContainer;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.LoadController;
import net.minecraftforge.fml.common.ModMetadata;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;

import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.Properties;
import static net.minecraftforge.fml.common.Mod.EventHandler;

public class MemoryFix extends DummyModContainer {
@Mod(modid = "memoryfix", useMetadata = true)
public class MemoryFix {

private final String modId = "memoryfix";
private final String modName = "MemoryFix";
private final String version;
private final String updateUrl;
private int messageDelay = 0;
private IChatComponent updateMessage;

public MemoryFix() {
super(new ModMetadata());
ModMetadata meta = getMetadata();
meta.modId = modId;
meta.name = modName;
Properties properties = new Properties();
try (InputStream in = MemoryFix.class.getClassLoader().getResourceAsStream("version.properties")) {
properties.load(in);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
version = properties.getProperty("version");
updateUrl = properties.getProperty("updateUrl") + modName + "/" + version;
meta.version = version;
meta.authorList = Collections.singletonList("prplz");
meta.url = "https://prplz.io/memoryfix";
}

@Override
public boolean registerBus(EventBus bus, LoadController controller) {
bus.register(this);
return true;
}

@SuppressWarnings("deprecation")
@Subscribe
@EventHandler
public void init(FMLInitializationEvent event) {
// register the old event bus too, some versions use this (thanks sem)
MinecraftForge.EVENT_BUS.register(this);
FMLCommonHandler.instance().bus().register(this);

String updateUrl = System.getProperty("memoryfix.updateurl", "%%UPDATE_URL%%");
UpdateChecker updater = new UpdateChecker(updateUrl, res -> updateMessage = res.getUpdateMessage());
updater.start();
}
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/io/prplz/memoryfix/ResourcePackImageScaler.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ public class ResourcePackImageScaler {
public static final int SIZE = 64;

public static BufferedImage scalePackImage(BufferedImage image) throws IOException {
if (image == null) {
return null;
}
System.out.println("Scaling resource pack icon from " + image.getWidth() + " to " + SIZE);
BufferedImage smallImage = new BufferedImage(SIZE, SIZE, BufferedImage.TYPE_INT_ARGB);
Graphics graphics = smallImage.getGraphics();
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/io/prplz/memoryfix/UpdateChecker.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import net.minecraft.util.ChatStyle;
import net.minecraft.util.EnumTypeAdapterFactory;
import net.minecraft.util.IChatComponent;
import net.minecraftforge.common.ForgeVersion;

import java.io.IOException;
import java.io.InputStreamReader;
Expand Down Expand Up @@ -71,6 +72,11 @@ private UpdateResponse check(String url) throws IOException {
try {
con = (HttpURLConnection) new URL(url).openConnection();
con.setRequestMethod("GET");
String agent = "Java/" + System.getProperty("java.version") + " " +
"Forge/" + ForgeVersion.getVersion() + " " +
System.getProperty("os.name") + " " +
System.getProperty("os.arch") + " ";
con.setRequestProperty("User-Agent", agent);

int response = con.getResponseCode();
if (response == 200) {
Expand Down
29 changes: 0 additions & 29 deletions src/main/java/io/prplz/memoryfix/VersionUtil.java

This file was deleted.

12 changes: 12 additions & 0 deletions src/main/resources/mcmod.info
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[
{
"modid": "memoryfix",
"name": "MemoryFix",
"version": "${version}",
"mcversion": "1.8.9",
"url": "https://prplz.io/memoryfix",
"authorList": [
"prplz"
]
}
]
2 changes: 0 additions & 2 deletions src/main/resources/version.properties

This file was deleted.

0 comments on commit d5eef77

Please sign in to comment.