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.
This commit is contained in:
TheWeatherPony 2018-09-04 19:55:14 -07:00
parent d8913ed245
commit 927cbf1ce7
13 changed files with 89 additions and 42 deletions

View file

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

View file

@ -4,6 +4,7 @@ import com.minelittlepony.gui.GuiPonySettings;
import com.minelittlepony.hdskins.gui.GuiSkinsMineLP; import com.minelittlepony.hdskins.gui.GuiSkinsMineLP;
import com.minelittlepony.pony.data.IPonyData; import com.minelittlepony.pony.data.IPonyData;
import com.minelittlepony.pony.data.PonyDataSerialiser; import com.minelittlepony.pony.data.PonyDataSerialiser;
import com.minelittlepony.pony.data.PonyLevel;
import com.minelittlepony.render.PonySkullRenderer; import com.minelittlepony.render.PonySkullRenderer;
import com.mumfrey.liteloader.core.LiteLoader; import com.mumfrey.liteloader.core.LiteLoader;
import com.voxelmodpack.hdskins.HDSkinManager; import com.voxelmodpack.hdskins.HDSkinManager;
@ -37,22 +38,25 @@ public class MineLittlePony {
private static MineLittlePony instance; 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 PonyManager ponyManager;
private final PonyRenderManager renderManager; private static final PonyRenderManager renderManager = new PonyRenderManager();
MineLittlePony() { MineLittlePony() {
instance = this; instance = this;
LiteLoader.getInput().registerKeyBinding(SETTINGS_GUI); LiteLoader.getInput().registerKeyBinding(SETTINGS_GUI);
config = new PonyConfig(); config = (IPonyConfig)(Object) (pconfig = new PonyConfig());
ponyManager = new PonyManager(config); ponyManager = new PonyManager(config);
renderManager = new PonyRenderManager(); LiteLoader.getInstance().registerExposable(pconfig, null);
LiteLoader.getInstance().registerExposable(config, null);
IReloadableResourceManager irrm = (IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager(); IReloadableResourceManager irrm = (IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager();
irrm.registerReloadListener(ponyManager); irrm.registerReloadListener(ponyManager);
@ -110,15 +114,21 @@ public class MineLittlePony {
/** /**
* Gets the static pony render manager responsible for all entity renderers. * Gets the static pony render manager responsible for all entity renderers.
*/ */
public PonyRenderManager getRenderManager() { public static PonyRenderManager getRenderManager() {
return renderManager; return renderManager;
} }
/** /**
* Gets the global MineLP client configuration. * Gets the global MineLP client configuration.
*/ */
public static PonyConfig getConfig() { public static IPonyConfig getConfig() {
return getInstance().config; return config;
} }
/**
* Gets the Exposable MineLP client config, which is only present if MineLP is loaded for LiteLoader
*/
public static PonyConfig getInstalledConfig() {
return pconfig;
}
} }

View file

@ -12,16 +12,16 @@ import com.voxelmodpack.hdskins.HDSkinManager;
* Storage container for MineLP client settings. * Storage container for MineLP client settings.
*/ */
@ExposableOptions(filename = "minelittlepony", strategy = ConfigStrategy.Unversioned) @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 private PonyLevel ponylevel = PonyLevel.PONIES;
@Expose public boolean sizes = true; @Expose public boolean sizes = IPonyConfig.super.getSizes();
@Expose public boolean snuzzles = true; @Expose public boolean snuzzles = IPonyConfig.super.getSnuzzles();
@Expose public boolean hd = true; @Expose public boolean hd = IPonyConfig.super.getHD();
@Expose public boolean showscale = true; @Expose public boolean showscale = IPonyConfig.super.getShowScale();
@Expose public boolean fpsmagic = true; @Expose public boolean fpsmagic = IPonyConfig.super.getFPSMagic();
@Expose public boolean ponyskulls = true; @Expose public boolean ponyskulls = IPonyConfig.super.getPonySkulls();
public enum PonySettings implements Setting { public enum PonySettings implements Setting {
SIZES, SIZES,
@ -40,18 +40,32 @@ public class PonyConfig extends SensibleConfig implements Exposable {
@Expose public boolean guardians = true; @Expose public boolean guardians = true;
@Expose public boolean endermen = true; @Expose public boolean endermen = true;
/** @Override
* Gets the current PonyLevel. That is the level of ponies you would like to see. public boolean getSizes() {
* return sizes;
* @param ignorePony true to ignore whatever value the setting has. }
*/ @Override
public PonyLevel getEffectivePonyLevel(boolean ignorePony) { public boolean getSnuzzles() {
return ignorePony ? PonyLevel.BOTH : getPonyLevel(); 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;
} }
/** @Override
* Actually gets the pony level value. No option to ignore reality here.
*/
public PonyLevel getPonyLevel() { public PonyLevel getPonyLevel() {
if (ponylevel == null) { if (ponylevel == null) {
ponylevel = PonyLevel.PONIES; ponylevel = PonyLevel.PONIES;
@ -71,8 +85,4 @@ public class PonyConfig extends SensibleConfig implements Exposable {
HDSkinManager.INSTANCE.parseSkins(); HDSkinManager.INSTANCE.parseSkins();
} }
} }
public float getGlobalScaleFactor() {
return showscale ? 0.9F : 1;
}
} }

View file

@ -42,11 +42,11 @@ public class PonyManager implements IResourceManagerReloadListener, ISkinCacheCl
*/ */
private List<ResourceLocation> backgroundPonyList = Lists.newArrayList(); private List<ResourceLocation> backgroundPonyList = Lists.newArrayList();
private PonyConfig config; private IPonyConfig config;
private Map<ResourceLocation, IPony> poniesCache = Maps.newHashMap(); private Map<ResourceLocation, IPony> poniesCache = Maps.newHashMap();
public PonyManager(PonyConfig config) { public PonyManager(IPonyConfig config) {
this.config = config; this.config = config;
} }

View file

@ -55,7 +55,7 @@ public class PonyRenderManager {
/** /**
* Registers all entity model replacements. (except for players). * 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()) { for (MobRenderers i : MobRenderers.values()) {
i.apply(this, manager); i.apply(this, manager);
} }

View file

@ -22,7 +22,7 @@ public class GuiPonySettings extends SettingsPanel {
private PonyConfig config; private PonyConfig config;
public GuiPonySettings() { public GuiPonySettings() {
config = MineLittlePony.getConfig(); config = MineLittlePony.getInstalledConfig();
} }
@Override @Override

View file

@ -27,6 +27,6 @@ public class MixinItemRenderer {
at = @At(value = "INVOKE", at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/renderer/ItemRenderer;renderItemSide(" + EntityLivingBase + ItemStack + TransformType + "Z)V")) 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) { 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);
} }
} }

View file

@ -59,7 +59,7 @@ public class PonySnout {
} }
public void setGender(PonyGender gender) { 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; mare.isHidden = !show || gender == PonyGender.STALLION;
stallion.isHidden = !show || gender == PonyGender.MARE; stallion.isHidden = !show || gender == PonyGender.MARE;

View file

@ -42,6 +42,6 @@ public enum PonySize implements ITriggerPixelMapped<PonySize> {
} }
public PonySize getEffectiveSize() { public PonySize getEffectiveSize() {
return MineLittlePony.getConfig().sizes ? this : PonySize.NORMAL; return MineLittlePony.getConfig().getSizes() ? this : PonySize.NORMAL;
} }
} }

View file

@ -74,7 +74,7 @@ public class LevitatingItemRenderer {
pushMatrix(); pushMatrix();
boolean doMagic = MineLittlePony.getConfig().fpsmagic && pony.getMetadata().hasMagic(); boolean doMagic = MineLittlePony.getConfig().getFPSMagic() && pony.getMetadata().hasMagic();
if (doMagic) { if (doMagic) {
setupPerspective(entity, stack, left); setupPerspective(entity, stack, left);

View file

@ -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. * Original/Existing renderer is stored to a backup variable as a fallback in case of mods.
*/ */
public static TileEntitySkullRenderer resolve() { public static TileEntitySkullRenderer resolve() {
if (MineLittlePony.getConfig().ponyskulls) { if (MineLittlePony.getConfig().getPonySkulls()) {
if (!(instance instanceof PonySkullRenderer)) { if (!(instance instanceof PonySkullRenderer)) {
backup = instance; backup = instance;
ModUtilities.addRenderer(TileEntitySkull.class, ponyInstance); ModUtilities.addRenderer(TileEntitySkull.class, ponyInstance);
@ -79,7 +79,7 @@ public class PonySkullRenderer extends TileEntitySkullRenderer implements IRende
ISkull skull = skullMap.get(skullType); ISkull skull = skullMap.get(skullType);
if (skull == null || !skull.canRender(MineLittlePony.getConfig())) { if (skull == null || !skull.canRender(MineLittlePony.getInstalledConfig())) {
if (backup != null) { if (backup != null) {
backup.renderSkull(x, y, z, facing, rotation, skullType, profile, destroyStage, animateTicks); backup.renderSkull(x, y, z, facing, rotation, skullType, profile, destroyStage, animateTicks);
} else { } else {

View file

@ -31,7 +31,7 @@ public class LayerHeldPonyItemMagical<T extends EntityLivingBase> extends LayerH
@Override @Override
protected void postItemRender(T entity, ItemStack drop, TransformType transform, EnumHandSide hand) { protected void postItemRender(T entity, ItemStack drop, TransformType transform, EnumHandSide hand) {
if (isUnicorn()) { if (isUnicorn()) {
MineLittlePony.getInstance().getRenderManager().getMagicRenderer().renderItemGlow(entity, drop, transform, hand, this.<IModelUnicorn>getPonyModel().getMagicColor()); MineLittlePony.getRenderManager().getMagicRenderer().renderItemGlow(entity, drop, transform, hand, this.<IModelUnicorn>getPonyModel().getMagicColor());
} }
} }

View file

@ -71,7 +71,7 @@ public enum MobRenderers implements Setting {
@Override @Override
public void set(boolean value) { public void set(boolean value) {
Setting.super.set(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) { public void apply(PonyRenderManager pony, RenderManager manager) {