Minecraft 1.8.9
我已经成功地制作了一个只有一个纹理的块,并且它呈现得很好。我看了一些youtube教程,它起作用了。耶!
然而,我的问题是另一个块,它应该有多个纹理。它最初有一个像另一个块一样的纹理(只是为了练习我的块),但后来我决定它需要元数据和状态。为此,我遵循了本教程,直到它出现BlockRenderRegister.class。我没有制作这个类,它也没有详细说明放在哪里,所以我试着自己去弄清楚剩下的。
package com.cellularautomaton.mod.blocks;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
public class CellularAutomatonGrid extends Block implements IMetaBlockName{
public CellularAutomatonGrid(String unlocalizedName, Material material, float hardness, float resistance){
super(material);
this.setUnlocalizedName(unlocalizedName);
this.setCreativeTab(CreativeTabs.tabBlock);
this.setHardness(hardness);
this.setResistance(resistance);
this.setDefaultState(this.blockState.getBaseState().withProperty(TYPE, EnumType.WHITE));
}
@Override
public void getSubBlocks(Item itemIn, CreativeTabs tab, List list) {
list.add(new ItemStack(itemIn, 1, 0)); //Meta 0
list.add(new ItemStack(itemIn, 1, 1)); //Meta 1
}
public CellularAutomatonGrid(String unlocalizedName, float hardness, float resistance){
this(unlocalizedName, Material.rock, hardness, resistance);
}
public CellularAutomatonGrid(String unlocalizedName)
{
this(unlocalizedName, 2.0f, 10.0f);
}
@Override
protected BlockState createBlockState(){
return new BlockState (this, new IProperty[] { TYPE } );
}
@Override
public IBlockState getStateFromMeta(int meta){
return getDefaultState().withProperty(TYPE, meta == 0 ?EnumType.WHITE : EnumType.BLACK);
}
@Override
public int getMetaFromState(IBlockState state){
EnumType type = (EnumType) state.getValue(TYPE);
return type.getID();
}
@Override
public int damageDropped(IBlockState state){
return getMetaFromState(state);
}
public static final PropertyEnum TYPE = PropertyEnum.create("type", CellularAutomatonGrid.EnumType.class);
public enum EnumType implements IStringSerializable {
WHITE(0, "white"),
BLACK(1, "black");
private int ID;
private String name;
private EnumType(int ID, String name) {
this.ID = ID;
this.name = name;
}
@Override
public String getName() {
return name;
}
@Override
public String toString(){
return getName();
}
public int getID() {
return ID;
}
}
@Override
public String getSpecialName(ItemStack stack) {
return stack.getItemDamage() == 0 ?"white" :"black";
}
@Override
public ItemStack getPickBlock(MovingObjectPosition target, World world, BlockPos pos){
return new ItemStack(Item.getItemFromBlock(this), 1, this.getMetaFromState(world.getBlockState(pos)));
}
}
我的CellularAutomatonBlocks类:
package com.cellularautomaton.mod.blocks;
import com.cellularautomaton.mod.Reference;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.model.ModelBakery;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraftforge.fml.common.registry.GameRegistry;
public class CellularAutomatonBlocks {
public static Block cellauto1;
public static Block cellauto2;
public static void init(){
cellauto1 = new CellularAutomatonFrame("cellauto1");
cellauto2 = new CellularAutomatonGrid("cellauto2");
}
public static void register(){
GameRegistry.registerBlock(cellauto1, cellauto1.getUnlocalizedName().substring(5));
GameRegistry.registerBlock(cellauto2, ItemBlockMeta.class, "cellauto2");
}
public static void registerRenders(){
registerRender(cellauto1);
registerRender(cellauto2);
}
public static void registerRender(Block block){
Item item = Item.getItemFromBlock(block);
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MOD_ID + ":" + item.getUnlocalizedName().substring(5), "inventory"));
}
}
如果你需要其他文件就告诉我。谢谢你!
好吧...你跟着教程走,碰到了和我碰到的一样的症结。至少我不是唯一一个;-)
对我有帮助的是下载提供的源代码。
在bedrockminers教程中,您通常会发现隐藏的链接
您可以从这里下载本教程中使用的代码作为.zip文件。
我正在使用Jpa和Hibernate。 我的项目中发生了一件非常奇怪的事情。 我有两个实体:学生和课程,多对多的关系。 很长一段时间内,一切都运行得很好,但突然我遇到了这个问题: 当我找到一个特定的学生(em.find)并使用getter(student.getcourses)返回其课程列表时,我只收到列表的一部分!如果我使用一个查询(“Select s.cources from Students
为了解决这个问题,我尝试了许多JDK版本,但似乎无论我使用哪个java,结果总是一样的。 MavenReportException:创建存档时出错:无法找到javadoc命令:未正确设置环境变量JAVA_HOME。 我跑了: 导出JAVA_HOME=/usr/lib/jvm/JAVA-8-openjdk-amd64 : MavenReportException:创建存档时出错:无法找到javado
我已经用Gradle 4.0.1安装了Android Studio 2.3.3,它工作得很好,但有一天它似乎没有正确加载。我构建了Gradle,清理并重建了我的项目,它表明构建是正确的,我甚至可以编译,但IDE中的所有内容都是红色的,就像它没有加载库一样。会是什么?很抱歉解释得太短,但这是我的全部。
问题内容: 我使用mysql 5.7 我想将联接表的结果串联到单列中。我使用包裹在函数中的函数。这是查询 列包含来自联接表的数据。数据已正确检索,但问题是列未转换为正确的JSON。 如您所见,最后有点“切”。 我也尝试过,但是现在它不能转换为正确的数组。它看起来像字符串太大,不适合列。有办法解决吗? 更新 问题必须出在不适合列的st大小中。我尝试从联接表中选择较少的列,并且它可以正常工作。也许有一
问题内容: 在FF或Chrome中渲染时,红色div的高度为26px,而黄色div的高度为20px。如何使红色的div呈现与黄色的div相同,但不包含任何文本呢? 问题答案: 只是一个想法: 只要div中没有文本,就将其视为行内图像(或其他内容),因此将vertical-align设置为“基准”(或文本底部或其他内容)而不是“底部”。 解决方案: 要更正此问题,请在您的内部div上进行设置。绝
我正在加密字符串并将其存储在客户端的cookie中。。但是,当我从js向java代码发送完全加密的字符串时,它给出了前面提到的异常。 我用于加密和解密的代码是: 你能告诉我问题是什么吗??我尝试过stackoverflow上提到的解决方案。com和其他一些解决方案,但都不起作用。。我收到这个错误是因为我将加密字符串发送到JS,而它正在更改字符串的填充吗?