Rotate ponies wings to match when the player flaps their wings

This commit is contained in:
Sollace 2021-03-01 09:41:14 +02:00
parent fd65f1b9e1
commit f0e43cdbe7
5 changed files with 21 additions and 8 deletions

View file

@ -18,5 +18,5 @@ org.gradle.daemon=false
# Dependencies # Dependencies
modmenu_version=1.14.+ modmenu_version=1.14.+
minelp_version=4.2.1-1.16.5 minelp_version=4.2.2-1.16.5-1.16-SNAPSHOT
kirin_version=1.7.1-1.16.2-SNAPSHOT kirin_version=1.7.1-1.16.2-SNAPSHOT

View file

@ -8,6 +8,7 @@ import com.minelittlepony.unicopia.Race;
import com.minelittlepony.unicopia.Unicopia; import com.minelittlepony.unicopia.Unicopia;
import com.minelittlepony.unicopia.client.gui.SettingsScreen; import com.minelittlepony.unicopia.client.gui.SettingsScreen;
import com.minelittlepony.unicopia.client.gui.UHud; import com.minelittlepony.unicopia.client.gui.UHud;
import com.minelittlepony.unicopia.client.minelittlepony.MineLPConnector;
import com.minelittlepony.unicopia.entity.player.PlayerCamera; import com.minelittlepony.unicopia.entity.player.PlayerCamera;
import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.entity.player.Pony;
import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.ClientModInitializer;

View file

@ -19,7 +19,7 @@ import com.minelittlepony.unicopia.Config;
import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.Race;
import com.minelittlepony.unicopia.Unicopia; import com.minelittlepony.unicopia.Unicopia;
import com.minelittlepony.unicopia.WorldTribeManager; import com.minelittlepony.unicopia.WorldTribeManager;
import com.minelittlepony.unicopia.client.MineLPConnector; import com.minelittlepony.unicopia.client.minelittlepony.MineLPConnector;
import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;

View file

@ -3,26 +3,38 @@ package com.minelittlepony.unicopia.client.minelittlepony;
import com.minelittlepony.client.render.EquineRenderManager; import com.minelittlepony.client.render.EquineRenderManager;
import com.minelittlepony.model.IModel; import com.minelittlepony.model.IModel;
import com.minelittlepony.model.capabilities.fabric.PonyModelPrepareCallback; import com.minelittlepony.model.capabilities.fabric.PonyModelPrepareCallback;
import com.minelittlepony.unicopia.Unicopia;
import com.minelittlepony.unicopia.entity.player.Pony; import com.minelittlepony.unicopia.entity.player.Pony;
import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.ClientModInitializer;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.MathHelper;
public class Main implements ClientModInitializer { public class Main implements ClientModInitializer {
private boolean hookErroring;
@Override @Override
public void onInitializeClient() { public void onInitializeClient() {
PonyModelPrepareCallback.EVENT.register(this::onPonyModelPrepared); PonyModelPrepareCallback.EVENT.register(this::onPonyModelPrepared);
} }
private void onPonyModelPrepared(Entity entity, IModel model, EquineRenderManager.Mode mode) { private void onPonyModelPrepared(Entity entity, IModel model, EquineRenderManager.Mode mode) {
if (hookErroring) return;
try {
if (entity instanceof PlayerEntity) { if (entity instanceof PlayerEntity) {
Pony pony = Pony.of((PlayerEntity)entity); Pony pony = Pony.of((PlayerEntity)entity);
model.getAttributes().isSwimming |= pony.getMotion().isFlying(); if (pony.getMotion().isFlying()) {
//model.getAttributes().isSwimmingRotated |= pony.getMotion().isFlying(); model.getAttributes().wingAngle = MathHelper.clamp(pony.getMotion().getWingAngle() / 3 - (float)Math.PI * 0.7F, -3, 0);
model.getAttributes().isHorizontal = true;
}
model.getAttributes().isGoingFast |= pony.getMotion().isRainbooming(); model.getAttributes().isGoingFast |= pony.getMotion().isRainbooming();
} }
} catch (Throwable t) {
Unicopia.LOGGER.error("Exception occured in MineLP hook:onPonyModelPrepared", t);
hookErroring = true;
}
} }
} }

View file

@ -1,4 +1,4 @@
package com.minelittlepony.unicopia.client; package com.minelittlepony.unicopia.client.minelittlepony;
import com.minelittlepony.client.MineLittlePony; import com.minelittlepony.client.MineLittlePony;
import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.Race;