版本信息
你使用的系统:win10 1909 x64
你是用的JDK: 8u251 x64
你使用的IDE:IntelliJ IDEA
你使用的IDE版本:2020.2
Forge版本: 31.2.36
Minecraft版本: 1.15.2
Mapping 文件版本: 20200901
简述
怎么根据一个Block的不同State改变TileEntityRenderer呢?我有两个State:left和broken,想在left为true和false时渲染出不同的效果,在broken为true时什么也不渲染(只保留json模型)。bing了一圈没找到什么例子的样子。。。。
我觉得你可以在你的TE上加一个字段,然后在改变BlockState的时候改变TE相关字段的内容。
我建议是不要在TER里调用world.getBlcokState
先不说会有性能的问题,渲染很有可能在另一个线程的(我需要确认)还会有跨线程冲突的问题。
哈哈哈我第一个试的就是在里面加了if(…getBlockstate…) XD
确实没用 但是看起来并没有副作用(
我看了一眼TileEntity
类,TileEntity
里有个getBlockState()
的方法,你可以用这个方法获取一个缓存过的BlockState
。
public BlockState getBlockState() {
if (this.cachedBlockState == null) {
this.cachedBlockState = this.world.getBlockState(this.pos);
}
return this.cachedBlockState;
}
这种方法可能需要在BlockState变动时更新一下
至少我这里暂时不需要,基本都用的是setblockstate(
该主题在最后一个回复创建后7天后自动关闭。不再允许新的回复。