mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2025-02-12 16:04:21 +01:00
20w49a -> 21w05b
This commit is contained in:
parent
28d2b805ed
commit
99ed7699a1
21 changed files with 107 additions and 145 deletions
|
@ -3,10 +3,10 @@ org.gradle.daemon=false
|
|||
|
||||
# Fabric Properties
|
||||
# check these on https://modmuss50.me/fabric.html
|
||||
minecraft_version=20w49a
|
||||
yarn_mappings=20w49a+build.1
|
||||
loader_version=0.10.8
|
||||
fabric_version=0.27.2+1.17
|
||||
minecraft_version=21w05b
|
||||
yarn_mappings=21w05b+build.5
|
||||
loader_version=0.11.1
|
||||
fabric_version=0.30.1+1.17
|
||||
|
||||
# Mod Properties
|
||||
group=com.minelittlepony
|
||||
|
|
|
@ -3,10 +3,10 @@ package com.minelittlepony.api.pony.network.fabric;
|
|||
import io.netty.buffer.Unpooled;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.network.ClientSidePacketRegistry;
|
||||
import net.fabricmc.fabric.api.network.PacketContext;
|
||||
import net.fabricmc.fabric.api.network.ServerSidePacketRegistry;
|
||||
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
|
||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.network.PacketByteBuf;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
|
@ -18,19 +18,19 @@ import java.util.function.Function;
|
|||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public interface Channel {
|
||||
Consumer<MsgPonyData> CLIENT_PONY_DATA = clientToServer(new Identifier("minelittlepony", "pony_data"), MsgPonyData::new, MsgPonyData::toBuffer, (packet, context) -> {
|
||||
PonyDataCallback.EVENT.invoker().onPonyDataAvailable(context.getPlayer(), packet, packet.isNoSkin(), EnvType.SERVER);
|
||||
Consumer<MsgPonyData> CLIENT_PONY_DATA = clientToServer(new Identifier("minelittlepony", "pony_data"), MsgPonyData::new, MsgPonyData::toBuffer, (packet, player) -> {
|
||||
PonyDataCallback.EVENT.invoker().onPonyDataAvailable(player, packet, packet.isNoSkin(), EnvType.SERVER);
|
||||
});
|
||||
|
||||
static void bootstrap() { }
|
||||
|
||||
static <T> Consumer<T> clientToServer(Identifier id, Function<PacketByteBuf, T> factory,
|
||||
BiConsumer<T, PacketByteBuf> bufferWriter,
|
||||
BiConsumer<T, PacketContext> handler) {
|
||||
ServerSidePacketRegistry.INSTANCE.register(id, (context, buffer) -> {
|
||||
BiConsumer<T, PlayerEntity> handler) {
|
||||
ServerPlayNetworking.registerGlobalReceiver(id, (server, player, hhandler, buffer, responseSender) -> {
|
||||
T packet = factory.apply(buffer);
|
||||
context.getTaskQueue().execute(() -> {
|
||||
handler.accept(packet, context);
|
||||
server.execute(() -> {
|
||||
handler.accept(packet, player);
|
||||
});
|
||||
});
|
||||
return packet -> {
|
||||
|
@ -41,7 +41,7 @@ public interface Channel {
|
|||
PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer());
|
||||
bufferWriter.accept(packet, buf);
|
||||
|
||||
ClientSidePacketRegistry.INSTANCE.sendToServer(id, buf);
|
||||
ClientPlayNetworking.send(id, buf);
|
||||
};
|
||||
}
|
||||
}
|
|
@ -5,7 +5,6 @@ import com.minelittlepony.api.pony.network.fabric.Channel;
|
|||
import com.minelittlepony.client.model.ModelType;
|
||||
import com.minelittlepony.client.pony.PonyManager;
|
||||
import com.minelittlepony.client.render.PonyRenderDispatcher;
|
||||
import com.minelittlepony.client.render.blockentity.skull.PonySkullRenderer;
|
||||
import com.minelittlepony.client.settings.ClientPonyConfig;
|
||||
import com.minelittlepony.common.client.gui.VisibilityMode;
|
||||
import com.minelittlepony.common.client.gui.element.Button;
|
||||
|
@ -24,7 +23,7 @@ import net.fabricmc.loader.api.FabricLoader;
|
|||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.client.gui.screen.TitleScreen;
|
||||
import net.minecraft.client.options.KeyBinding;
|
||||
import net.minecraft.client.option.KeyBinding;
|
||||
import net.minecraft.client.util.InputUtil;
|
||||
import net.minecraft.resource.ResourceType;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
@ -82,7 +81,6 @@ public class MineLittlePony implements ClientModInitializer {
|
|||
ClientTickEvents.END_CLIENT_TICK.register(this::onTick);
|
||||
ClientReadyCallback.EVENT.register(this::onClientReady);
|
||||
ScreenInitCallback.EVENT.register(this::onScreenInit);
|
||||
config.ponyskulls.onChanged(PonySkullRenderer::resolve);
|
||||
|
||||
config.load();
|
||||
|
||||
|
|
|
@ -20,17 +20,16 @@ abstract class MixinItemRenderer {
|
|||
|
||||
private static final String Boolean = "Z";
|
||||
|
||||
@Inject(method = "getArmorGlintConsumer(" + VertexConsumerProvider + RenderLayer + Boolean + Boolean + ")" + VertexConsumer, at = @At("HEAD"), cancellable = true)
|
||||
private static final String PARAMS = "(" + VertexConsumerProvider + RenderLayer + Boolean + Boolean + ")" + VertexConsumer;
|
||||
|
||||
@Inject(method = {
|
||||
"getArmorGlintConsumer" + PARAMS,
|
||||
"getItemGlintConsumer" + PARAMS,
|
||||
"getDirectItemGlintConsumer" + PARAMS
|
||||
}, at = @At("HEAD"), cancellable = true)
|
||||
private static void onGetArmorVertexConsumer(VertexConsumerProvider provider, RenderLayer layer, boolean solid, boolean glint, CallbackInfoReturnable<VertexConsumer> info) {
|
||||
if (LevitatingItemRenderer.usesTransparency()) {
|
||||
info.setReturnValue(provider.getBuffer(LevitatingItemRenderer.getRenderLayer()));
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "getItemGlintConsumer(" + VertexConsumerProvider + RenderLayer + Boolean + Boolean + ")" + VertexConsumer, at = @At("HEAD"), cancellable = true)
|
||||
private static void onMethod_29711(VertexConsumerProvider provider, RenderLayer layer, boolean solide, boolean glint, CallbackInfoReturnable<VertexConsumer> info) {
|
||||
if (LevitatingItemRenderer.usesTransparency()) {
|
||||
info.setReturnValue(provider.getBuffer(LevitatingItemRenderer.getRenderLayer()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ import javax.annotation.Nullable;
|
|||
|
||||
@Mixin(SkullBlockEntityRenderer.class)
|
||||
abstract class MixinSkullBlockEntityRenderer implements BlockEntityRenderer<SkullBlockEntity> {
|
||||
@Inject(method = "method_32161("
|
||||
@Inject(method = "renderSkull("
|
||||
+ "Lnet/minecraft/util/math/Direction;"
|
||||
+ "F"
|
||||
+ "F"
|
||||
|
@ -33,32 +33,27 @@ abstract class MixinSkullBlockEntityRenderer implements BlockEntityRenderer<Skul
|
|||
+ "Lnet/minecraft/client/render/block/entity/SkullBlockEntityModel;"
|
||||
+ "Lnet/minecraft/client/render/RenderLayer;"
|
||||
+ ")V", at = @At("HEAD"), cancellable = true)
|
||||
private static void onMethod_32161(@Nullable Direction direction,
|
||||
private static void onRenderSkull(@Nullable Direction direction,
|
||||
float angle, float poweredTicks,
|
||||
MatrixStack stack, VertexConsumerProvider renderContext, int lightUv,
|
||||
SkullBlockEntityModel model, RenderLayer layer,
|
||||
CallbackInfo info) {
|
||||
|
||||
if (PonySkullRenderer.INSTANCE == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!info.isCancelled() && PonySkullRenderer.INSTANCE.renderSkull(direction, angle, poweredTicks, stack, renderContext, layer, lightUv)) {
|
||||
if (!info.isCancelled() && PonySkullRenderer.renderSkull(direction, angle, poweredTicks, stack, renderContext, layer, lightUv)) {
|
||||
info.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "method_3578("
|
||||
@Inject(method = "getRenderLayer("
|
||||
+ "Lnet/minecraft/block/SkullBlock$SkullType;"
|
||||
+ "Lcom/mojang/authlib/GameProfile;"
|
||||
+ ")Lnet/minecraft/client/render/RenderLayer;", at = @At("HEAD"), cancellable = true)
|
||||
private static void onMethod_3578(SkullBlock.SkullType skullType, @Nullable GameProfile profile, CallbackInfoReturnable<RenderLayer> info) {
|
||||
if (info.isCancelled() || PonySkullRenderer.INSTANCE == null) {
|
||||
return;
|
||||
}
|
||||
RenderLayer result = PonySkullRenderer.INSTANCE.getRenderLayer(skullType, profile);
|
||||
if (result != null) {
|
||||
info.setReturnValue(result);
|
||||
private static void onGetRenderLayer(SkullBlock.SkullType skullType, @Nullable GameProfile profile, CallbackInfoReturnable<RenderLayer> info) {
|
||||
if (!info.isCancelled()) {
|
||||
RenderLayer result = PonySkullRenderer.getSkullRenderLayer(skullType, profile);
|
||||
if (result != null) {
|
||||
info.setReturnValue(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -186,17 +186,17 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
*/
|
||||
protected void shakeBody(float move, float swing, float bodySwing, float ticks) {
|
||||
upperTorso.yaw = bodySwing;
|
||||
torso.yaw = bodySwing;
|
||||
body.yaw = bodySwing;
|
||||
neck.yaw = bodySwing;
|
||||
}
|
||||
|
||||
private void animateWears() {
|
||||
leftSleeve.copyTransform(leftArm);
|
||||
rightSleeve.copyTransform(rightArm);
|
||||
leftPantLeg.copyTransform(leftLeg);
|
||||
rightPantLeg.copyTransform(rightLeg);
|
||||
jacket.copyTransform(torso);
|
||||
helmet.copyTransform(head);
|
||||
leftPants.copyTransform(leftLeg);
|
||||
rightPants.copyTransform(rightLeg);
|
||||
jacket.copyTransform(body);
|
||||
hat.copyTransform(head);
|
||||
upperTorsoOverlay.copyTransform(upperTorso);
|
||||
}
|
||||
|
||||
|
@ -244,8 +244,8 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
rotateLegsOnGround(move, swing, ticks, entity);
|
||||
}
|
||||
|
||||
float sin = MathHelper.sin(torso.yaw) * 5;
|
||||
float cos = MathHelper.cos(torso.yaw) * 5;
|
||||
float sin = MathHelper.sin(body.yaw) * 5;
|
||||
float cos = MathHelper.cos(body.yaw) * 5;
|
||||
|
||||
float spread = attributes.isGoingFast ? 2 : 1;
|
||||
|
||||
|
@ -262,8 +262,8 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
leftArm.pivotX = legRPX;
|
||||
leftLeg.pivotX = legRPX;
|
||||
|
||||
rightArm.yaw += torso.yaw;
|
||||
leftArm.yaw += torso.yaw;
|
||||
rightArm.yaw += body.yaw;
|
||||
leftArm.yaw += body.yaw;
|
||||
|
||||
rightArm.pivotY = leftArm.pivotY = 8;
|
||||
rightLeg.pivotZ = leftLeg.pivotZ = 10;
|
||||
|
@ -380,7 +380,7 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
case NECK: return neck;
|
||||
case TAIL:
|
||||
case LEGS:
|
||||
case BODY: return torso;
|
||||
case BODY: return body;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -514,7 +514,7 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
float deltaAim = deltaZ * (0.7F - head.pitch) * 0.75F;
|
||||
|
||||
arm.pitch -= deltaAim + deltaX * 1.2F;
|
||||
arm.yaw += torso.yaw * 2;
|
||||
arm.yaw += body.yaw * 2;
|
||||
arm.roll = -deltaZ * 0.4F;
|
||||
}
|
||||
|
||||
|
@ -545,9 +545,9 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
}
|
||||
|
||||
protected void adjustBodyComponents(float rotateAngleX, float rotationPointY, float rotationPointZ) {
|
||||
torso.pitch = rotateAngleX;
|
||||
torso.pivotY = rotationPointY;
|
||||
torso.pivotZ = rotationPointZ;
|
||||
body.pitch = rotateAngleX;
|
||||
body.pivotY = rotationPointY;
|
||||
body.pivotZ = rotationPointZ;
|
||||
|
||||
upperTorso.pitch = rotateAngleX;
|
||||
upperTorso.pivotY = rotationPointY;
|
||||
|
@ -596,7 +596,7 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
}
|
||||
|
||||
protected void renderHelmet(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) {
|
||||
helmet.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
hat.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
}
|
||||
|
||||
protected void renderNeck(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) {
|
||||
|
@ -605,9 +605,9 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
}
|
||||
|
||||
protected void renderBody(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) {
|
||||
torso.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
body.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
upperTorso.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
torso.rotate(stack);
|
||||
body.rotate(stack);
|
||||
}
|
||||
|
||||
protected void renderVest(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) {
|
||||
|
@ -617,7 +617,7 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
|
||||
protected void renderLegs(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) {
|
||||
if (!sneaking) {
|
||||
torso.rotate(stack);
|
||||
body.rotate(stack);
|
||||
}
|
||||
|
||||
leftArm.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
|
@ -629,8 +629,8 @@ public abstract class AbstractPonyModel<T extends LivingEntity> extends ClientPo
|
|||
protected void renderSleeves(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) {
|
||||
leftSleeve.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
rightSleeve.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
leftPantLeg.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
rightPantLeg.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
leftPants.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
rightPants.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -10,6 +10,6 @@ public class DJPon3EarsModel extends SkullEntityModel {
|
|||
}
|
||||
|
||||
public void setVisible(boolean show) {
|
||||
skull.visible = show;
|
||||
head.visible = show;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,14 +40,14 @@ public class PonySkullModel extends SkullEntityModel implements MsonModel, ICapi
|
|||
|
||||
@Override
|
||||
public ModelPart getHead() {
|
||||
return skull;
|
||||
return head;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void method_2821(float poweredTicks, float yaw, float pitch) {
|
||||
super.method_2821(poweredTicks, yaw, pitch);
|
||||
hair.yaw = skull.yaw;
|
||||
hair.pitch = skull.pitch;
|
||||
public void setHeadRotation(float poweredTicks, float yaw, float pitch) {
|
||||
super.setHeadRotation(poweredTicks, yaw, pitch);
|
||||
hair.yaw = head.yaw;
|
||||
hair.pitch = head.pitch;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -58,7 +58,7 @@ public class PonySkullModel extends SkullEntityModel implements MsonModel, ICapi
|
|||
snout.setGender(metadata.getGender());
|
||||
|
||||
hair.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
skull.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
head.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
|
||||
if (metadata.hasHorn()) {
|
||||
getHead().rotate(stack);
|
||||
|
|
|
@ -39,7 +39,7 @@ public class PonyArmourModel<T extends LivingEntity> extends AbstractPonyModel<T
|
|||
@Override
|
||||
protected void renderBody(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float limbDistance, float limbAngle, float tickDelta, float alpha) {
|
||||
if (variant == ArmourVariant.LEGACY) {
|
||||
torso.render(stack, vertices, overlayUv, lightUv, limbDistance, limbAngle, tickDelta, alpha);
|
||||
body.render(stack, vertices, overlayUv, lightUv, limbDistance, limbAngle, tickDelta, alpha);
|
||||
upperTorso.render(stack, vertices, overlayUv, lightUv, limbDistance, limbAngle, tickDelta, alpha);
|
||||
} else {
|
||||
chestPiece.render(stack, vertices, overlayUv, lightUv, limbDistance, limbAngle, tickDelta, alpha);
|
||||
|
@ -64,9 +64,9 @@ public class PonyArmourModel<T extends LivingEntity> extends AbstractPonyModel<T
|
|||
@SuppressWarnings("unchecked")
|
||||
BipedEntityModel<T> mainModel = (BipedEntityModel<T>)model;
|
||||
head.copyTransform(mainModel.head);
|
||||
helmet.copyTransform(mainModel.helmet);
|
||||
head.copyTransform(mainModel.head);
|
||||
|
||||
torso.copyTransform(mainModel.torso);
|
||||
body.copyTransform(mainModel.body);
|
||||
rightArm.copyTransform(mainModel.rightArm);
|
||||
leftArm.copyTransform(mainModel.leftArm);
|
||||
rightLeg.copyTransform(mainModel.rightLeg);
|
||||
|
@ -80,7 +80,7 @@ public class PonyArmourModel<T extends LivingEntity> extends AbstractPonyModel<T
|
|||
@Override
|
||||
public void setInVisible() {
|
||||
setVisible(false);
|
||||
torso.visible = true;
|
||||
body.visible = true;
|
||||
chestPiece.visible = false;
|
||||
head.visible = false;
|
||||
neck.visible = false;
|
||||
|
|
|
@ -30,7 +30,7 @@ public class BreezieModel<T extends LivingEntity> extends BipedEntityModel<T> {
|
|||
@Override
|
||||
public void setVisible(boolean visible) {
|
||||
super.setVisible(visible);
|
||||
helmet.visible = false;
|
||||
hat.visible = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -103,21 +103,21 @@ public class BreezieModel<T extends LivingEntity> extends BipedEntityModel<T> {
|
|||
}
|
||||
|
||||
protected void swingArms(Arm mainHand) {
|
||||
torso.yaw = MathHelper.sin(MathHelper.sqrt(handSwingProgress) * PI * 2) / 5;
|
||||
body.yaw = MathHelper.sin(MathHelper.sqrt(handSwingProgress) * PI * 2) / 5;
|
||||
|
||||
if (mainHand == Arm.LEFT) {
|
||||
torso.yaw *= -1;
|
||||
body.yaw *= -1;
|
||||
}
|
||||
|
||||
float sin = MathHelper.sin(torso.yaw) * 5;
|
||||
float cos = MathHelper.cos(torso.yaw) * 5;
|
||||
float sin = MathHelper.sin(body.yaw) * 5;
|
||||
float cos = MathHelper.cos(body.yaw) * 5;
|
||||
|
||||
leftArm.pitch += torso.yaw;
|
||||
leftArm.yaw += torso.yaw;
|
||||
leftArm.pitch += body.yaw;
|
||||
leftArm.yaw += body.yaw;
|
||||
leftArm.pivotX = cos;
|
||||
leftArm.pivotZ = -sin;
|
||||
|
||||
rightArm.yaw += torso.yaw;
|
||||
rightArm.yaw += body.yaw;
|
||||
rightArm.pivotX = -cos;
|
||||
rightArm.pivotZ = sin;
|
||||
|
||||
|
@ -128,7 +128,7 @@ public class BreezieModel<T extends LivingEntity> extends BipedEntityModel<T> {
|
|||
|
||||
ModelPart mainArm = getArm(mainHand);
|
||||
mainArm.pitch -= swingFactorX * 1.2F + swingX;
|
||||
mainArm.yaw += torso.yaw * 2;
|
||||
mainArm.yaw += body.yaw * 2;
|
||||
mainArm.roll -= MathHelper.sin(handSwingProgress * PI) * 0.4F;
|
||||
}
|
||||
|
||||
|
|
|
@ -74,8 +74,8 @@ public class EnderStallionModel extends SkeleponyModel<EndermanEntity> {
|
|||
leftSleeve.visible = false;
|
||||
rightSleeve.visible = false;
|
||||
|
||||
leftPantLeg.visible = false;
|
||||
rightPantLeg.visible = false;
|
||||
leftPants.visible = false;
|
||||
rightPants.visible = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -79,7 +79,7 @@ public class PiglinPonyModel extends ZomponyModel<HostileEntity> {
|
|||
float legBob = MathHelper.sin(speed * 40) * 0.25F;
|
||||
|
||||
neck.pivotY = bodyBob;
|
||||
torso.pivotY = bodyBob;
|
||||
body.pivotY = bodyBob;
|
||||
upperTorso.pivotY = bodyBob;
|
||||
|
||||
leftLeg.pitch += legBob;
|
||||
|
|
|
@ -28,7 +28,7 @@ public class PonyArmourStandModel extends ArmorStandEntityModel {
|
|||
|
||||
public void applyAnglesTo(BipedEntityModel<ArmorStandEntity> dest) {
|
||||
MsonPart.of(dest.head).rotateTo(head);
|
||||
MsonPart.of(dest.helmet).rotateTo(helmet);
|
||||
MsonPart.of(dest.hat).rotateTo(hat);
|
||||
MsonPart.of(dest.leftLeg).rotateTo(leftLeg);
|
||||
MsonPart.of(dest.rightLeg).rotateTo(rightLeg);
|
||||
MsonPart.of(dest.leftArm).rotateTo(leftArm);
|
||||
|
|
|
@ -95,13 +95,13 @@ public class VillagerPonyModel<T extends LivingEntity & VillagerDataContainer> e
|
|||
float roll = 0.3F * MathHelper.sin(0.45F * ticks);
|
||||
|
||||
this.head.roll = roll;
|
||||
this.helmet.roll = roll;
|
||||
this.hat.roll = roll;
|
||||
|
||||
this.head.pitch = 0.4F;
|
||||
this.helmet.pitch = 0.4F;
|
||||
this.hat.pitch = 0.4F;
|
||||
} else {
|
||||
this.head.roll = 0.0F;
|
||||
this.helmet.roll = 0.0F;
|
||||
this.hat.roll = 0.0F;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ public class WitchPonyModel extends ZebraModel<WitchEntity> {
|
|||
}
|
||||
|
||||
head.pitch = -rot / 2;
|
||||
helmet.pitch = -rot / 2;
|
||||
hat.pitch = -rot / 2;
|
||||
} else {
|
||||
rightArm.pivotX = 0;
|
||||
rightSleeve.pivotX = 0;
|
||||
|
|
|
@ -112,9 +112,9 @@ public class SeaponyModel<T extends LivingEntity> extends UnicornModel<T> {
|
|||
|
||||
@Override
|
||||
protected void renderBody(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) {
|
||||
torso.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
body.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
bodyCenter.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
torso.rotate(stack);
|
||||
body.rotate(stack);
|
||||
|
||||
tail.renderPart(stack, vertices, overlayUv, lightUv, red, green, blue, alpha, attributes.interpolatorId);
|
||||
leftFin.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha);
|
||||
|
@ -136,8 +136,8 @@ public class SeaponyModel<T extends LivingEntity> extends UnicornModel<T> {
|
|||
// hide the back legs
|
||||
leftLeg.visible = false;
|
||||
rightLeg.visible = false;
|
||||
leftPantLeg.visible = false;
|
||||
rightPantLeg.visible = false;
|
||||
leftPants.visible = false;
|
||||
rightPants.visible = false;
|
||||
|
||||
bodyCenter.visible = visible;
|
||||
|
||||
|
|
|
@ -58,8 +58,8 @@ public class Pony implements IPony {
|
|||
|
||||
@Override
|
||||
public void updateForEntity(Entity entity) {
|
||||
if (!initialized || entityId != entity.getEntityId()) {
|
||||
entityId = entity.getEntityId();
|
||||
if (!initialized || entityId != entity.getId()) {
|
||||
entityId = entity.getId();
|
||||
initialized = true;
|
||||
entity.calculateDimensions();
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ public abstract class AbstractPonySkull implements ISkull {
|
|||
|
||||
@Override
|
||||
public void setAngles(float angle, float poweredTicks) {
|
||||
ponyHead.method_2821(poweredTicks, angle, 0);
|
||||
ponyHead.setHeadRotation(poweredTicks, angle, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -19,7 +19,7 @@ public class MobSkull extends AbstractPonySkull {
|
|||
|
||||
@Override
|
||||
public boolean canRender(PonyConfig config) {
|
||||
return type.get();
|
||||
return config.ponyskulls.get() && type.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -7,18 +7,14 @@ import com.minelittlepony.client.render.LevitatingItemRenderer;
|
|||
import com.minelittlepony.client.render.MobRenderers;
|
||||
import com.minelittlepony.client.render.entity.SkeleponyRenderer;
|
||||
import com.minelittlepony.client.render.entity.ZomponyRenderer;
|
||||
import com.minelittlepony.mson.api.Mson;
|
||||
import com.minelittlepony.settings.PonyConfig;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
|
||||
import net.minecraft.block.SkullBlock;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.client.render.OverlayTexture;
|
||||
import net.minecraft.client.render.RenderLayer;
|
||||
import net.minecraft.client.render.VertexConsumer;
|
||||
import net.minecraft.client.render.VertexConsumerProvider;
|
||||
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
|
||||
import net.minecraft.client.render.block.entity.SkullBlockEntityRenderer;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.Util;
|
||||
|
@ -30,36 +26,24 @@ import javax.annotation.Nullable;
|
|||
/**
|
||||
* PonySkullRenderer! It renders ponies as skulls, or something...
|
||||
*/
|
||||
public class PonySkullRenderer extends SkullBlockEntityRenderer {
|
||||
public class PonySkullRenderer {
|
||||
|
||||
public static PonySkullRenderer INSTANCE;
|
||||
|
||||
public static void resolve(boolean ponySkulls) {
|
||||
Mson.getInstance().getEntityRendererRegistry().registerBlockRenderer(BlockEntityType.SKULL,
|
||||
ponySkulls ? PonySkullRenderer::new : SkullBlockEntityRenderer::new
|
||||
);
|
||||
}
|
||||
|
||||
private ISkull selectedSkull;
|
||||
private Identifier selectedSkin;
|
||||
|
||||
private final Map<SkullBlock.SkullType, ISkull> skullMap = Util.make(Maps.newHashMap(), (skullMap) -> {
|
||||
private static final Map<SkullBlock.SkullType, ISkull> SKULLS = Util.make(Maps.newHashMap(), (skullMap) -> {
|
||||
skullMap.put(SkullBlock.Type.SKELETON, new MobSkull(SkeleponyRenderer.SKELETON, MobRenderers.SKELETON));
|
||||
skullMap.put(SkullBlock.Type.WITHER_SKELETON, new MobSkull(SkeleponyRenderer.WITHER, MobRenderers.SKELETON));
|
||||
skullMap.put(SkullBlock.Type.ZOMBIE, new MobSkull(ZomponyRenderer.ZOMBIE, MobRenderers.ZOMBIE));
|
||||
skullMap.put(SkullBlock.Type.PLAYER, new PonySkull());
|
||||
});
|
||||
|
||||
public PonySkullRenderer(BlockEntityRendererFactory.Context context) {
|
||||
super(context);
|
||||
INSTANCE = this;
|
||||
}
|
||||
private static ISkull selectedSkull;
|
||||
private static Identifier selectedSkin;
|
||||
|
||||
public RenderLayer getRenderLayer(SkullBlock.SkullType skullType, @Nullable GameProfile profile) {
|
||||
public static RenderLayer getSkullRenderLayer(SkullBlock.SkullType skullType, @Nullable GameProfile profile) {
|
||||
selectedSkull = null;
|
||||
selectedSkin = null;
|
||||
|
||||
ISkull skull = skullMap.get(skullType);
|
||||
ISkull skull = SKULLS.get(skullType);
|
||||
|
||||
if (skull == null || !skull.canRender(MineLittlePony.getInstance().getConfig())) {
|
||||
return null;
|
||||
|
@ -70,7 +54,7 @@ public class PonySkullRenderer extends SkullBlockEntityRenderer {
|
|||
return LevitatingItemRenderer.getRenderLayer(selectedSkin);
|
||||
}
|
||||
|
||||
public boolean renderSkull(@Nullable Direction direction,
|
||||
public static boolean renderSkull(@Nullable Direction direction,
|
||||
float angle, float poweredTicks,
|
||||
MatrixStack stack, VertexConsumerProvider renderContext, RenderLayer layer,
|
||||
int lightUv) {
|
||||
|
@ -83,8 +67,17 @@ public class PonySkullRenderer extends SkullBlockEntityRenderer {
|
|||
|
||||
stack.push();
|
||||
|
||||
handleRotation(stack, direction);
|
||||
if (direction == null) {
|
||||
stack.translate(0.5, 0, 0.5);
|
||||
} else {
|
||||
|
||||
final float offset = 0.25F;
|
||||
stack.translate(
|
||||
0.5F - direction.getOffsetX() * offset,
|
||||
offset,
|
||||
0.5F - direction.getOffsetZ() * offset
|
||||
);
|
||||
}
|
||||
stack.scale(-1, -1, 1);
|
||||
|
||||
VertexConsumer vertices = renderContext.getBuffer(layer);
|
||||
|
@ -97,29 +90,6 @@ public class PonySkullRenderer extends SkullBlockEntityRenderer {
|
|||
return true;
|
||||
}
|
||||
|
||||
static void handleRotation(MatrixStack stack, @Nullable Direction direction) {
|
||||
if (direction == null) {
|
||||
stack.translate(0.5, 0, 0.5);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (direction) {
|
||||
case NORTH:
|
||||
stack.translate(0.5, 0.25, 0.74);
|
||||
break;
|
||||
case SOUTH:
|
||||
stack.translate(0.5, 0.25, 0.26);
|
||||
break;
|
||||
case WEST:
|
||||
stack.translate(0.74, 0.25, 0.5);
|
||||
break;
|
||||
case EAST:
|
||||
default:
|
||||
stack.translate(0.26, 0.25, 0.5);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A skull, just a skull.
|
||||
*
|
||||
|
|
|
@ -106,8 +106,8 @@ public class SkullFeature<T extends LivingEntity, M extends EntityModel<T> & IPo
|
|||
stack.translate(-0.5, 0, -0.5);
|
||||
SkullType type = ((AbstractSkullBlock) ((BlockItem) itemstack.getItem()).getBlock()).getSkullType();
|
||||
SkullBlockEntityModel skullBlockEntityModel = (SkullBlockEntityModel)this.headModels.get(type);
|
||||
RenderLayer renderLayer = SkullBlockEntityRenderer.method_3578(type, profile);
|
||||
RenderLayer renderLayer = SkullBlockEntityRenderer.getRenderLayer(type, profile);
|
||||
|
||||
SkullBlockEntityRenderer.method_32161(null, 180, f, stack, renderContext, lightUv, skullBlockEntityModel, renderLayer);
|
||||
SkullBlockEntityRenderer.renderSkull(null, 180, f, stack, renderContext, lightUv, skullBlockEntityModel, renderLayer);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue