實體 - Entity
學習目標
- 了解Entity的定義
- 了解部分實體的生成
了解Entity的定義
實體是Entity包括在Minecraft中所有動態(tài)的、移動中的對象
所有的實體都有以下性質:
- 具有速度、位置和旋轉角度。
- 占有特定的空間大小。此空間是一個固定長寬高的三維長方體(實體不偏斜時,俯視圖為正方形)。
- 當前的生命值。
- 當著火時,生命值逐漸減少,實體顯示出被火焰包圍的樣子(在攜帶版中兩格高或以上的實體火會顯示在臀部)。
- 狀態(tài)效果,主要由藥水產生,蜘蛛在困難難度生成時會攜帶狀態(tài)效果
了解部分實體的生成
在BukkitAPI中,我們可以通過調用World類下的幾個spawn方法進行生成
spawn(Location location, java.lang.Class<T> clazz)
在指定的位置根據(jù)給定的類生成一個實體.
spawnEntity(Location loc, EntityType type)
在指定的位置創(chuàng)建一個實體.
spawnArrow(Location location, Vector direction, float speed, float spread)
在指定的位置創(chuàng)建一個箭的實體.
spawnFallingBlock(Location location, MaterialData data)
在指定的位置創(chuàng)建一個指定Material的墜落方塊
在上方的代碼中第2和第3不做相關解釋
- spawn(Location location, Class<T extends Entity> clazz)
該方法可用于實體生成,也可用于自定義實體時進行的生成 - spawnEntity(Location loc, EntityType type)
該方法可用于實體, 但僅限于原版怪物
范例: 使用spawn方法生成一頭牛
// 假設現(xiàn)在的需求是在玩家身旁生成一頭牛
World world = player.getWorld();
world.spawn(player.getLocation(), Cow.class);
范例: 使用spawnEntity方法生成一頭牛
// 假設現(xiàn)在的需求是在玩家身旁生成一頭牛
World world = player.getWorld();
world.spawnEntity(player.getLocation(), EntityType.COW);
在上方的范例中,第二種方法較為常用
在有些時候我們會發(fā)現(xiàn)有些實體的頭上會有一些名字,這是怎么做到的呢?
范例: 使用spawnEntity方法生成一頭牛, 并為其命名
// 假設現(xiàn)在的需求是在玩家身旁生成一頭牛
World world = player.getWorld();
// 因為spawnEntity方法會返回該實體的實例對象, 而Cow類繼承了Entity所以需要強轉
Cow cow = (Cow) world.spawnEntity(player.getLocation(), EntityType.COW);
// 設置牛的自定義名的可見性
cow.setCustomNameVisible(true);
// 設置牛的自定義名
cow.setCustomName("§6一頭奶牛");