Add forge boilerplate

This commit is contained in:
Sollace 2019-03-26 10:30:18 +02:00
parent 5411ca9e5d
commit db48187b6e
4 changed files with 106 additions and 35 deletions

View file

@ -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);
}
}

View file

@ -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;
}
}

View file

@ -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();
}
}

View file

@ -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());
}
}
} }