重新初始化变量

时间:2014-07-14 18:49:15

标签: java initialization instance minecraft

因此,我试图在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();
    }
}

2 个答案:

答案 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&非决赛。 然后你可以从任何地方访问它。 (你可以改变它。)