From 927cbf1ce7f651ab3f5140875bfa6c961c7056b9 Mon Sep 17 00:00:00 2001 From: TheWeatherPony Date: Tue, 4 Sep 2018 19:55:14 -0700 Subject: [PATCH] Groundwork for rendering as library without LiteLoader Added IPonyConfig to fake a config that doesn't use LiteLoader-based code, made config and rendermanager in mod class static so they exist without a LiteLoader-created instance of the mod, and modified appropriate calls. --- .../java/com/minelittlepony/IPonyConfig.java | 27 ++++++++++ .../com/minelittlepony/MineLittlePony.java | 28 ++++++---- .../java/com/minelittlepony/PonyConfig.java | 52 +++++++++++-------- .../java/com/minelittlepony/PonyManager.java | 4 +- .../com/minelittlepony/PonyRenderManager.java | 2 +- .../minelittlepony/gui/GuiPonySettings.java | 2 +- .../mixin/MixinItemRenderer.java | 2 +- .../model/components/PonySnout.java | 2 +- .../minelittlepony/pony/data/PonySize.java | 2 +- .../render/LevitatingItemRenderer.java | 2 +- .../render/PonySkullRenderer.java | 4 +- .../layer/LayerHeldPonyItemMagical.java | 2 +- .../render/ponies/MobRenderers.java | 2 +- 13 files changed, 89 insertions(+), 42 deletions(-) create mode 100644 src/main/java/com/minelittlepony/IPonyConfig.java diff --git a/src/main/java/com/minelittlepony/IPonyConfig.java b/src/main/java/com/minelittlepony/IPonyConfig.java new file mode 100644 index 00000000..8cfb1781 --- /dev/null +++ b/src/main/java/com/minelittlepony/IPonyConfig.java @@ -0,0 +1,27 @@ +package com.minelittlepony; + +import com.minelittlepony.pony.data.PonyLevel; + +public interface IPonyConfig { + default boolean getSizes() { return true; } + default boolean getSnuzzles() { return true; } + default boolean getHD() { return true; } + default boolean getShowScale() { return true; } + default boolean getFPSMagic() { return true; } + default boolean getPonySkulls() { return true; } + /** + * Gets the current PonyLevel. That is the level of ponies you would like to see. + * + * @param ignorePony true to ignore whatever value the setting has. + */ + default PonyLevel getEffectivePonyLevel(boolean ignorePony) { + return ignorePony ? PonyLevel.BOTH : getPonyLevel(); + } + /** + * Actually gets the pony level value. No option to ignore reality here. + */ + PonyLevel getPonyLevel(); + default float getGlobalScaleFactor() { + return getShowScale() ? 0.9F : 1; + } +} diff --git a/src/main/java/com/minelittlepony/MineLittlePony.java b/src/main/java/com/minelittlepony/MineLittlePony.java index 07a309cc..0b97db61 100644 --- a/src/main/java/com/minelittlepony/MineLittlePony.java +++ b/src/main/java/com/minelittlepony/MineLittlePony.java @@ -4,6 +4,7 @@ import com.minelittlepony.gui.GuiPonySettings; import com.minelittlepony.hdskins.gui.GuiSkinsMineLP; import com.minelittlepony.pony.data.IPonyData; import com.minelittlepony.pony.data.PonyDataSerialiser; +import com.minelittlepony.pony.data.PonyLevel; import com.minelittlepony.render.PonySkullRenderer; import com.mumfrey.liteloader.core.LiteLoader; import com.voxelmodpack.hdskins.HDSkinManager; @@ -37,22 +38,25 @@ public class MineLittlePony { private static MineLittlePony instance; - private final PonyConfig config; + private static PonyConfig pconfig; + private static IPonyConfig config = new IPonyConfig() { + @Override + public PonyLevel getPonyLevel() { + return PonyLevel.BOTH; + }}; private final PonyManager ponyManager; - private final PonyRenderManager renderManager; + private static final PonyRenderManager renderManager = new PonyRenderManager(); MineLittlePony() { instance = this; LiteLoader.getInput().registerKeyBinding(SETTINGS_GUI); - config = new PonyConfig(); + config = (IPonyConfig)(Object) (pconfig = new PonyConfig()); ponyManager = new PonyManager(config); - renderManager = new PonyRenderManager(); - - LiteLoader.getInstance().registerExposable(config, null); + LiteLoader.getInstance().registerExposable(pconfig, null); IReloadableResourceManager irrm = (IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager(); irrm.registerReloadListener(ponyManager); @@ -110,15 +114,21 @@ public class MineLittlePony { /** * Gets the static pony render manager responsible for all entity renderers. */ - public PonyRenderManager getRenderManager() { + public static PonyRenderManager getRenderManager() { return renderManager; } /** * Gets the global MineLP client configuration. */ - public static PonyConfig getConfig() { - return getInstance().config; + public static IPonyConfig getConfig() { + return config; } + /** + * Gets the Exposable MineLP client config, which is only present if MineLP is loaded for LiteLoader + */ + public static PonyConfig getInstalledConfig() { + return pconfig; + } } diff --git a/src/main/java/com/minelittlepony/PonyConfig.java b/src/main/java/com/minelittlepony/PonyConfig.java index bff4f978..9f64c68d 100644 --- a/src/main/java/com/minelittlepony/PonyConfig.java +++ b/src/main/java/com/minelittlepony/PonyConfig.java @@ -12,16 +12,16 @@ import com.voxelmodpack.hdskins.HDSkinManager; * Storage container for MineLP client settings. */ @ExposableOptions(filename = "minelittlepony", strategy = ConfigStrategy.Unversioned) -public class PonyConfig extends SensibleConfig implements Exposable { +public class PonyConfig extends SensibleConfig implements Exposable, IPonyConfig { @Expose private PonyLevel ponylevel = PonyLevel.PONIES; - @Expose public boolean sizes = true; - @Expose public boolean snuzzles = true; - @Expose public boolean hd = true; - @Expose public boolean showscale = true; - @Expose public boolean fpsmagic = true; - @Expose public boolean ponyskulls = true; + @Expose public boolean sizes = IPonyConfig.super.getSizes(); + @Expose public boolean snuzzles = IPonyConfig.super.getSnuzzles(); + @Expose public boolean hd = IPonyConfig.super.getHD(); + @Expose public boolean showscale = IPonyConfig.super.getShowScale(); + @Expose public boolean fpsmagic = IPonyConfig.super.getFPSMagic(); + @Expose public boolean ponyskulls = IPonyConfig.super.getPonySkulls(); public enum PonySettings implements Setting { SIZES, @@ -40,18 +40,32 @@ public class PonyConfig extends SensibleConfig implements Exposable { @Expose public boolean guardians = true; @Expose public boolean endermen = true; - /** - * Gets the current PonyLevel. That is the level of ponies you would like to see. - * - * @param ignorePony true to ignore whatever value the setting has. - */ - public PonyLevel getEffectivePonyLevel(boolean ignorePony) { - return ignorePony ? PonyLevel.BOTH : getPonyLevel(); + @Override + public boolean getSizes() { + return sizes; + } + @Override + public boolean getSnuzzles() { + return snuzzles; + } + @Override + public boolean getHD() { + return hd; + } + @Override + public boolean getShowScale() { + return showscale; + } + @Override + public boolean getFPSMagic() { + return fpsmagic; + } + @Override + public boolean getPonySkulls() { + return ponyskulls; } - /** - * Actually gets the pony level value. No option to ignore reality here. - */ + @Override public PonyLevel getPonyLevel() { if (ponylevel == null) { ponylevel = PonyLevel.PONIES; @@ -71,8 +85,4 @@ public class PonyConfig extends SensibleConfig implements Exposable { HDSkinManager.INSTANCE.parseSkins(); } } - - public float getGlobalScaleFactor() { - return showscale ? 0.9F : 1; - } } diff --git a/src/main/java/com/minelittlepony/PonyManager.java b/src/main/java/com/minelittlepony/PonyManager.java index 75bdd237..6de2fd2e 100644 --- a/src/main/java/com/minelittlepony/PonyManager.java +++ b/src/main/java/com/minelittlepony/PonyManager.java @@ -42,11 +42,11 @@ public class PonyManager implements IResourceManagerReloadListener, ISkinCacheCl */ private List backgroundPonyList = Lists.newArrayList(); - private PonyConfig config; + private IPonyConfig config; private Map poniesCache = Maps.newHashMap(); - public PonyManager(PonyConfig config) { + public PonyManager(IPonyConfig config) { this.config = config; } diff --git a/src/main/java/com/minelittlepony/PonyRenderManager.java b/src/main/java/com/minelittlepony/PonyRenderManager.java index 6b3fe77c..d66b2aed 100644 --- a/src/main/java/com/minelittlepony/PonyRenderManager.java +++ b/src/main/java/com/minelittlepony/PonyRenderManager.java @@ -55,7 +55,7 @@ public class PonyRenderManager { /** * Registers all entity model replacements. (except for players). */ - public void initializeMobRenderers(RenderManager manager, PonyConfig config) { + public void initializeMobRenderers(RenderManager manager, IPonyConfig config) { for (MobRenderers i : MobRenderers.values()) { i.apply(this, manager); } diff --git a/src/main/java/com/minelittlepony/gui/GuiPonySettings.java b/src/main/java/com/minelittlepony/gui/GuiPonySettings.java index df2f3bc6..4532dfaf 100644 --- a/src/main/java/com/minelittlepony/gui/GuiPonySettings.java +++ b/src/main/java/com/minelittlepony/gui/GuiPonySettings.java @@ -22,7 +22,7 @@ public class GuiPonySettings extends SettingsPanel { private PonyConfig config; public GuiPonySettings() { - config = MineLittlePony.getConfig(); + config = MineLittlePony.getInstalledConfig(); } @Override diff --git a/src/main/java/com/minelittlepony/mixin/MixinItemRenderer.java b/src/main/java/com/minelittlepony/mixin/MixinItemRenderer.java index 72f53464..7f83e50d 100644 --- a/src/main/java/com/minelittlepony/mixin/MixinItemRenderer.java +++ b/src/main/java/com/minelittlepony/mixin/MixinItemRenderer.java @@ -27,6 +27,6 @@ public class MixinItemRenderer { at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/ItemRenderer;renderItemSide(" + EntityLivingBase + ItemStack + TransformType + "Z)V")) private void redirectRenderItemSide(ItemRenderer self, EntityLivingBase entity, ItemStack stack, TransformType transform, boolean left) { - MineLittlePony.getInstance().getRenderManager().getMagicRenderer().renderItemInFirstPerson(self, (AbstractClientPlayer)entity, stack, transform, left); + MineLittlePony.getRenderManager().getMagicRenderer().renderItemInFirstPerson(self, (AbstractClientPlayer)entity, stack, transform, left); } } diff --git a/src/main/java/com/minelittlepony/model/components/PonySnout.java b/src/main/java/com/minelittlepony/model/components/PonySnout.java index 6b25367c..9acaef65 100644 --- a/src/main/java/com/minelittlepony/model/components/PonySnout.java +++ b/src/main/java/com/minelittlepony/model/components/PonySnout.java @@ -59,7 +59,7 @@ public class PonySnout { } public void setGender(PonyGender gender) { - boolean show = !head.hasHeadGear() && !isHidden && MineLittlePony.getConfig().snuzzles; + boolean show = !head.hasHeadGear() && !isHidden && MineLittlePony.getConfig().getSnuzzles(); mare.isHidden = !show || gender == PonyGender.STALLION; stallion.isHidden = !show || gender == PonyGender.MARE; diff --git a/src/main/java/com/minelittlepony/pony/data/PonySize.java b/src/main/java/com/minelittlepony/pony/data/PonySize.java index 38b08264..1c97a733 100644 --- a/src/main/java/com/minelittlepony/pony/data/PonySize.java +++ b/src/main/java/com/minelittlepony/pony/data/PonySize.java @@ -42,6 +42,6 @@ public enum PonySize implements ITriggerPixelMapped { } public PonySize getEffectiveSize() { - return MineLittlePony.getConfig().sizes ? this : PonySize.NORMAL; + return MineLittlePony.getConfig().getSizes() ? this : PonySize.NORMAL; } } diff --git a/src/main/java/com/minelittlepony/render/LevitatingItemRenderer.java b/src/main/java/com/minelittlepony/render/LevitatingItemRenderer.java index 63d1f2cd..e7420237 100644 --- a/src/main/java/com/minelittlepony/render/LevitatingItemRenderer.java +++ b/src/main/java/com/minelittlepony/render/LevitatingItemRenderer.java @@ -74,7 +74,7 @@ public class LevitatingItemRenderer { pushMatrix(); - boolean doMagic = MineLittlePony.getConfig().fpsmagic && pony.getMetadata().hasMagic(); + boolean doMagic = MineLittlePony.getConfig().getFPSMagic() && pony.getMetadata().hasMagic(); if (doMagic) { setupPerspective(entity, stack, left); diff --git a/src/main/java/com/minelittlepony/render/PonySkullRenderer.java b/src/main/java/com/minelittlepony/render/PonySkullRenderer.java index 9e599262..1cd6136c 100644 --- a/src/main/java/com/minelittlepony/render/PonySkullRenderer.java +++ b/src/main/java/com/minelittlepony/render/PonySkullRenderer.java @@ -52,7 +52,7 @@ public class PonySkullRenderer extends TileEntitySkullRenderer implements IRende * Original/Existing renderer is stored to a backup variable as a fallback in case of mods. */ public static TileEntitySkullRenderer resolve() { - if (MineLittlePony.getConfig().ponyskulls) { + if (MineLittlePony.getConfig().getPonySkulls()) { if (!(instance instanceof PonySkullRenderer)) { backup = instance; ModUtilities.addRenderer(TileEntitySkull.class, ponyInstance); @@ -79,7 +79,7 @@ public class PonySkullRenderer extends TileEntitySkullRenderer implements IRende ISkull skull = skullMap.get(skullType); - if (skull == null || !skull.canRender(MineLittlePony.getConfig())) { + if (skull == null || !skull.canRender(MineLittlePony.getInstalledConfig())) { if (backup != null) { backup.renderSkull(x, y, z, facing, rotation, skullType, profile, destroyStage, animateTicks); } else { diff --git a/src/main/java/com/minelittlepony/render/layer/LayerHeldPonyItemMagical.java b/src/main/java/com/minelittlepony/render/layer/LayerHeldPonyItemMagical.java index dddc71c1..2fc77982 100644 --- a/src/main/java/com/minelittlepony/render/layer/LayerHeldPonyItemMagical.java +++ b/src/main/java/com/minelittlepony/render/layer/LayerHeldPonyItemMagical.java @@ -31,7 +31,7 @@ public class LayerHeldPonyItemMagical extends LayerH @Override protected void postItemRender(T entity, ItemStack drop, TransformType transform, EnumHandSide hand) { if (isUnicorn()) { - MineLittlePony.getInstance().getRenderManager().getMagicRenderer().renderItemGlow(entity, drop, transform, hand, this.getPonyModel().getMagicColor()); + MineLittlePony.getRenderManager().getMagicRenderer().renderItemGlow(entity, drop, transform, hand, this.getPonyModel().getMagicColor()); } } diff --git a/src/main/java/com/minelittlepony/render/ponies/MobRenderers.java b/src/main/java/com/minelittlepony/render/ponies/MobRenderers.java index 886922b5..43bd00c1 100644 --- a/src/main/java/com/minelittlepony/render/ponies/MobRenderers.java +++ b/src/main/java/com/minelittlepony/render/ponies/MobRenderers.java @@ -71,7 +71,7 @@ public enum MobRenderers implements Setting { @Override public void set(boolean value) { Setting.super.set(value); - apply(MineLittlePony.getInstance().getRenderManager(), Minecraft.getMinecraft().getRenderManager()); + apply(MineLittlePony.getRenderManager(), Minecraft.getMinecraft().getRenderManager()); } public void apply(PonyRenderManager pony, RenderManager manager) {