mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2025-02-13 16:24:23 +01:00
Add forge boilerplate
This commit is contained in:
parent
5411ca9e5d
commit
db48187b6e
4 changed files with 106 additions and 35 deletions
|
@ -10,7 +10,6 @@ import com.google.gson.annotations.Expose;
|
||||||
import com.minelittlepony.hdskins.gui.EntityPlayerModel;
|
import com.minelittlepony.hdskins.gui.EntityPlayerModel;
|
||||||
import com.minelittlepony.hdskins.gui.RenderPlayerModel;
|
import com.minelittlepony.hdskins.gui.RenderPlayerModel;
|
||||||
import com.minelittlepony.hdskins.server.SkinServer;
|
import com.minelittlepony.hdskins.server.SkinServer;
|
||||||
import com.minelittlepony.hdskins.upload.GLWindow;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -33,9 +32,6 @@ public abstract class HDSkins {
|
||||||
@Expose
|
@Expose
|
||||||
public List<SkinServer> skin_servers = SkinServer.defaultServers;
|
public List<SkinServer> skin_servers = SkinServer.defaultServers;
|
||||||
|
|
||||||
@Expose
|
|
||||||
public boolean experimentalSkinDrop = false;
|
|
||||||
|
|
||||||
@Expose
|
@Expose
|
||||||
public String lastChosenFile = "";
|
public String lastChosenFile = "";
|
||||||
|
|
||||||
|
@ -55,14 +51,5 @@ public abstract class HDSkins {
|
||||||
|
|
||||||
// register skin servers.
|
// register skin servers.
|
||||||
skin_servers.forEach(HDSkinManager.INSTANCE::addSkinServer);
|
skin_servers.forEach(HDSkinManager.INSTANCE::addSkinServer);
|
||||||
|
|
||||||
if (experimentalSkinDrop) {
|
|
||||||
GLWindow.create();
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void onToggledFullScreen(boolean fullScreen) {
|
|
||||||
GLWindow.current().refresh(fullScreen);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
package com.minelittlepony.hdskins.fml;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.entity.Render;
|
||||||
|
import net.minecraft.client.renderer.entity.RenderManager;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraftforge.fml.client.registry.RenderingRegistry;
|
||||||
|
import net.minecraftforge.fml.loading.FMLPaths;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.google.gson.stream.JsonWriter;
|
||||||
|
import com.minelittlepony.hdskins.HDSkins;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
public class Config extends HDSkins {
|
||||||
|
static final Gson gson = new GsonBuilder()
|
||||||
|
.setPrettyPrinting()
|
||||||
|
.excludeFieldsWithoutExposeAnnotation()
|
||||||
|
.create();
|
||||||
|
|
||||||
|
private final Path configFile;
|
||||||
|
|
||||||
|
Config(Path file) {
|
||||||
|
configFile = file;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public File getAssetsDirectory() {
|
||||||
|
return FMLPaths.CONFIGDIR.get().getParent().toAbsolutePath().toFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveConfig() {
|
||||||
|
try (JsonWriter writer = new JsonWriter(Files.newBufferedWriter(configFile))) {
|
||||||
|
writer.setIndent(" ");
|
||||||
|
|
||||||
|
gson.toJson(this, Config.class, writer);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected <T extends Entity> void addRenderer(Class<T> type, Function<RenderManager, Render<T>> renderer) {
|
||||||
|
RenderingRegistry.registerEntityRenderingHandler(type, rm -> renderer.apply(rm));
|
||||||
|
}
|
||||||
|
|
||||||
|
static Config of(Path file) {
|
||||||
|
Config result = null;
|
||||||
|
|
||||||
|
if (Files.exists(file)) {
|
||||||
|
try (BufferedReader s = Files.newBufferedReader(file)) {
|
||||||
|
result = gson.fromJson(s, Config.class);
|
||||||
|
} catch (IOException ignored) {
|
||||||
|
result = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result == null) {
|
||||||
|
result = new Config(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
result.saveConfig();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.minelittlepony.hdskins.fml;
|
||||||
|
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||||
|
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||||
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||||
|
import net.minecraftforge.fml.loading.FMLPaths;
|
||||||
|
|
||||||
|
@Mod("hdskins")
|
||||||
|
public class ForgeModHDSkins {
|
||||||
|
|
||||||
|
private Config hdskins;
|
||||||
|
|
||||||
|
public ForgeModHDSkins() {
|
||||||
|
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonInit);
|
||||||
|
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientInit);
|
||||||
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void commonInit(final FMLCommonSetupEvent event) {
|
||||||
|
|
||||||
|
hdskins = Config.of(FMLPaths.CONFIGDIR.get().resolve("hdskins.json"));
|
||||||
|
|
||||||
|
hdskins.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void clientInit(FMLClientSetupEvent event) {
|
||||||
|
hdskins.initComplete();
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,7 +27,7 @@ import java.io.File;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
@ExposableOptions(strategy = ConfigStrategy.Unversioned, filename = "hdskins")
|
@ExposableOptions(strategy = ConfigStrategy.Unversioned, filename = "hdskins")
|
||||||
public class LiteModHDSkins extends HDSkins implements InitCompleteListener, ViewportListener, Configurable, AdvancedExposable {
|
public class LiteModHDSkins extends HDSkins implements InitCompleteListener, AdvancedExposable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
@ -67,29 +67,14 @@ public class LiteModHDSkins extends HDSkins implements InitCompleteListener, Vie
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<? extends ConfigPanel> getConfigPanelClass() {
|
|
||||||
return Panel.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitCompleted(Minecraft minecraft, LiteLoader loader) {
|
public void onInitCompleted(Minecraft minecraft, LiteLoader loader) {
|
||||||
initComplete();
|
initComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onViewportResized(ScaledResolution resolution, int displayWidth, int displayHeight) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFullScreenToggled(boolean fullScreen) {
|
|
||||||
super.onToggledFullScreen(fullScreen);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected <T extends Entity> void addRenderer(Class<T> type, Function<RenderManager, Render<T>> renderer) {
|
protected <T extends Entity> void addRenderer(Class<T> type, Function<RenderManager, Render<T>> renderer) {
|
||||||
ModUtilities.addRenderer(type, renderer.apply(Minecraft.getMinecraft().getRenderManager()));
|
ModUtilities.addRenderer(type, renderer.apply(Minecraft.getInstance().getRenderManager()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -97,9 +82,4 @@ public class LiteModHDSkins extends HDSkins implements InitCompleteListener, Vie
|
||||||
return LiteLoader.getAssetsDirectory();
|
return LiteLoader.getAssetsDirectory();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Panel extends GuiLiteHost {
|
|
||||||
public Panel() {
|
|
||||||
super(new HDSkinsConfigPanel());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue