java - 重新初始化变量

标签 java initialization instance minecraft

所以我试图在 Minecraft 模组中制作一个电缆系统,这显然需要能够连接/断开其他电缆。目前我只致力于美观,因此想更改是否显示电线的每个部分。 我的电线模型是用 Techne(一个 Minecraft 建模程序,您可以在其中逐个构建模型)制作的,由 7 个部分组成(核心以及上、下、北、南、东、西)。当前,当首次实例化模型时,可以使用每个方向的 boolean 值来切换它们(我不需要切换核心):

public RenderCable()
{
    this.modelCable = new ModelCableAll(true, true, true, false, false, false);
}

这样做的问题是状态只能通过重新启动游戏来更改,那么我如何实时更新状态/编辑现有实例/重新制作模型实例?

这是整个类(class):

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();
    }
}

最佳答案

创建一个 setter 。

public void setModelCable(ModelCable other) {
    this.modelCable = other;
}

在你的情况下,你可能只是想暴露

public void setPartXVisibility(boolean visible) {
    this.modelCable.setPartXVisibility(visible);
}

此时我的 Minecraft 知识就停止了 - 作为 setter 的一部分,您可能需要通知 UI 此更改或类似 MVC 的内容。

关于java - 重新初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24743631/

相关文章:

java - Arquillian 测试中的 Persistence.xml 被覆盖

java - 错误 : Could not find or load main class

c++ - 使用构造函数初始化成员数组

java - 我们可以创建一个抽象类的对象吗?

java - 防止Java类被实例化和继承

java - 使用 TLS 端点验证时,主题备用名称为空

java - 如何在方法中使用泛型参数来将参数类型限制为某些特定的类类型?

java ;初始化对象并传递对象

c++ - 为什么 x86-64 C/C++ 编译器没有为此代码生成更高效的汇编?

amazon-ec2 - Amazon EC2 实例 ID - 为什么要 XOR?