Added an option to control whether the Horse Button is visible or not

This commit is contained in:
Sollace 2019-07-10 17:09:40 +02:00
parent c871bcb3c0
commit ec34f58d3d
5 changed files with 51 additions and 24 deletions

View file

@ -5,6 +5,7 @@ import com.minelittlepony.client.hdskins.IndirectHDSkins;
import com.minelittlepony.client.pony.PonyManager; import com.minelittlepony.client.pony.PonyManager;
import com.minelittlepony.client.render.tileentities.skull.PonySkullRenderer; import com.minelittlepony.client.render.tileentities.skull.PonySkullRenderer;
import com.minelittlepony.client.settings.ClientPonyConfig; import com.minelittlepony.client.settings.ClientPonyConfig;
import com.minelittlepony.common.client.gui.VisibilityMode;
import com.minelittlepony.common.client.gui.element.Button; import com.minelittlepony.common.client.gui.element.Button;
import com.minelittlepony.common.client.gui.sprite.TextureSprite; import com.minelittlepony.common.client.gui.sprite.TextureSprite;
import com.minelittlepony.common.event.ClientReadyCallback; import com.minelittlepony.common.event.ClientReadyCallback;
@ -52,11 +53,14 @@ public class MineLittlePony implements ClientModInitializer {
private final PonyRenderManager renderManager = PonyRenderManager.getInstance(); private final PonyRenderManager renderManager = PonyRenderManager.getInstance();
private PonyConfig config; private ClientPonyConfig config;
private PonyManager ponyManager; private PonyManager ponyManager;
private FabricKeyBinding keyBinding; private FabricKeyBinding keyBinding;
private boolean hasHdSkins;
private boolean hasModMenu;
public MineLittlePony() { public MineLittlePony() {
instance = this; instance = this;
} }
@ -70,6 +74,9 @@ public class MineLittlePony implements ClientModInitializer {
@Override @Override
public void onInitializeClient() { public void onInitializeClient() {
hasHdSkins = FabricLoader.getInstance().isModLoaded("hdskins");
hasModMenu = FabricLoader.getInstance().isModLoaded("modmenu");
config = JsonConfig.of(GamePaths.getConfigDirectory().resolve("minelp.json"), ClientPonyConfig::new); config = JsonConfig.of(GamePaths.getConfigDirectory().resolve("minelp.json"), ClientPonyConfig::new);
ponyManager = new PonyManager(config); ponyManager = new PonyManager(config);
keyBinding = FabricKeyBinding.Builder.create(new Identifier("minelittlepony", "settings"), InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_F9, "key.categories.misc").build(); keyBinding = FabricKeyBinding.Builder.create(new Identifier("minelittlepony", "settings"), InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_F9, "key.categories.misc").build();
@ -134,17 +141,23 @@ public class MineLittlePony implements ClientModInitializer {
private void onScreenInit(Screen screen, ScreenInitCallback.ButtonList buttons) { private void onScreenInit(Screen screen, ScreenInitCallback.ButtonList buttons) {
if (screen instanceof TitleScreen) { if (screen instanceof TitleScreen) {
int y = FabricLoader.getInstance().isModLoaded("hdskins") ? 80 : 50; VisibilityMode mode = config.getHorseButtonMode();
boolean show = mode == VisibilityMode.ON || (mode == VisibilityMode.AUTO
buttons.add(new Button(screen.width - 50, screen.height - y, 20, 20).onClick(sender -> { && !(hasHdSkins || hasModMenu
MinecraftClient.getInstance().openScreen(new GuiPonySettings());
}).setStyle(new com.minelittlepony.common.client.gui.style.Style()
.setIcon(new TextureSprite()
.setPosition(2, 2)
.setTexture(new Identifier("minelittlepony", "textures/gui/pony.png"))
.setTextureSize(16, 16)
.setSize(16, 16))
)); ));
if (show) {
int y = hasHdSkins ? 80 : 50;
buttons.add(new Button(screen.width - 50, screen.height - y, 20, 20).onClick(sender -> {
MinecraftClient.getInstance().openScreen(new GuiPonySettings());
}).setStyle(new com.minelittlepony.common.client.gui.style.Style()
.setIcon(new TextureSprite()
.setPosition(2, 2)
.setTexture(new Identifier("minelittlepony", "textures/gui/pony.png"))
.setTextureSize(16, 16)
.setSize(16, 16))
));
}
} }
} }

View file

@ -6,14 +6,14 @@ import net.minecraft.text.LiteralText;
import com.minelittlepony.client.MineLittlePony; import com.minelittlepony.client.MineLittlePony;
import com.minelittlepony.client.render.entities.MobRenderers; import com.minelittlepony.client.render.entities.MobRenderers;
import com.minelittlepony.client.settings.ClientPonyConfig;
import com.minelittlepony.common.client.gui.GameGui; import com.minelittlepony.common.client.gui.GameGui;
import com.minelittlepony.common.client.gui.ScrollContainer; import com.minelittlepony.common.client.gui.ScrollContainer;
import com.minelittlepony.common.client.gui.element.Button; import com.minelittlepony.common.client.gui.element.Button;
import com.minelittlepony.common.client.gui.element.EnumSlider;
import com.minelittlepony.common.client.gui.element.Label; import com.minelittlepony.common.client.gui.element.Label;
import com.minelittlepony.common.client.gui.element.Slider; import com.minelittlepony.common.client.gui.element.Slider;
import com.minelittlepony.common.client.gui.element.Toggle; import com.minelittlepony.common.client.gui.element.Toggle;
import com.minelittlepony.pony.meta.Size;
import com.minelittlepony.settings.PonyConfig;
import com.minelittlepony.settings.PonyLevel; import com.minelittlepony.settings.PonyLevel;
import com.minelittlepony.settings.PonySettings; import com.minelittlepony.settings.PonySettings;
@ -29,7 +29,7 @@ public class GuiPonySettings extends GameGui {
private static final String MOB_PREFIX = "minelp.mobs."; private static final String MOB_PREFIX = "minelp.mobs.";
private PonyConfig config; private ClientPonyConfig config;
private final ScrollContainer content = new ScrollContainer(); private final ScrollContainer content = new ScrollContainer();
@ -38,7 +38,7 @@ public class GuiPonySettings extends GameGui {
public GuiPonySettings() { public GuiPonySettings() {
super(new LiteralText(OPTIONS_PREFIX + "title")); super(new LiteralText(OPTIONS_PREFIX + "title"));
config = MineLittlePony.getInstance().getConfig(); config = (ClientPonyConfig)MineLittlePony.getInstance().getConfig();
content.margin.top = 30; content.margin.top = 30;
content.margin.bottom = 30; content.margin.bottom = 30;
@ -90,9 +90,8 @@ public class GuiPonySettings extends GameGui {
.onChange(config::setGlobalScaleFactor) .onChange(config::setGlobalScaleFactor)
.setFormatter(value -> I18n.translate("minelp.debug.scale.value", I18n.translate(describeCurrentScale(value))))); .setFormatter(value -> I18n.translate("minelp.debug.scale.value", I18n.translate(describeCurrentScale(value)))));
content.addButton(new Label(LEFT, row += 30)).getStyle().setText("minelp.debug.size"); content.addButton(new Label(LEFT, row += 30)).getStyle().setText("minelp.debug.size");
content.addButton(new Slider(LEFT, row += 15, 0, Size.REGISTRY.length - 1, config.getOverrideSize().ordinal()) content.addButton(new EnumSlider<>(LEFT, row += 15, config.getOverrideSize())
.onChange(config::setSizeOverride) .onChange(config::setSizeOverride));
.setFormatter(value -> value < Size.REGISTRY.length ? Size.REGISTRY[(int)(float)value].name() : "Unset"));
} }
row += 20; row += 20;
@ -103,6 +102,11 @@ public class GuiPonySettings extends GameGui {
.getStyle().setText(OPTIONS_PREFIX + i.name().toLowerCase()); .getStyle().setText(OPTIONS_PREFIX + i.name().toLowerCase());
} }
content.addButton(new Label(LEFT, row += 20)).getStyle().setText(OPTIONS_PREFIX + "button");
content.addButton(new EnumSlider<>(LEFT, row += 20, config.getHorseButtonMode())
.onChange(config::setHorseButtonMode));
if (RIGHT != LEFT) { if (RIGHT != LEFT) {
row = 0; row = 0;
} else { } else {

View file

@ -4,10 +4,13 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import com.minelittlepony.client.render.entities.MobRenderers; import com.minelittlepony.client.render.entities.MobRenderers;
import com.minelittlepony.common.client.gui.VisibilityMode;
import com.minelittlepony.settings.PonyConfig; import com.minelittlepony.settings.PonyConfig;
public class ClientPonyConfig extends PonyConfig { public class ClientPonyConfig extends PonyConfig {
private final Setting<VisibilityMode> buttonMode = new Value<>("horseButton", VisibilityMode.AUTO);
public ClientPonyConfig() { public ClientPonyConfig() {
initWith(MobRenderers.values()); initWith(MobRenderers.values());
} }
@ -20,4 +23,13 @@ public class ClientPonyConfig extends PonyConfig {
player.calculateDimensions(); player.calculateDimensions();
} }
} }
public VisibilityMode getHorseButtonMode() {
return buttonMode.get();
}
public VisibilityMode setHorseButtonMode(VisibilityMode value) {
buttonMode.set(value);
return value;
}
} }

View file

@ -62,11 +62,8 @@ public class PonyConfig extends JsonConfig {
return sizeOverride.get(); return sizeOverride.get();
} }
public float setSizeOverride(float value) { public Size setSizeOverride(Size value) {
value = Math.round(value); sizeOverride.set(value);
Size size = Size.REGISTRY[(int) value % Size.REGISTRY.length]; return value;
sizeOverride.set(size);
return size.ordinal();
} }
} }

View file

@ -14,6 +14,7 @@
"minelp.options.fpsmagic": "Ponies use magic in first-person", "minelp.options.fpsmagic": "Ponies use magic in first-person",
"minelp.options.ponyskulls": "Render mob heads as ponies", "minelp.options.ponyskulls": "Render mob heads as ponies",
"minelp.options.frustrum": "Enable Frustum checks", "minelp.options.frustrum": "Enable Frustum checks",
"minelp.options.button": "Display On Title Screen",
"minelp.mobs.title": "Mob Settings", "minelp.mobs.title": "Mob Settings",
"minelp.mobs.villagers": "Ponify villagers", "minelp.mobs.villagers": "Ponify villagers",
"minelp.mobs.zombies": "Ponify zombies", "minelp.mobs.zombies": "Ponify zombies",