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