2024/10/28
Fix some BUG
This commit is contained in:
parent
ea2e64ac00
commit
a990abad34
|
|
@ -1,4 +1,4 @@
|
|||
# 版本 0.0.3.9.4 提前介绍c[最终版本对于0.0.4] 【注意:本解釋簡繁混寫,因爲趕時間,所以並不怎麽規範,請諒解】
|
||||
# 版本 1.21.3 0.0.3.9.4 提前介绍c[最终版本对于0.0.4] 【注意:本解釋簡繁混寫,因爲趕時間,所以並不怎麽規範,請諒解】
|
||||
## 简介
|
||||
现在开始你可以用拴绳拴住玩家,也可以拴住自己了,不如尝试拴住彼此来通关我的世界吧(
|
||||
|
||||
|
|
@ -54,6 +54,7 @@
|
|||
|
||||
* `LP.DisableMoveCheck` - 此规则启用将会禁止服务器对玩家进行速度过快修正 [默认值: True]
|
||||
|
||||
|
||||
Please use a paste site for large blocks of code/logs, instead of dumping it in chat or taking a screenshot.
|
||||
|
||||
Here's a list of some paste sites and their size limits:
|
||||
|
|
|
|||
2
gradle/gradle-daemon-jvm.properties
Normal file
2
gradle/gradle-daemon-jvm.properties
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#This file is generated by updateDaemonJvm
|
||||
toolchainVersion=21
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
// 1.21.3 2024-10-28T12:36:36.0959778 LeashedPlayer Recipes
|
||||
1b45d1ad8dc73f1787c97777ad13d9771c9e0ad1 data/leashedplayer/advancement/recipes/misc/leash_rope_arrow.json
|
||||
a26d63c2360b32df0b636a5dec96dd919139e022 data/leashedplayer/advancement/recipes/misc/spectral_leash_rope_arrow.json
|
||||
db45be6e2bbddc49e60a6c1b12e2ef44afad30d8 data/leashedplayer/recipe/leash_rope_arrow.json
|
||||
db37bd69a700eaae69bff48c77ed49ca55fb9bf1 data/leashedplayer/recipe/spectral_leash_rope_arrow.json
|
||||
935d8732ca65dd73e4668a197cda60480053fbcd data/minecraft/advancement/recipes/misc/leash_rope_arrow_shape.json
|
||||
5811048f18527a45b36b8b927de4e5d7c12a75eb data/minecraft/recipe/leash_rope_arrow_shape.json
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_lead": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "minecraft:lead"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
},
|
||||
"has_spectral_arrow": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "minecraft:spectral_arrow"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"conditions": {
|
||||
"recipe": "leashedplayer:spectral_leash_rope_arrow"
|
||||
},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_the_recipe",
|
||||
"has_lead",
|
||||
"has_spectral_arrow"
|
||||
]
|
||||
],
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"leashedplayer:spectral_leash_rope_arrow"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shapeless",
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
"minecraft:lead",
|
||||
"minecraft:spectral_arrow"
|
||||
],
|
||||
"result": {
|
||||
"count": 1,
|
||||
"id": "leashedplayer:spectral_leash_rope_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_glowstone_dust": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "minecraft:glowstone_dust"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
},
|
||||
"has_lead": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "minecraft:lead"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"conditions": {
|
||||
"recipe": "minecraft:leash_rope_arrow_shape"
|
||||
},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_the_recipe",
|
||||
"has_lead",
|
||||
"has_glowstone_dust"
|
||||
]
|
||||
],
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"minecraft:leash_rope_arrow_shape"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"category": "misc",
|
||||
"key": {
|
||||
"#": "leashedplayer:leash_rope_arrow",
|
||||
"$": "minecraft:glowstone_dust"
|
||||
},
|
||||
"pattern": [
|
||||
" $ ",
|
||||
"$#$",
|
||||
" $ "
|
||||
],
|
||||
"result": {
|
||||
"count": 1,
|
||||
"id": "leashedplayer:spectral_leash_rope_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package com.r3944realms.leashedplayer;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.r3944realms.leashedplayer.client.renders.LeashRendererUtil;
|
||||
import com.r3944realms.leashedplayer.client.renders.entities.LeashRopeArrowRenderer;
|
||||
import com.r3944realms.leashedplayer.client.renders.entities.SpectralLeashRopeArrowRenderer;
|
||||
|
|
@ -19,7 +18,7 @@ import net.neoforged.bus.api.SubscribeEvent;
|
|||
import net.neoforged.fml.common.EventBusSubscriber;
|
||||
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
import net.neoforged.neoforge.client.event.EntityRenderersEvent;
|
||||
import net.neoforged.neoforge.client.event.RenderLevelStageEvent;
|
||||
import net.neoforged.neoforge.client.event.RenderLivingEvent;
|
||||
import net.neoforged.neoforge.client.event.RenderPlayerEvent;
|
||||
|
||||
|
||||
|
|
@ -27,7 +26,7 @@ public class ClientEventHandler {
|
|||
@EventBusSubscriber(value = Dist.CLIENT, bus = EventBusSubscriber.Bus.GAME, modid = LeashedPlayer.MOD_ID)
|
||||
public static class Game {
|
||||
@SubscribeEvent
|
||||
public static void onPlayerRendererEventPre(RenderPlayerEvent.Pre event) {
|
||||
public static void onPlayerRendererEventPre(RenderPlayerEvent.Post event) {
|
||||
PlayerRenderState renderState = event.getRenderState();
|
||||
if(((IPlayerRenderStateExtension)renderState).getPlayerLeashState() != null) {
|
||||
LeashRendererUtil.renderLeash(event.getPoseStack(), event.getMultiBufferSource(), renderState);
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.r3944realms.leashedplayer.modInterface.ILivingEntityExtension;
|
|||
import com.r3944realms.leashedplayer.modInterface.IPlayerRenderStateExtension;
|
||||
import com.r3944realms.leashedplayer.modInterface.IPlayerRendererExtension;
|
||||
import com.r3944realms.leashedplayer.modInterface.PlayerLeashable;
|
||||
import com.r3944realms.leashedplayer.utils.Logger;
|
||||
import net.minecraft.client.Camera;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
|
|
@ -26,7 +27,6 @@ import net.minecraft.world.entity.decoration.LeashFenceKnotEntity;
|
|||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.entity.vehicle.AbstractMinecart;
|
||||
import net.minecraft.world.entity.vehicle.NewMinecartBehavior;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LightLayer;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
|
|
@ -116,13 +116,14 @@ public class LeashRendererUtil {
|
|||
PlayerLeashState leashState = ((IPlayerRenderStateExtension)playerRenderState).getPlayerLeashState();
|
||||
if (leashState == null)
|
||||
return;
|
||||
Vec3 Holder = leashState.pos;
|
||||
Vec3 Holder = leashState.pos;//TODO:问题修复
|
||||
Vec3 o = leashState.o;
|
||||
// 计算实体的朝向角度(弧度)
|
||||
float partialTick = playerRenderState.partialTick;
|
||||
double entityRotationAngleRadians = (double)(leashState.getPreciseBodyRotation(partialTick) * (float) (Math.PI / 180.0)) + (Math.PI / 2);
|
||||
// 计算实体的绳索偏移,此处add偏移让渲染拴绳显示在玩家头部下(大约在脖子处
|
||||
Vec3 cameraEntityLeashOffset = new Vec3(0.0, playerRenderState.eyeHeight , playerRenderState.boundingBoxWidth * 0.4F).add(0, 0, -0.2);
|
||||
// Logger.logger.info("eyeHeight:{}",playerRenderState.eyeHeight);
|
||||
Vec3 cameraEntityLeashOffset = new Vec3(0.0, leashState.eyeHeight , playerRenderState.boundingBoxWidth * 0.4F).add(0, -0.2, -0.2);
|
||||
double leashOffsetX = Math.cos(entityRotationAngleRadians) * cameraEntityLeashOffset.z + Math.sin(entityRotationAngleRadians) * cameraEntityLeashOffset.x;
|
||||
double leashOffsetZ = Math.sin(entityRotationAngleRadians) * cameraEntityLeashOffset.z - Math.cos(entityRotationAngleRadians) * cameraEntityLeashOffset.x;
|
||||
// 计算实体当前的实际位置
|
||||
|
|
@ -140,7 +141,7 @@ public class LeashRendererUtil {
|
|||
float leashXZScaleX = deltaZ * leashLengthRatio;
|
||||
float leashXZScaleZ = deltaX * leashLengthRatio;
|
||||
poseStack.pushPose();
|
||||
poseStack.translate(leashState.offset);
|
||||
poseStack.translate(leashOffsetX, cameraEntityLeashOffset.y,leashOffsetZ);
|
||||
VertexConsumer vertexconsumer = bufferSource.getBuffer(RenderType.leash());
|
||||
Matrix4f matrix4f = poseStack.last().pose();
|
||||
|
||||
|
|
@ -228,7 +229,7 @@ public class LeashRendererUtil {
|
|||
) {
|
||||
|
||||
poseStack.pushPose();
|
||||
|
||||
// Logger.logger.info("eyeHeight{}", camera.getEntity().getEyeHeight());
|
||||
// 获得绳索持有者的位置
|
||||
Vec3 leashHolderPosition = leashHolder.getRopeHoldPosition(partialTick).add(holderOffset);
|
||||
|
||||
|
|
@ -268,7 +269,7 @@ public class LeashRendererUtil {
|
|||
// 获取光照信息
|
||||
BlockPos cameraEntityBlockPos = BlockPos.containing(cameraEntity.getEyePosition(partialTick));
|
||||
BlockPos leashHolderBlockPos = BlockPos.containing(leashHolder.getEyePosition(partialTick));
|
||||
int cameraEntityBlockLightLevel = 15;
|
||||
int cameraEntityBlockLightLevel = 0;
|
||||
int leashHolderBlockLightLevel = 0; //getBlockLightLevel(leashHolder, leashHolderBlockPos);
|
||||
int cameraEntitySkyLightLevel = cameraEntity.level().getBrightness(LightLayer.SKY, cameraEntityBlockPos);
|
||||
int leashHolderSkyLightLevel = cameraEntity.level().getBrightness(LightLayer.SKY, leashHolderBlockPos);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import net.minecraft.world.phys.Vec3;
|
|||
public class PlayerLeashState {
|
||||
public Vec3 o, pos, offset;
|
||||
public float yRotO, yRot;
|
||||
public float eyeHeight;
|
||||
public int startBlockLight;
|
||||
public int endBlockLight;
|
||||
public int startSkyLight;
|
||||
|
|
@ -22,6 +23,7 @@ public class PlayerLeashState {
|
|||
this.pos = Vec3.ZERO;
|
||||
this.yRot = 0.0f;
|
||||
this.yRotO = 0.0f;
|
||||
this.eyeHeight = 0.0f;
|
||||
this.startBlockLight = 0;
|
||||
this.endBlockLight = 0;
|
||||
this.startSkyLight = 15;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import com.r3944realms.leashedplayer.LeashedPlayer;
|
|||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.entity.decoration.PaintingVariant;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.alchemy.Potion;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
package com.r3944realms.leashedplayer.datagen.provider;
|
||||
|
||||
import com.r3944realms.leashedplayer.content.items.ModItemRegister;
|
||||
import net.minecraft.core.HolderGetter;
|
||||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.data.PackOutput;
|
||||
import net.minecraft.data.recipes.*;
|
||||
import net.minecraft.data.recipes.packs.VanillaRecipeProvider;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.data.recipes.RecipeCategory;
|
||||
import net.minecraft.data.recipes.RecipeOutput;
|
||||
import net.minecraft.data.recipes.RecipeProvider;
|
||||
import net.minecraft.world.item.Items;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
|
|
@ -38,7 +37,7 @@ public class ModRecipeProvider extends RecipeProvider {
|
|||
.define('$', Items.GLOWSTONE_DUST)
|
||||
.unlockedBy("has_lead",has(Items.LEAD))
|
||||
.unlockedBy("has_glowstone_dust",has(Items.GLOWSTONE_DUST))
|
||||
.save(this.output,"2");
|
||||
.save(this.output,"leash_rope_arrow_shape");
|
||||
}
|
||||
public static class Runner extends RecipeProvider.Runner {
|
||||
|
||||
|
|
|
|||
|
|
@ -2,27 +2,11 @@ package com.r3944realms.leashedplayer.mixin.client;
|
|||
|
||||
import com.mojang.blaze3d.resource.GraphicsResourceAllocator;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.datafixers.util.Either;
|
||||
import com.r3944realms.leashedplayer.LeashedPlayer;
|
||||
import com.r3944realms.leashedplayer.content.entities.LeashRopeArrow;
|
||||
import com.r3944realms.leashedplayer.modInterface.ILivingEntityExtension;
|
||||
import com.r3944realms.leashedplayer.modInterface.IPlayerRendererExtension;
|
||||
import com.r3944realms.leashedplayer.modInterface.PlayerLeashable;
|
||||
import com.r3944realms.leashedplayer.client.renders.LeashRendererUtil;
|
||||
import net.minecraft.client.Camera;
|
||||
import net.minecraft.client.DeltaTracker;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
import net.minecraft.client.player.AbstractClientPlayer;
|
||||
import net.minecraft.client.renderer.*;
|
||||
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.Leashable;
|
||||
import net.minecraft.world.entity.decoration.LeashFenceKnotEntity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import org.joml.Matrix4f;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
|
@ -32,10 +16,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
|||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static com.r3944realms.leashedplayer.client.renders.LeashRendererUtil.levelRenderLeash;
|
||||
|
||||
@Mixin(LevelRenderer.class)
|
||||
public abstract class MixinLevelRenderer {
|
||||
|
|
@ -43,11 +24,6 @@ public abstract class MixinLevelRenderer {
|
|||
@Nullable
|
||||
private ClientLevel level;
|
||||
|
||||
@Shadow protected abstract void renderEntity(Entity pEntity, double pCamX, double pCamY, double pCamZ, float pPartialTick, PoseStack pPoseStack, MultiBufferSource pBufferSource);
|
||||
|
||||
@Shadow @Final
|
||||
private Minecraft minecraft;
|
||||
|
||||
@Shadow @Final private RenderBuffers renderBuffers;
|
||||
|
||||
@Inject(
|
||||
|
|
@ -58,7 +34,7 @@ public abstract class MixinLevelRenderer {
|
|||
assert this.level != null;
|
||||
PoseStack poseStack = new PoseStack();
|
||||
MultiBufferSource.BufferSource multibuffersource$buffersource = this.renderBuffers.bufferSource();
|
||||
levelRenderLeash(level, pCamera, poseStack, multibuffersource$buffersource);
|
||||
LeashRendererUtil.levelRenderLeash(level, pCamera, poseStack, multibuffersource$buffersource);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.r3944realms.leashedplayer.mixin.client;
|
|||
|
||||
import com.r3944realms.leashedplayer.client.renders.PlayerLeashState;
|
||||
import com.r3944realms.leashedplayer.modInterface.IPlayerRenderStateExtension;
|
||||
import com.r3944realms.leashedplayer.modInterface.PlayerLeashable;
|
||||
import net.minecraft.client.renderer.entity.state.PlayerRenderState;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
package com.r3944realms.leashedplayer.mixin.client;
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import com.mojang.datafixers.util.Either;
|
||||
import com.r3944realms.leashedplayer.LeashedPlayer;
|
||||
import com.r3944realms.leashedplayer.client.renders.PlayerLeashState;
|
||||
|
|
@ -10,30 +8,21 @@ import com.r3944realms.leashedplayer.modInterface.ILivingEntityExtension;
|
|||
import com.r3944realms.leashedplayer.modInterface.IPlayerRenderStateExtension;
|
||||
import com.r3944realms.leashedplayer.modInterface.IPlayerRendererExtension;
|
||||
import com.r3944realms.leashedplayer.modInterface.PlayerLeashable;
|
||||
import net.minecraft.client.Camera;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.PlayerModel;
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
import net.minecraft.client.player.AbstractClientPlayer;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
||||
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
|
||||
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
|
||||
import net.minecraft.client.renderer.entity.state.EntityRenderState;
|
||||
import net.minecraft.client.renderer.entity.state.PlayerRenderState;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.Leashable;
|
||||
import net.minecraft.world.entity.decoration.LeashFenceKnotEntity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.LightLayer;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import org.joml.Matrix4f;
|
||||
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.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
|
@ -58,24 +47,24 @@ public abstract class MixinPlayerRenderer extends LivingEntityRenderer<AbstractC
|
|||
ClientLevel level = mc.level;
|
||||
if (delayedLeashInfo.right().isPresent() && delayedLeashInfo.left().isEmpty()) {
|
||||
assert level != null;
|
||||
playerLeashState.pos = delayedLeashInfo.right().get().getCenter().add(0.0, abstractClientPlayer.getEyeHeight() *0.7, 0);
|
||||
playerLeashState.pos = delayedLeashInfo.right().get().getCenter();
|
||||
} else if (delayedLeashInfo.right().isEmpty() && delayedLeashInfo.left().isPresent()) {
|
||||
assert level != null;
|
||||
Player playerByUUID = level.getPlayerByUUID(delayedLeashInfo.left().get());
|
||||
if (playerByUUID != null) {
|
||||
playerLeashState.pos = playerByUUID.position().add(0.0, abstractClientPlayer.getEyeHeight() *0.7, 0);
|
||||
playerLeashState.pos = playerByUUID.position().add(0.0, playerByUUID.getEyeHeight() *0.7, 0);
|
||||
} else {
|
||||
double breakDistanceTime = (leashDataFromEntityData.leashHolder instanceof LeashRopeArrow) ? LeashedPlayer.M1() * LeashedPlayer.M2() : LeashedPlayer.M1();
|
||||
double MaxLeashLength = ((ILivingEntityExtension) abstractClientPlayer).getLeashLength() * breakDistanceTime;
|
||||
List<Entity> entities = level.getEntities(
|
||||
null,
|
||||
new AABB(
|
||||
abstractClientPlayer.getX() - MaxLeashLength,
|
||||
abstractClientPlayer.getY() - MaxLeashLength,
|
||||
abstractClientPlayer.getZ() - MaxLeashLength,
|
||||
abstractClientPlayer.getX() + MaxLeashLength,
|
||||
abstractClientPlayer.getY() + MaxLeashLength,
|
||||
abstractClientPlayer.getZ() + MaxLeashLength
|
||||
abstractClientPlayer.getX() - MaxLeashLength * LeashedPlayer.M2(),
|
||||
abstractClientPlayer.getY() - MaxLeashLength * LeashedPlayer.M2(),
|
||||
abstractClientPlayer.getZ() - MaxLeashLength * LeashedPlayer.M2(),
|
||||
abstractClientPlayer.getX() + MaxLeashLength * LeashedPlayer.M2(),
|
||||
abstractClientPlayer.getY() + MaxLeashLength * LeashedPlayer.M2(),
|
||||
abstractClientPlayer.getZ() + MaxLeashLength * LeashedPlayer.M2()
|
||||
)
|
||||
);
|
||||
Entity holder = null;
|
||||
|
|
@ -87,15 +76,17 @@ public abstract class MixinPlayerRenderer extends LivingEntityRenderer<AbstractC
|
|||
}
|
||||
if (holder != null) {
|
||||
if (holder instanceof LeashRopeArrow) {
|
||||
playerLeashState.pos = holder.position().add(0.0, abstractClientPlayer.getEyeHeight() *0.7, 0);//TODO: 待擴展Vec3
|
||||
} else playerLeashState.pos = holder.position().add(0.0, abstractClientPlayer.getEyeHeight() *0.7, 0);
|
||||
playerLeashState.pos = holder.position().add(0.0, holder.getEyeHeight() *0.7, 0);//TODO: 待擴展Vec3
|
||||
} else playerLeashState.pos = holder.position().add(0.0, holder.getEyeHeight() *0.7, 0);
|
||||
} else {
|
||||
playerLeashState.pos = abstractClientPlayer.position();
|
||||
}
|
||||
}
|
||||
}
|
||||
playerLeashState.o = new Vec3(abstractClientPlayer.xo, abstractClientPlayer.yo, abstractClientPlayer.zo);
|
||||
Entity leashHolder = leashDataFromEntityData.leashHolder;
|
||||
playerLeashState.yRotO = abstractClientPlayer.yRotO;
|
||||
playerLeashState.yRot = abstractClientPlayer.getYRot();
|
||||
playerLeashState.eyeHeight = abstractClientPlayer.getEyeHeight();
|
||||
iPlayerRenderStateExtension.setPlayerLeashState(playerLeashState);
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.r3944realms.leashedplayer.modInterface;
|
||||
|
||||
import com.r3944realms.leashedplayer.client.renders.PlayerLeashState;
|
||||
import net.minecraft.client.renderer.entity.state.PlayerRenderState;
|
||||
|
||||
public interface IPlayerRenderStateExtension {
|
||||
PlayerLeashState getPlayerLeashState();
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 259 B After Width: | Height: | Size: 355 B |
Binary file not shown.
|
Before Width: | Height: | Size: 257 B After Width: | Height: | Size: 313 B |
Loading…
Reference in New Issue
Block a user