Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 26 additions & 1 deletion src/main/java/cam72cam/mod/ModCore.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@
import net.minecraft.client.resources.FolderResourcePack;
import net.minecraft.client.resources.IResourcePack;
import net.minecraft.client.resources.SimpleReloadableResourceManager;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStartedEvent;
import net.minecraftforge.fml.relauncher.CoreModManager;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.apache.commons.io.FileUtils;
Expand All @@ -39,6 +39,7 @@
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
Expand Down Expand Up @@ -371,4 +372,28 @@ public static synchronized File cacheFile(Identifier id) {
usedCacheFiles.add(f);
return f;
}

/* Loader Utils */
public static String loaderBrand() {
return "forge";
}

public static int mcVersion() {
return 11202;
}

private static Boolean isDev = null;

public static boolean isDevelopmentEnvironment() {
if (isDev == null) {
try {
Field field = CoreModManager.class.getDeclaredField("deobfuscatedEnvironment");
field.setAccessible(true);
isDev = field.getBoolean(null);
} catch (NoSuchFieldException | IllegalAccessException ignore) {
isDev = false;
}
}
return isDev;
}
}
10 changes: 9 additions & 1 deletion src/main/java/cam72cam/mod/UMCMixinPlugin.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package cam72cam.mod;

import cam72cam.mod.loading.UMCMod;
import net.minecraftforge.fml.common.FMLLog;
import net.minecraftforge.fml.common.ModContainerFactory;
import net.minecraftforge.fml.relauncher.CoreModManager;
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin;
import org.objectweb.asm.Type;
import org.spongepowered.asm.launch.MixinBootstrap;
import org.spongepowered.asm.mixin.Mixins;

Expand All @@ -28,12 +31,17 @@ public UMCMixinPlugin() {
if (file.isFile() && !CoreModManager.getReparseableCoremods().contains(file.getName())) {
//Due to FML's bad behaviour on processing FMLCorePluginContainsFMLMod we add here manually
CoreModManager.getIgnoredMods().remove(file.getName());
CoreModManager.getReparseableCoremods().add(file.getName());
if (!ModCore.isDevelopmentEnvironment()) {
CoreModManager.getReparseableCoremods().add(file.getName());
}
}
} catch (URISyntaxException e) {
FMLLog.log.warn(e);
}
}

//Add our marker
ModContainerFactory.instance().registerContainerType(Type.getType(UMCMod.class), UMCModContainer.class);
}

@Override
Expand Down
43 changes: 43 additions & 0 deletions src/main/java/cam72cam/mod/UMCModContainer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package cam72cam.mod;

import net.minecraftforge.fml.common.FMLModContainer;
import net.minecraftforge.fml.common.MetadataCollection;
import net.minecraftforge.fml.common.ModMetadata;
import net.minecraftforge.fml.common.discovery.ModCandidate;
import net.minecraftforge.fml.common.event.FMLConstructionEvent;

import java.util.Map;

/**
* Wrapper to register UMC mods in <code>ModCore</code>
*/
public class UMCModContainer extends FMLModContainer {
ModCandidate candidate;
Map<String, Object> modDescriptor;

public UMCModContainer(String className, ModCandidate candidate, Map<String, Object> modDescriptor) {
super(className, candidate, modDescriptor);
this.candidate = candidate;
this.modDescriptor = modDescriptor;
}

@Override
public void constructMod(FMLConstructionEvent event) {
super.constructMod(event);
ModCore.register((ModCore.Mod) getMod());
}

@Override
public void bindMetadata(MetadataCollection mc) {
super.bindMetadata(mc);
//Then we'll override some of those
//TODO
// InputStream umcJson = new ZipInputStream(candidate.getModContainer())
ModMetadata modMetadata = this.getMetadata();

modMetadata.modId = (String) modDescriptor.get("modid");
modMetadata.name = (String) modDescriptor.get("name");
modMetadata.version = (String) modDescriptor.get("version");
modMetadata.autogenerated = false;
}
}
16 changes: 16 additions & 0 deletions src/main/java/cam72cam/mod/loading/UMCMod.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package cam72cam.mod.loading;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

//TODO Move into umc.json
@Retention(RetentionPolicy.RUNTIME)
public @interface UMCMod {
String modid();

String name();

String version();

String dependencies();
}
12 changes: 0 additions & 12 deletions src/main/resources/template/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,3 @@ dependencies {

//JAR//
jar.finalizedBy('reobfJar')

processResources {
inputs.property "version", project.version
inputs.property "mcversion", project.minecraft.version
from(sourceSets.main.resources.srcDirs) {
include 'mcmod.info'
expand 'version':project.version, 'mcversion':project.minecraft.version
}
from(sourceSets.main.resources.srcDirs) {
exclude 'mcmod.info'
}
}
16 changes: 0 additions & 16 deletions src/main/resources/template/src/main/java/PACKAGEPATH/Mod.java

This file was deleted.

16 changes: 0 additions & 16 deletions src/main/resources/template/src/main/resources/mcmod.info

This file was deleted.