Unicopia/src/main/java/com/minelittlepony/unicopia/client/UnicopiaClient.java

94 lines
3.4 KiB
Java
Raw Normal View History

package com.minelittlepony.unicopia.client;
2019-01-31 16:21:14 +01:00
2020-10-04 12:58:01 +02:00
import java.util.Optional;
import com.minelittlepony.common.client.gui.element.Cycler;
import com.minelittlepony.common.event.ScreenInitCallback;
import com.minelittlepony.common.event.ScreenInitCallback.ButtonList;
import com.minelittlepony.unicopia.InteractionManager;
import com.minelittlepony.unicopia.Race;
import com.minelittlepony.unicopia.Unicopia;
import com.minelittlepony.unicopia.client.gui.UHud;
2020-10-04 12:58:01 +02:00
import com.minelittlepony.unicopia.entity.player.PlayerCamera;
import com.minelittlepony.unicopia.entity.player.Pony;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.world.CreateWorldScreen;
import net.minecraft.client.util.math.MatrixStack;
2020-10-04 12:58:01 +02:00
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.MathHelper;
2020-04-25 13:32:33 +02:00
public class UnicopiaClient implements ClientModInitializer {
2020-10-04 12:58:01 +02:00
public static Optional<PlayerCamera> getCamera() {
PlayerEntity player = MinecraftClient.getInstance().player;
if (player != null && MinecraftClient.getInstance().cameraEntity == player) {
return Optional.of(Pony.of(player).getCamera());
}
return Optional.empty();
}
public static Race getPreferredRace() {
if (!Unicopia.getConfig().ignoresMineLittlePony()
&& MinecraftClient.getInstance().player != null) {
Race race = MineLPConnector.getPlayerPonyRace();
if (!race.isDefault()) {
return race;
}
}
return Unicopia.getConfig().getPrefferedRace();
}
public static float getWorldBrightness(float initial) {
return Math.min(1, initial + 0.6F);
}
2020-04-22 16:28:20 +02:00
@Override
public void onInitializeClient() {
2020-04-25 13:32:33 +02:00
InteractionManager.INSTANCE = new ClientInteractionManager();
2020-04-22 16:28:20 +02:00
KeyBindingsHandler.bootstrap();
2020-04-24 16:10:00 +02:00
URenderers.bootstrap();
ClientTickEvents.END_CLIENT_TICK.register(this::onTick);
ScreenInitCallback.EVENT.register(this::onScreenInit);
}
2020-04-22 16:28:20 +02:00
private void onTick(MinecraftClient client) {
KeyBindingsHandler.INSTANCE.tick(client);
UHud.instance.tick();
}
2020-04-22 16:28:20 +02:00
private void onScreenInit(Screen screen, ButtonList buttons) {
if (screen instanceof CreateWorldScreen) {
buttons.add(new Cycler(screen.width / 2 + 110, 60, 20, 20) {
@Override
protected void renderForground(MatrixStack matrices, MinecraftClient mc, int mouseX, int mouseY, int foreColor) {
super.renderForground(matrices, mc, mouseX, mouseY, foreColor);
if (isMouseOver(mouseX, mouseY)) {
renderToolTip(matrices, screen, mouseX, mouseY);
}
}
}).setStyles(
Race.EARTH.getStyle(),
Race.UNICORN.getStyle(),
Race.PEGASUS.getStyle(),
Race.BAT.getStyle(),
Race.ALICORN.getStyle(),
Race.CHANGELING.getStyle()
).onChange(i -> {
Unicopia.getConfig().setPreferredRace(Race.fromId(i + 1));
2020-04-22 16:28:20 +02:00
return i;
}).setValue(MathHelper.clamp(Unicopia.getConfig().getPrefferedRace().ordinal() - 1, 0, 5));
}
2020-04-22 16:28:20 +02:00
}
}