Fixed 3rd person rendering

This commit is contained in:
Hanro50 2025-10-24 22:27:31 +02:00
parent 6f0c20077a
commit 08b2a41043
17 changed files with 113 additions and 166 deletions

View File

@ -39,22 +39,13 @@ import tschipp.carryon.common.scripting.Matchables.NBTCondition;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.Map; import java.util.Map;
public class ModelOverride public class ModelOverride {
{
//public static Codec<ModelOverride> CODEC = Codec.STRING.comapFlatMap(ModelOverride::of, override -> override.raw);
private String raw;
private BlockResult parsedBlock; private BlockResult parsedBlock;
private Type type;
private Either<ItemResult, BlockResult> parsedRHS;
private Either<ItemStack, BlockState> renderObject; private Either<ItemStack, BlockState> renderObject;
private ModelOverride(String raw, BlockResult parsedBlock, Type type, Either<ItemResult, BlockResult> parsedRHS) private ModelOverride(String raw, BlockResult parsedBlock, Type type, Either<ItemResult, BlockResult> parsedRHS)
{ {
this.raw = raw;
this.parsedBlock = parsedBlock; this.parsedBlock = parsedBlock;
this.type = type;
this.parsedRHS = parsedRHS;
parsedRHS.ifLeft(res -> { parsedRHS.ifLeft(res -> {
ItemStack stack = new ItemStack(res.item()); ItemStack stack = new ItemStack(res.item());

View File

@ -35,10 +35,8 @@ import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import org.joml.Matrix4f;
import tschipp.carryon.Constants; import tschipp.carryon.Constants;
import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnData;
import tschipp.carryon.common.carry.CarryOnData.CarryType; import tschipp.carryon.common.carry.CarryOnData.CarryType;
@ -51,8 +49,7 @@ import java.util.*;
public class CarriedObjectRender public class CarriedObjectRender
{ {
public static boolean draw(Player player, PoseStack matrix, int light, float partialTicks,SubmitNodeCollector nodeCollector, boolean firstPerson)
public static boolean drawFirstPerson(Player player, PoseStack matrix, int light, float partialTicks,SubmitNodeCollector nodeCollector)
{ {
if(Services.PLATFORM.isModLoaded("firstperson") || Services.PLATFORM.isModLoaded("firstpersonmod")) if(Services.PLATFORM.isModLoaded("firstperson") || Services.PLATFORM.isModLoaded("firstpersonmod"))
return false; return false;
@ -60,9 +57,9 @@ public class CarriedObjectRender
CarryOnData carry = CarryOnDataManager.getCarryData(player); CarryOnData carry = CarryOnDataManager.getCarryData(player);
try { try {
if (carry.isCarrying(CarryType.BLOCK)) if (carry.isCarrying(CarryType.BLOCK))
drawFirstPersonBlock(player, matrix, light, CarryRenderHelper.getRenderState(player), nodeCollector); drawBlock(player, matrix, light, CarryRenderHelper.getRenderState(player), nodeCollector, firstPerson);
else if (carry.isCarrying(CarryType.ENTITY)) else if (carry.isCarrying(CarryType.ENTITY))
drawFirstPersonEntity(player, matrix, light, partialTicks,nodeCollector); drawEntity(player, matrix, light, partialTicks,nodeCollector, firstPerson);
} }
catch (Exception e) catch (Exception e)
{ {
@ -82,13 +79,18 @@ public class CarriedObjectRender
return carry.isCarrying(); return carry.isCarrying();
} }
private static void drawFirstPersonBlock(Player player, PoseStack matrix, int light, BlockState state,SubmitNodeCollector nodeCollector) private static void drawBlock(Player player, PoseStack matrix, int light, BlockState state,SubmitNodeCollector nodeCollector, boolean firstPerson)
{ {
matrix.pushPose(); matrix.pushPose();
matrix.scale(2.5f, 2.5f, 2.5f); if (firstPerson){
matrix.translate(0, -0.5, -1); matrix.scale(2.5f, 2.5f, 2.5f);
//RenderSystem.enableBlend(); matrix.translate(0, -0.5, -1);
//RenderSystem.disableCull(); }else{
matrix.scale(0.6f, 0.6f, 0.6f);
matrix.translate(0, 0.5, -0.8);
matrix.mulPose(Axis.ZN.rotationDegrees(180));
}
CarryOnData carry = CarryOnDataManager.getCarryData(player); CarryOnData carry = CarryOnDataManager.getCarryData(player);
ItemStackRenderState renderState = new ItemStackRenderState(); ItemStackRenderState renderState = new ItemStackRenderState();
@ -105,20 +107,13 @@ public class CarriedObjectRender
if(carry.getActiveScript().isPresent()) if(carry.getActiveScript().isPresent())
CarryRenderHelper.performScriptTransformation(matrix, carry.getActiveScript().get()); CarryRenderHelper.performScriptTransformation(matrix, carry.getActiveScript().get());
//RenderSystem.setShaderTexture(0, GpuTexture);
ItemStack renderStack = CarryRenderHelper.getRenderItemStack(player); ItemStack renderStack = CarryRenderHelper.getRenderItemStack(player);
Minecraft.getInstance().getItemModelResolver().updateForTopItem(renderState, renderStack, ItemDisplayContext.NONE, player.level(), null, 0); Minecraft.getInstance().getItemModelResolver().updateForTopItem(renderState, renderStack, ItemDisplayContext.NONE, player.level(), null, 0);
//renderState.render(matrix, light, OverlayTexture.NO_OVERLAY); renderState.submit(matrix, nodeCollector, light, OverlayTexture.NO_OVERLAY, 0);
renderState.submit(matrix, nodeCollector, light, OverlayTexture.NO_OVERLAY, 0);
//RenderSystem.enableCull();
//RenderSystem.disableBlend();
matrix.popPose(); matrix.popPose();
} }
private static void drawFirstPersonEntity(Player player, PoseStack matrix, int light, float partialTicks,SubmitNodeCollector nodeCollector) { private static void drawEntity(Player player, PoseStack matrix, int light, float partialTicks,SubmitNodeCollector nodeCollector, boolean firstPerson) {
EntityRenderDispatcher manager = Minecraft.getInstance().getEntityRenderDispatcher(); EntityRenderDispatcher manager = Minecraft.getInstance().getEntityRenderDispatcher();
@ -136,13 +131,17 @@ renderState.submit(matrix, nodeCollector, light, OverlayTexture.NO_OVERLAY, 0);
float height = entity.getBbHeight(); float height = entity.getBbHeight();
float width = entity.getBbWidth(); float width = entity.getBbWidth();
matrix.pushPose();
matrix.pushPose(); matrix.mulPose(Axis.YP.rotationDegrees(180));
matrix.scale(0.8f, 0.8f, 0.8f); if (firstPerson){
matrix.mulPose(Axis.YP.rotationDegrees(180)); matrix.scale(0.8f, 0.8f, 0.8f);
matrix.translate(0.0, -height - .2, width * 1.3 + 0.1); matrix.translate(0.0, -height - .2, width * 1.3 + 0.1);
}else{
// manager.setRenderShadow(false); float multiplier = Math.min(9.9f, height * width) ;
matrix.scale((10 - multiplier) * 0.08f, (10 - multiplier) * 0.08f, (10 - multiplier) * 0.08f);
matrix.translate(0.0, height / 2 + -(height / 4) + 0.5f, width - 0.1 < 0.7 ? width - 0.1 + (0.7 - (width - 0.1)) : width - 0.1);
matrix.mulPose(Axis.ZN.rotationDegrees(180));
}
Optional<CarryOnScript> res = carry.getActiveScript(); Optional<CarryOnScript> res = carry.getActiveScript();
if(res.isPresent()) if(res.isPresent())
@ -158,111 +157,13 @@ renderState.submit(matrix, nodeCollector, light, OverlayTexture.NO_OVERLAY, 0);
((LivingEntity) entity).hurtTime = 0; ((LivingEntity) entity).hurtTime = 0;
try { try {
manager.submit(manager.extractEntity(entity, 0), new CameraRenderState(), 0, 0, 0, matrix, nodeCollector); manager.submit(manager.extractEntity(entity, 0), new CameraRenderState(), 0, 0, 0, matrix, nodeCollector);
// manager.render(entity, 0, 0, 0, 0f, matrix, buffer, light);
//nodeCollector.submit
//manager.getRenderer(entity).submit(new EntityRenderState(), matrix, nodeCollector, null);
} }
catch (Exception e) catch (Exception e)
{ {
} }
// manager.setRenderShadow(true);
matrix.popPose(); matrix.popPose();
} }
// RenderSystem.disableAlphaTest();
} }
/**
* Draws the third person view of entities and blocks
* @param partialticks
* @param mat
*/
public static void drawThirdPerson(float partialticks, Matrix4f mat) {
Minecraft mc = Minecraft.getInstance();
Level level = mc.level;
int perspective = CarryRenderHelper.getPerspective();
PoseStack matrix = new PoseStack();
matrix.mulPose(mat);
// RenderSystem.enableBlend();
// RenderSystem.disableCull();
// RenderSystem.disableDepthTest();
ItemStackRenderState renderState = new ItemStackRenderState();
var layer = renderState.newLayer();
layer.setRenderType(RenderType.glint());
for (Player player : level.players())
{
try {
CarryOnData carry = CarryOnDataManager.getCarryData(player);
if (perspective == 0 && player == mc.player && !(Services.PLATFORM.isModLoaded("firstperson") || Services.PLATFORM.isModLoaded("firstpersonmod") || Services.PLATFORM.isModLoaded("realcamera")))
continue;
if (carry.isCarrying(CarryType.BLOCK)) {
BlockState state = CarryRenderHelper.getRenderState(player);
CarryRenderHelper.applyBlockTransformations(player, partialticks, matrix, state.getBlock());
ItemStack renderItemStack = CarryRenderHelper.getRenderItemStack(player);
mc.getItemModelResolver().updateForTopItem(renderState, renderItemStack, ItemDisplayContext.NONE, level, null, 0);
Optional<CarryOnScript> res = carry.getActiveScript();
res.ifPresent(script -> CarryRenderHelper.performScriptTransformation(matrix, script));
//RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS);
//RenderSystem.enableCull();
PoseStack.Pose p = matrix.last();
PoseStack copy = new PoseStack();
copy.mulPose(p.pose());
matrix.popPose();
//RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
renderState.submit(copy, null, 0, OverlayTexture.NO_OVERLAY, 0);
// renderState.render(copy, buffer, light, OverlayTexture.NO_OVERLAY);
matrix.popPose();
} else if (carry.isCarrying(CarryType.ENTITY)) {
Entity entity = CarryRenderHelper.getRenderEntity(player);
if (entity != null) {
CarryRenderHelper.applyEntityTransformations(player, partialticks, matrix, entity);
// manager.setRenderShadow(false);
Optional<CarryOnScript> res = carry.getActiveScript();
res.ifPresent(script -> CarryRenderHelper.performScriptTransformation(matrix, script));
if (entity instanceof LivingEntity le)
le.hurtTime = 0;
//RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
// manager.render(entity, 0, 0, 0, 0f, matrix, buffer, light);
matrix.popPose();
// manager.setRenderShadow(true);
matrix.popPose();
}
}
}
catch (Exception e)
{
}
}
}
} }

View File

@ -156,7 +156,7 @@ public class CarryRenderHelper
public static void applyBlockTransformations(Player player, float partialticks, PoseStack matrix, Block block) public static void applyBlockTransformations(Player player, float partialticks, PoseStack matrix, Block block)
{ {
int perspective = CarryRenderHelper.getPerspective(); //int perspective = CarryRenderHelper.getPerspective();
applyGeneralTransformations(player, partialticks, matrix); applyGeneralTransformations(player, partialticks, matrix);

View File

@ -0,0 +1,22 @@
package tschipp.carryon.client.render;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.model.PlayerModel;
import net.minecraft.client.renderer.SubmitNodeCollector;
import net.minecraft.client.renderer.entity.RenderLayerParent;
import net.minecraft.client.renderer.entity.layers.RenderLayer;
import net.minecraft.client.renderer.entity.state.AvatarRenderState;
public class CarryingItemRenderLayer<M extends PlayerModel> extends RenderLayer<AvatarRenderState, M> {
public CarryingItemRenderLayer(RenderLayerParent<AvatarRenderState, M> renderer) {
super(renderer);
}
@Override
public void submit(PoseStack poseStack, SubmitNodeCollector nodeCollector, int packedLight,
AvatarRenderState renderState, float yRot, float xRot) {
if (renderState instanceof ICarryOnRenderState carryOnRenderState){
CarriedObjectRender.draw(carryOnRenderState.getPlayer(), poseStack, packedLight, 0, nodeCollector,false);
}
}
}

View File

@ -1,5 +1,6 @@
package tschipp.carryon.client.render; package tschipp.carryon.client.render;
import net.minecraft.world.entity.player.Player;
import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnData;
public interface ICarryOnRenderState { public interface ICarryOnRenderState {
@ -12,4 +13,8 @@ public interface ICarryOnRenderState {
void setRenderWidth(float val); void setRenderWidth(float val);
Player getPlayer();
void setPlayer(Player player);
} }

View File

@ -4,13 +4,11 @@ import me.shedaniel.clothconfig2.api.ConfigBuilder;
import me.shedaniel.clothconfig2.api.ConfigCategory; import me.shedaniel.clothconfig2.api.ConfigCategory;
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder; import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
import me.shedaniel.clothconfig2.impl.builders.SubCategoryBuilder; import me.shedaniel.clothconfig2.impl.builders.SubCategoryBuilder;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import tschipp.carryon.config.AnnotationData; import tschipp.carryon.config.AnnotationData;
import tschipp.carryon.config.BuiltCategory; import tschipp.carryon.config.BuiltCategory;
import tschipp.carryon.config.BuiltConfig; import tschipp.carryon.config.BuiltConfig;
import tschipp.carryon.config.ConfigLoader;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List; import java.util.List;

View File

@ -0,0 +1,30 @@
package tschipp.carryon.mixin;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import net.minecraft.client.entity.ClientAvatarEntity;
import net.minecraft.client.model.PlayerModel;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.EntityRendererProvider.Context;
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
import net.minecraft.client.renderer.entity.player.AvatarRenderer;
import net.minecraft.client.renderer.entity.state.AvatarRenderState;
import net.minecraft.world.entity.Avatar;
import tschipp.carryon.client.render.CarryingItemRenderLayer;
@Mixin(AvatarRenderer.class)
public abstract class AvatarRendererMixin<AvatarlikeEntity extends Avatar & ClientAvatarEntity> extends LivingEntityRenderer<AvatarlikeEntity, AvatarRenderState, PlayerModel> {
public AvatarRendererMixin(Context context, PlayerModel model, float shadowRadius) {
super(context, model, shadowRadius);
}
@Inject(method = "<init>(Lnet/minecraft/client/renderer/entity/EntityRendererProvider$Context;Z)V", at = @At("RETURN"))
public void init(EntityRendererProvider.Context context, boolean slim, CallbackInfo info) {
//Player
this.addLayer(new CarryingItemRenderLayer<PlayerModel>(this));
}
}

View File

@ -95,7 +95,7 @@ public abstract class EntityMixin
@Inject(method = "onPassengerTurned(Lnet/minecraft/world/entity/Entity;)V", at = @At("HEAD")) @Inject(method = "onPassengerTurned(Lnet/minecraft/world/entity/Entity;)V", at = @At("HEAD"))
private void onPassengerTurned(Entity toUpdate, CallbackInfo ci) private void onPassengerTurned(Entity toUpdate, CallbackInfo ci)
{ {
if((Object)this instanceof Player thisPlayer && toUpdate instanceof Player otherPlayer) if((Object)this instanceof Player thisPlayer && toUpdate instanceof Player)
{ {
CarryOnData carry = CarryOnDataManager.getCarryData(thisPlayer); CarryOnData carry = CarryOnDataManager.getCarryData(thisPlayer);
if(carry.isCarrying(CarryType.PLAYER)) { if(carry.isCarrying(CarryType.PLAYER)) {

View File

@ -30,6 +30,8 @@ public class EntityRendererMixin {
ICarryOnRenderState carryOnRenderState = (ICarryOnRenderState) state; ICarryOnRenderState carryOnRenderState = (ICarryOnRenderState) state;
carryOnRenderState.setCarryOnData(carry); carryOnRenderState.setCarryOnData(carry);
carryOnRenderState.setRenderWidth(CarryRenderHelper.getRenderWidth(player)); carryOnRenderState.setRenderWidth(CarryRenderHelper.getRenderWidth(player));
carryOnRenderState.setPlayer(player);
} }
} }
} }

View File

@ -20,8 +20,6 @@
package tschipp.carryon.mixin; package tschipp.carryon.mixin;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.effect.MobEffects; import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
@ -30,13 +28,11 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.storage.ValueInput; import net.minecraft.world.level.storage.ValueInput;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnData;
import tschipp.carryon.common.carry.CarryOnDataManager; import tschipp.carryon.common.carry.CarryOnDataManager;
import tschipp.carryon.common.carry.PlacementHandler;
import tschipp.carryon.common.carry.CarryOnData.CarryType; import tschipp.carryon.common.carry.CarryOnData.CarryType;
import java.util.Optional; import java.util.Optional;

View File

@ -1,6 +1,8 @@
package tschipp.carryon.mixin; package tschipp.carryon.mixin;
import net.minecraft.client.renderer.entity.state.HumanoidRenderState; import net.minecraft.client.renderer.entity.state.HumanoidRenderState;
import net.minecraft.world.entity.player.Player;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.Unique;
import tschipp.carryon.client.render.ICarryOnRenderState; import tschipp.carryon.client.render.ICarryOnRenderState;
@ -15,6 +17,10 @@ public class PlayerRenderStateMixin implements ICarryOnRenderState {
@Unique @Unique
public float renderWidth = 0f; public float renderWidth = 0f;
@Unique
public Player player = null;
@Unique @Unique
@Override @Override
public CarryOnData getCarryOnData() { public CarryOnData getCarryOnData() {
@ -38,4 +44,14 @@ public class PlayerRenderStateMixin implements ICarryOnRenderState {
public void setRenderWidth(float val) { public void setRenderWidth(float val) {
renderWidth = val; renderWidth = val;
} }
@Override
public Player getPlayer() {
return player;
}
@Override
public void setPlayer(Player player) {
this.player = player;
}
} }

View File

@ -12,7 +12,8 @@
"HumanoidModelMixin", "HumanoidModelMixin",
"MinecraftMixin", "MinecraftMixin",
"PlayerRenderStateMixin", "PlayerRenderStateMixin",
"EntityRendererMixin" "EntityRendererMixin",
"AvatarRendererMixin"
], ],
"server": [ "server": [
], ],

View File

@ -37,14 +37,15 @@ public class CarryOnFabricMod implements ModInitializer {
ResourceLocation.fromNamespaceAndPath(Constants.MOD_ID, "carry_on_data"), ResourceLocation.fromNamespaceAndPath(Constants.MOD_ID, "carry_on_data"),
builder -> builder builder -> builder
.initializer(() -> new CarryOnData(new CompoundTag())) .initializer(() -> new CarryOnData(new CompoundTag()))
.persistent(CarryOnData.CODEC)
.syncWith(CarryOnData.STREAM_CODEC, (t, p) ->{ .syncWith(CarryOnData.STREAM_CODEC, (t, p) ->{
ServerPlayer player = (ServerPlayer) t; ServerPlayer player = (ServerPlayer) t;
// the isAlive check avoids us syncing attachment data about dead players. Which causes a disconnect // the isAlive check avoids us syncing attachment data about dead players. Which causes a disconnect
// player.tickCount > 0 avoids us syncing attachment data about players the instant they spawn. // player.tickCount > 0 avoids us syncing attachment data about players the instant they spawn.
// Which also causes a disconnect as the player entity may not be synced yet. // Which also causes a disconnect as the player entity may not be synced yet.
return p.connection != null && player.isAlive() && player.tickCount > 0; return p.connection != null && player.isAlive() && player.tickCount > 0;
}) })
); );

View File

@ -38,7 +38,7 @@ public class ItemInHandRendererMixin
@Inject(at = @At(value = "HEAD"), method = "renderArmWithItem(Lnet/minecraft/client/player/AbstractClientPlayer;FFLnet/minecraft/world/InteractionHand;FLnet/minecraft/world/item/ItemStack;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;I)V", cancellable = true) @Inject(at = @At(value = "HEAD"), method = "renderArmWithItem(Lnet/minecraft/client/player/AbstractClientPlayer;FFLnet/minecraft/world/InteractionHand;FLnet/minecraft/world/item/ItemStack;FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;I)V", cancellable = true)
private void renderArmWithItem(AbstractClientPlayer player, float partialTick, float pitch, InteractionHand hand, float swingProgress, ItemStack item, float equippedProgress, PoseStack poseStack, SubmitNodeCollector nodeCollector, int packedLight, CallbackInfo ci) private void renderArmWithItem(AbstractClientPlayer player, float partialTick, float pitch, InteractionHand hand, float swingProgress, ItemStack item, float equippedProgress, PoseStack poseStack, SubmitNodeCollector nodeCollector, int packedLight, CallbackInfo ci)
{ {
if(CarriedObjectRender.drawFirstPerson(player, poseStack, packedLight, partialTick,nodeCollector)) if(CarriedObjectRender.draw(player, poseStack, packedLight, partialTick,nodeCollector,true))
ci.cancel(); ci.cancel();
} }

View File

@ -2,7 +2,6 @@ package tschipp.carryon.carry;
import net.minecraftforge.common.capabilities.AutoRegisterCapability; import net.minecraftforge.common.capabilities.AutoRegisterCapability;
import tschipp.carryon.common.carry.CarryOnData; import tschipp.carryon.common.carry.CarryOnData;
import tschipp.carryon.common.carry.CarryOnDataManager;
@AutoRegisterCapability @AutoRegisterCapability
public interface ICarryOnDataCapability { public interface ICarryOnDataCapability {

View File

@ -50,18 +50,9 @@ public class ClientEvents {
float partialTicks = event.getPartialTick(); float partialTicks = event.getPartialTick();
SubmitNodeCollector nodes =event.getNodeCollector(); SubmitNodeCollector nodes =event.getNodeCollector();
//If true, cancels event //If true, cancels event
return CarriedObjectRender.drawFirstPerson(player, matrix, light, partialTicks,nodes) && CarryRenderHelper.getPerspective() == 0; return CarriedObjectRender.draw(player, matrix, light, partialTicks,nodes,true) && CarryRenderHelper.getPerspective() == 0;
} }
/*
@SubscribeEvent
public static void onRenderLevel(Render event)
{
if(event.getStage() == Stage.AFTER_PARTICLES)
CarriedObjectRender.drawThirdPerson(Minecraft.getInstance().getTimer().getGameTimeDeltaPartialTick(true), event.getPoseStack());
}
*/
@SubscribeEvent @SubscribeEvent
public static boolean onGuiInit(ScreenEvent.Init.Pre event) public static boolean onGuiInit(ScreenEvent.Init.Pre event)
{ {

View File

@ -49,18 +49,12 @@ public class ClientEvents {
PoseStack matrix = event.getPoseStack(); PoseStack matrix = event.getPoseStack();
int light = event.getPackedLight(); int light = event.getPackedLight();
float partialTicks = event.getPartialTick(); float partialTicks = event.getPartialTick();
SubmitNodeCollector nodes =event.getSubmitNodeCollector(); SubmitNodeCollector nodes =event.getSubmitNodeCollector();
if(CarriedObjectRender.drawFirstPerson(player, matrix, light, partialTicks,nodes) && CarryRenderHelper.getPerspective() == 0) if(CarriedObjectRender.draw(player, matrix, light, partialTicks,nodes,true) && CarryRenderHelper.getPerspective() == 0)
event.setCanceled(true); event.setCanceled(true);
} }
@SubscribeEvent
public static void onRenderLevel(RenderLevelStageEvent.AfterEntities event)
{
CarriedObjectRender.drawThirdPerson(event.getLevelRenderer().getTicks(), event.getPoseStack().last().pose());
}
@SubscribeEvent @SubscribeEvent
public static void onGuiInit(ScreenEvent.Init.Pre event) public static void onGuiInit(ScreenEvent.Init.Pre event)
{ {