java - 有没有办法在初始化后动态更新 block 纹理?

标签 java minecraft minecraft-forge

我想更新世界纹理中的特定 block ,而不替换该 block 或注册多个 block 。我使用的是Forge版本1.7.2,推荐版本。

最佳答案

您可以做的是在纹理目录中拥有多个纹理,并将它们全部注册到您的 registerBlockIcons(IIconRegister register) 方法中。 示例:

package com.example.examplemod;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class BlockMultiTextureDemo extends Block {

//Save state to NBT at the world save time.
private int state = 0;

private final int DONE = 0;
private final int WORKING = 1;
private final int NOPOWER = 2;
private final int MACHINEBROKE = 3;


@SideOnly(Side.CLIENT)
public static IIcon doneIcon;
@SideOnly(Side.CLIENT)
public static IIcon workIcon;
@SideOnly(Side.CLIENT)
public static IIcon nopowerIcon;
@SideOnly(Side.CLIENT)
public static IIcon brokeIcon;
@SideOnly(Side.CLIENT)
public static IIcon topIcon;

protected BlockMultiTextureDemo(Material material) {
    super(material);
}

@Override
public void registerBlockIcons(IIconRegister register) {
    super.registerBlockIcons(register);
    doneIcon = register.registerIcon("MODID:" + getUnlocalizedName()
            + "_DONE");
    workIcon = register.registerIcon("MODID:" + getUnlocalizedName()
            + "_WORKING");
    nopowerIcon = register.registerIcon("MODID:" + getUnlocalizedName()
            + "_NOPOWER");
    brokeIcon = register.registerIcon("MODID:" + getUnlocalizedName()
            + "_BROKE");
    topIcon = register.registerIcon("MODID:" + getUnlocalizedName()
            + "_TOP");

}

@Override
protected String getTextureName() {
    return super.getTextureName();
}

@Override
public IIcon getIcon(int side, int meta) {
    switch (meta) {
    case DONE:
        return doneIcon;
    case WORKING:
        return workIcon;
    case NOPOWER:
        return nopowerIcon;
    case MACHINEBROKE:
        return brokeIcon;
    default:
        return topIcon;
    }
  }
}

希望这就是您正在寻找的!

关于java - 有没有办法在初始化后动态更新 block 纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23796154/

相关文章:

java - 是否有一种特定的方法可以从 java 代码调用特定场景,而不是使用 TestRunner 和标签?

Java 8 流 - 将方法传递给过滤器

java - 任务  ':compileJava' 执行失败

java - 编译minecraft mod错误: cannot find symbol

java - blockstate [state] 的 varian [block] 的异常加载模型 MissingVariantException

Java:转义 XML 文本内容而不是整个文本

java - 尝试检索多个 JDBC 结果

java - 我的世界模组中如何拥有多种矿石?

java - 在Eclipse中运行找不到类

java - 爆炸后方 block 不更新