因此,我试图在Minecraft mod中制作电缆系统,这显然需要能够连接/拆卸其他电缆。目前我只是在研究美学,所以想要改变是否显示电线的每个部分。 我的线模型是在Techne(一个Minecraft建模程序,你逐个建立你的模型)中制作的,由7个部分组成(核心,上,下,北,南,东,西)。当模型第一次实例化时,它们可以在每个方向使用布尔值进行切换(我不需要切换核心):
public RenderCable()
{
this.modelCable = new ModelCableAll(true, true, true, false, false, false);
}
问题在于只能通过重新启动游戏来更改状态,那么我如何才能更新状态/编辑现有实例/重新制作模型实例?
以下是整个班级:
package foodTech.tileEntities.render;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import foodTech.tileEntities.models.cable.ModelCableAll;
public class RenderCable extends TileEntitySpecialRenderer {
ResourceLocation textureOff = (new ResourceLocation("roboguy99:textures/models/cableOff.png"));
ResourceLocation textureOn = (new ResourceLocation("roboguy99:textures/models/cableOn.png"));
private final ModelCableAll modelCable;
public RenderCable()
{
this.modelCable = new ModelCableAll(false, false, false, false, false, false);
}
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float scale)
{
GL11.glTranslatef((float) x + 0.5F, (float) y - 0.5F, (float) z + 0.5F);
setConnections();
GL11.glTranslatef((float) x - 0.5F, (float) y + 0.5F, (float) z - 0.5F);
}
public void setConnections()
{
GL11.glPushMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(textureOff);
this.modelCable.render((Entity)null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
GL11.glPopMatrix();
}
}
答案 0 :(得分:4)
创建一个setter。
public void setModelCable(ModelCable other) {
this.modelCable = other;
}
在您的情况下,您可能只想公开
public void setPartXVisibility(boolean visible) {
this.modelCable.setPartXVisibility(visible);
}
此时我的Minecraft知识停止了 - 您可能需要通知UI此更改或类似MVC的内容,作为您的安装程序的一部分。
答案 1 :(得分:1)
我不确定这个,但如果删除'final'修饰符,它可能会有用。
另外,如何更改/访问变量以将部件设置为true / false?
编辑: 我认为您需要将您的modelCable变量设为public&非决赛。 然后你可以从任何地方访问它。 (你可以改变它。)