Skip to content

Bukkit和基础

AttributePlus默认就导入了 Bukkit 这个类,所以我们可以直接使用这个类下的所有静态方法。

我们应该学习看javadoc
https://bukkit.windit.net/javadoc/org/bukkit/Bukkit.html
打开后我们可以看到,它是一个经过汉化的文档
首先映入眼帘的是 BukkitDoc 程序包 org.bukkit 就是包名,类 Bukkit 就是类名,他们结合起来 org.bukkit.Bukkit 就是这个类的路径。
我们可以点击下面的按钮“静态方法”来查看这个类下的所有静态方法,也就是可以在脚本属性中直接使用的方法。

修饰符和类型

暂时不需要理解修饰符的概念,只做一些简单的说明。
static boolean
看到 static,就代表这个方法是静态的。(这个 static 就是修饰符)
boolean 代表这个方法返回的类型,它是一个布尔值

static void
static 同上
void 代表这个方法什么都不返回,和Kotlin语言(AttributePlus使用kotlin编写)的 Unit 概念类似,所以你会在“方法大全”中看到很多 Unit

static @NotNull ItemStack
@NotNull 是注解,它现在代表返回的 ItemStack 对象 @NotNull,即不为 null
ItemStack 代表这个方法返回一个 ItemStack 的对象,它是物品堆,现在你也不需要理解它是什么。

如何使用

正常使用即可,要求什么参数就填什么参数

JavaScript
Bukkit.broadcastMessage("紧急通知!")

基本数据类型

这是在Java中一个很重要的概念。你可以看到返回值如 boolean int double 等之类的返回值,他们为什么是小写的?为什么“方法大全”中是首字母大写的?

Java中有8中基本数据类型 byte short int long float double char boolean,他们对应的包装类型分别是Byte Short Integer Long Float Double Character Boolean

我们以 double 举例。
double 就是 Double 类所包装(或封装)的基本数据类型,其他同理。

特性double (基本类型)Double (包装类)
类型基本数据类型对象 (类)
默认值无 (局部变量需初始化)null (成员变量/数组元素)
可为 null
存储直接存储数值存储引用,内部包含 double 值
性能更高 (无对象开销)稍低 (有对象开销)
用途数值计算集合、泛型、需要 null 的场景

这是Java的概念,在Kotlin中并没有相关的概念,但这并不意味着它不高效。其背后的设计理念和实现机制非常巧妙。Kotlin 的核心设计目标之一是拥有一个完全统一的类型系统。这意味着:

  • 在 Kotlin 中,一切皆是对象。无论是数字、布尔值还是字符,它们都被视为对象。
  • 这与 Java 形成鲜明对比。Java 有 基本数据类型 (double等) 和 引用类型 (Double等) 两种不同的系统,这导致了复杂性(比如装箱/拆箱)和一些限制(比如基本类型不能调用方法)。

正如我之前说的,AttributePlus使用kotlin编写的,所以你会在方法大全“方法大全”中看到的是 Double 而不是 double
但是你又能看到 AttributeAPI.attackTo(LivingEntity entity, LivingEntity attacker, double damage) 这种小写的 double,这是因为我时而复制AttributePlus文档,时而自己写文档导致的。

总结:你无需关心它的大小写,直接按照数据基本类型使用即可。因为这背后的设计更为巧妙和复杂,如果你想了解,可以去搜一下视频或者文档,很多人讲的都比我好。

注意事项

很多方法都有要求最低的Minecraft版本,如果你使用的版本不支持还硬要使用就会报错。