您的足迹: 6_basicblocks

简易方块

简易方块

在上一章中我们讲到了享元模式,它就是在不同的对象中把相同的部分提取出来,这个过程叫做抽象。 作为一个方块,共有的属性可能有大小、生命值、类别、建造消耗等等。另外,还有一个东西叫做方块实体,也就是每一个具体的、存在于游戏当中的方块,它们拥有各自的生命值、消耗器、产出、进度等等。

方块的注册

和上篇教程类似,我们需要先创建一个继承于ContentList的类,我们把它命名为ModBlocks。接下来,在我们的load方法里声明一个静态字段用于存放方块。不要忘记在主类中实例化和调用load方法。 接下来,我们来创造一个方块——铁墙:

public class ModBlocks implements ContentList {
    public static Wall ironWall;  //这里我们先声明他为一个静态字段
    
    @Override
    public void load() {
        ironWall = new Wall("iron-wall");//再次注册并赋值
    }
}

然后我们就可以搞贴图和本地化了。

接下来,我们需要给他添加一点字段来增加功能,如果写过json或js对这些字段一定不陌生,java中字段的添加方式如下:

ironWall = new Wall("iron-wall") {{
        requirements(Category.defense, BuildVisibility.shown, new ItemStack[]{});
        health = 2880;
        size = 2;
        }};
    

你看明白了吗? 这里给一点投机取巧的指导:

  • 在new后面紧跟着的,就是我们想要创建的方块的类型,类型是很重要的东西,一个类型会自带方法和字段,如果你选择的类型里没有你使用的字段,就会报错,一般我们需要以需求选择正确的类型;
  • 在我们注册语句之后紧跟{{}},并在最里层填入赋值语句,这种创建实例的方法,我们把它称为匿名类
  • 里面的变量名和json/js几乎完全一致,你可以查看本站的API指南查看,也可以直接看源码,二者没有任何差别,冷知识,在IJ中,将光标移至类名上,ctrl+左键,就会直接跳到类的定义
  • 要注意字段的类型,不要赋一个不同类型的值,例如,你不太可能把int赋值给string,但要记住float末尾一定要带上f;
  • 要注意一些字段的json和java内容不同,例如requirements在java不只是物品堆栈,而是一个有三个参数的函数,分别为类别,建造可视性和物品堆栈。

没出错的话,打包之后应该就能看到了。

进阶!

用java的意义是什么?当然是达到这个游戏最高的自由度了!如果你只是给方块写几个字段就完毕了,建议回去用json,还能搞到iOS兼容性,岂不美哉?当然,你未必要按我的走,顺从的你想法,一切都只局限于你能否把想法变成现实。 如果你还不会,务必要记住记住:多看 多想 多写

看看排版

任何人记住,在你看到这篇教程之后的五天我就会回来更新,注意,要以你看到这句话的时间为准!我半句假话没有!

javamodding/6_basicblocks.txt · 最后更改: 2022/04/10 14:47 (外部编辑)
CC Attribution-Share Alike 4.0 International