哈囉,上一章提到的是主要的函式,接下來是插件方法(ModPE Script Methods)!
接下來Part 3會有很多分支,它們大致分為:
- 雜項
- ModPE
- Level
- Player
- Entity
- Item
- Block
- Server(此類沒有人用過,因此我也無法介紹)
- Renderer
3.1. 如何取得插件方法一覽表#
插件方法就是一些函數,BlockLauncher作者會把所有的插件方法放在"測試功能"裡:
BlockLauncher按扳手>設定
找到測試功能
按下Dump ModPE Scripts methods
按下確定,它會存在你的SD卡。建議BlockLauncher每更新幾版就更新一下這個檔案。
3.2. 雜項#
本章重點放在雜項。
多為BlockLauncher剛推出插件函數時這些較多,但大多都有被分到其他類去了。
addItemInvnetory(物品ID,數量,副ID)
用法:添加物品到玩家背包,如果要減少數量就填-1。
若玩家手上只有一個物品又用此法減少則物品會存在但點一下就消失。
副ID預設為0,可不填。
例:additmemInvnetory(259,1,0);
bl_setMobSkin(實體,“皮膚”)
用法:設置實體的皮膚
註:現在bl_開頭的方法使用時會一直彈出提示訊息,請使用新版的相關類別。比方說這個最好改用Entity.setMobSkin()
例:bl.setMobSkin(v,“mob/zombie.png”);
bl_spawnMob(x座標,y座標,z座標,實體ID, “皮膚”)
用法:生成實體。
實體ID請參考
這個。
皮膚不填則視為預設。
例:bl_spawnMob(1,1,1,33,“mob/creeper.png”);
clientMessage(“文字”)
用法:以系統訊息顯示文字。
例:clientMessage(“Hello”);
explode(x座標, y座標,z座標,半徑)
用法:爆炸。半徑填小於1則只會有聲音,但還是可以引爆TNT。
例:explode(1,1,1,50);
getCarriedItem()
用法:獲取玩家手上拿的物品ID。
getLevel()
用法:獲取玩家當前世界( 參考此文)
getPitch(實體)
用法:獲取實體頭的垂直角度,留空則默認為玩家。
getPlayerEnt()
用法:代表玩家。
getPlayerX()
用法:獲取玩家X座標。
getPlayerY()
用法:獲取玩家Y座標。
getPlayerZ()
用法:獲取玩家Z座標。
getTile(x座標,y座標,z座標)
用法:獲取該座標的方塊信息。
getYaw(實體)
用法:獲取實體頭的水平角度,留空則默認為玩家。
preventDefault()
用法:阻止原本效果,比方說破壞木頭不掉木頭等。
print(“文字”)
用法:在螢幕上顯示文字。
例:print(“Hello”);
rideAnimal(實體1,實體2)
用法:讓實體1騎在實體2上。
例:rideAnimal(a,v);
setNightMode(布林值)
用法:永夜,填true開啟,false關閉。
例:setNightMode(true);
setPosition(實體,x座標,y座標,z座標)
用法:傳送實體到一個座標。傳送玩家到一個方塊時如果卡住,則Y座標+4。
例:setPosition(getPlayerEnt(),1,1,1);
setRelativePosition(實體,x座標,y座標,z座標)
用法:傳送實體到一個絕對座標。
例:setRelativePosition(getPlayerEnt(),1,1,1);
setRot(實體,水平角度,垂直角度)
用法:設置實體頭的角度,建議用三角函數算。
例:setRot(getPlayerEnt(),360,90);
setTile(x座標,y座標,z座標方塊ID,副ID)
用法:設置方塊。副ID預設為0。
例:setTile(1,1,1,10,0);
setVelX(實體,速率)
用法:讓實體往X的方向前進。注意,速度1就很快了,因此建議填小數。
速度若為負則往後。
例:setVelX(getPlayerEnt(),0.5);
setVelY(實體,速率)
用法:讓實體往Y的方向前進。注意,速度1就很快了,因此建議填小數。
速度若為負則往後。
例:setVelY(getPlayerEnt(),0.5);
setVelZ(實體,速率)
用法:讓實體往z的方向前進。注意,速度1就很快了,因此建議填小數。
速度若為負則往後。
例:setVelZ(getPlayerEnt(),0.5);
spawnChicken(x座標,y座標,z座標,“皮膚”);
用法:生成雞。
註:很抱歉,只有這3種生物,沒有spawnCreeper()這種甚麼的~
例:spawnChicken(10,11,12,“mob/pig.png”);
spawnCow(x座標,y座標,z座標,“皮膚”);
用法:生成牛。
例:spawnCow(10,11,12,“mob/pig.png”);
spawnPigZombie(x座標,y座標,z座標,“皮膚”);
用法:生成殭屍豬人。
例:spawnPigZombie(10,11,12,“mob/pig.png”);
3.3. ModPE#
本章重點放在
這些方法主要是控制一些系統設定。
ModPE.dumpVtable(“字串”,整數)
用法:不明
ModPE.getBytesFromTexturePack(“路徑”)
用法:不明
ModPE.getI18n(“字串”)
用法:獲取在地化語言,目前字串要填什麼仍是個未知數。 i18n的意思
ModPE.getLanguage()
用法:獲取目前遊戲使用的語言,例如繁中就是"zh-tw"。
ModPE.getMinecraftVersion()
用法:偵測Minecraft版本。
ModPE.langEdit(“物品名”, “新名字”)
用法:改物品名。注意,物品名是遊戲裡的代碼。
例:ModPE.langEdit(“crafting_table”,“GG”)
ModPE.leaveGame()
用法:返回到遊戲主界面。
ModPE.log(“字串”)
用法:列印指定的日誌。
ModPE.openInputStreamFromTexturePack(“路徑”)
用法:可以開啟材質包內的檔案,例如讀文字檔。
ModPE.overrideTexture(“路徑”,“材質網址”)
用法:替換材質。
例:ModPE.overrideTexture(“images/items-opaque.png”,“xxx.com”)
ModPE.readData(“字串”)
用法:讀檔。字串為儲存的變數名。
ModPE.removeData(“字串”) 用法:刪檔。字串為儲存的變數名。
ModPE.resetFov()
用法:重置視角放大倍率。
ModPE.resetImages()
用法:重置材質。
ModPE.saveData(“路徑”,“字串”)
用法:存檔(好像不能存陣列)。字串為儲存的變數名。
ModPE.selectLevel(“資料夾名”,“世界名”)
用法:進入所填的世界。
ModPE.setCamera(實體)
用法:把玩家的視角設定到一個實體上。
ModPE.setFoodItem(ID,“材質名稱”,副ID,加/減的血量,“名稱”)
用法:新增食物。
材質名稱是0.11.0後,物品必須以單獨的圖片檔放在材質包裡;ID上限是4096,這2點新增物品同理。
例:ModPE.setFoodItem(470,“XO”,0,6,“XO”)\
ModPE.setFov(數字)
用法:設置視角放大倍率,預設為17。
ModPE.setGameSpeed(數字)
用法:設置遊戲速度,預設為20。
ModPE.setGuiBlocks(“路徑”)
用法:設置方塊在背包裡的材質。0.8.0以下有效。
ModPE.setItem(ID, “材質名稱”,副ID,“名稱”,在手中最多可堆疊數)
用法:新增物品。
例:ModPE.setItem(471,“XO”,0,“XO”,1)
ModPE.setItems(“網址”)
用法:請別跟前者搞混,這是改物品材質。
ModPE.setUiRenderDebug(布林值)
用法:在螢幕上顯示除錯用資訊。
ModPE.setTerrain(“網址”)
用法:改方塊材質。
ModPE.showTipMessage(“文字”)
用法:在螢幕上顯示文字。
例:ModPE.showTipMessage(“Hello”)
ModPE.takeScreenshot(“存檔名”)
用法:截圖。檔案在SD卡/Pictures/BlockLauncher。
例:ModPE.takeScreenshot(“Example”)
3.4. Level#
本章重點放在Level。
Level.addParticle(粒子代碼, X座標, Y座標, Z座標, X方向速率, Y方向速率, Z方向速率, 數量)
用法:產生粒子,通常XYZ速率和數量填0即可。
粒子代碼modpescriptdump.txt有附(ParticleType.XXX那幾個),數字版的代碼沒有人整理。
Level.biomeIdToName(代碼)
用法:把特定生態系的數字代碼轉成字串代碼。
Level.canSeeSky(X座標, Y座標, Z座標)
用法:確認一個方塊上方直到最高點(天空)是否有方塊擋住,偵測的方式類似烽火台。
Level.destroyBlock(X座標, Y座標, Z座標, 是否要有粒子(布林值))
用法:破壞方塊。
Level.dropItem(X座標,Y座標, Z座標, 是否跳躍(布林值), 物品ID, 數量, 物品副ID)
用法:生成一個掉落物。
Level.explode(X座標,Y座標, Z座標, 半徑, 是否破壞地形(布林值))
用法:產生爆炸。
Level.getAddress()
用法:獲取目前世界的IP。
Level.getBiome(X座標, Z座標)
用法:獲取該座標的生態系ID。
Level.getBiomeName(X座標, Z座標)
用法:獲取該座標的生態系名稱。
Level.getBrightness(X座標,Y座標, Z座標)
用法:獲取該座標的亮度。
Level.getChestSlot(X座標,Y座標, Z座標, 第幾格)
用法:獲取該座標箱子的物品ID。
註:箱子的格子數是從0開始算。
Level.getChestSlotCount(X座標,Y座標, Z座標, 第幾格)
用法:獲取該座標箱子的物品數量。
Level.getChestSlotCustomName(X座標,Y座標, Z座標, 第幾格)
用法:獲取該座標箱子的物品名稱。
Level.getChestSlotData(X座標,Y座標, Z座標, 第幾格)
用法:獲取該座標箱子的物品副ID。
Level.getData(X座標,Y座標, Z座標)
用法:獲取該座標方塊的副ID。
Level.getDifficulty()
用法:獲取遊戲難度。
Level.getFurnaceSlot(X座標,Y座標, Z座標, 第幾格)
用法:獲取該座標熔爐的物品ID。
註:熔爐同箱子,格子數是從0開始算,不過熔爐只有2格。
Level.getFurnaceSlotCount(X座標,Y座標, Z座標, 第幾格)
用法:獲取該座標熔爐的物品數量。
Level.getFurnaceSlotData(X座標,Y座標, Z座標, 第幾格)
用法:獲取該座標熔爐的物品副ID。
Level.getGameMode()
用法:獲取遊戲模式。
Level.getGrassColor(X座標, Z座標)
用法:獲取該座標的草皮顏色。
註:插件裡的顏色是用Hex代碼表示。
Hex顏色代碼查詢見此
Level.getLightningLevel()
用法:獲取現在打雷強度。
Level.getRainLevel()
用法:獲取現在的雨勢。
Level.getSignText(X座標,Y座標, Z座標, 第幾行)
用法:獲取該座標告示牌的文字內容。
註:行數是從0開始算。
Level.getSpawnerEntityType(X座標,Y座標, Z座標)
用法:獲取該座標生怪籠產生的生物的ID。
Level.getTile(X座標,Y座標, Z座標)
用法:獲取該座標的方塊ID。
Level.getTime()
用法:獲取目前的世界的時間。
Level.getWorldDir()
用法:獲取目前的世界的資料夾名稱。
註:判別世界時用這個會比下面的好,因為MCPE即使世界名稱遊戲裡相同但資料夾名稱是絕對不同的。
Level.getWorldName()
用法:獲取目前的世界的名稱。
Level.playSound(X座標,Y座標, Z座標, “音效代碼”, 音量, 音高)
用法:在該座標播放遊戲內的音效。
音效代碼見此
Level.playSoundEnt(實體, “音效代碼”, 音量, 音高)
用法:在該實體身上播放遊戲內的音效。
Level.setChestSlot(X座標,Y座標, Z座標, 第幾格, 物品ID, 方塊副ID, 數量)
用法:在該座標箱子放入物品。
Level.setChestSlotCustomName(X座標,Y座標, Z座標, 第幾格, “名稱”)
用法:修改該座標箱子的物品名稱。
Level.setDifficulty(數字)
用法:修改遊戲困難度,由和平到困難值依序為0、1、2、3。
Level.setFurnaceSlot(X座標,Y座標, Z座標, 第幾格, 物品ID, 方塊副ID, 數量)
用法:在該座標熔爐放入物品。
Level.setGameMode(數字)
用法:修改遊戲模式,0為生存,1為創造。
Level.setGrassColor(X座標, Z座標, 顏色代碼)
用法:更改該座標的草皮顏色。
Level.setLightningLevel(強度)
用法:設置打雷強度,值為0~1。
Level.setNightMode(布林值)
用法:true會修改夜晚長度,false則回歸正常。
Level.setRainLevel(強度)
用法:設置雨勢,值為0~1,普通降雨約為0.35。
Level.setSignText(X座標,Y座標, Z座標, 第幾行, “文字內容”)
用法:設置該座標告示牌的文字。
Level.setSpawn(X座標,Y座標, Z座標)
用法:設置玩家重生點。
Level.setSpawnerEntityType(X座標,Y座標, Z座標, 實體ID)
用法:設置該座標生怪籠的生怪內容。
Level.setTile(X座標,Y座標, Z座標, 方塊ID, 副ID)
用法:在該座標設置方塊。
Level.setTime(數字)
用法:設置時間,白天為0或約為5000,晚上約為12000。
Level.spawnChicken(X座標,Y座標, Z座標,“皮膚”)
用法:生成雞。
註:之前在雜項函數就提過了,但這裡只有這2種生物。
Level.spawnCow(X座標,Y座標, Z座標,“皮膚”)
用法:生成牛。
Level.spawnMob(X座標,Y座標, Z座標,“皮膚”)
用法:生成實體。
3.5. Player#
本章重點放在Player。
Player.addExp(數字)
用法:給予玩家經驗值。
Player.addItemCreativeInv(物品ID, 數量, 副ID)
用法:把物品添加到創造背包中,數量的話由於是創造所以填1即可。
Player.addItemInventory(物品ID, 數量, 副ID)
用法:把物品添加到背包中。
Player.canFly()
用法:讓玩家可飛行。
Player.clearInventorySlot(第幾格)
用法:清空該格背包物品。註:格子從0開始算。
Player.enchant(第幾格, 附魔代碼, 附魔等級)
用法:幫物品附魔。
Player.getArmorSlot(第幾格)
用法:獲取玩家身上盔甲ID,從頭到腳依序是0~3。
Player.getArmorSlotDamage(第幾格)
用法:獲取玩家身上盔甲副ID(損害值,數字越大損壞越嚴重),依序是0~3。
Player.getCarriedItem()
用法:獲取玩家手上拿的物品ID。
Player.getCarriedItemCount()
用法:獲取玩家手上拿的物品數量。
Player.getCarriedItemData()
用法:獲取玩家手上拿的物品副ID。
Player.getDimension()
用法:獲取玩家目前所在的世界。0為地獄,1為主世界。modpescriptdup.txt裡有代碼(Dimension.XXX那些)
Player.getEnchantments(第幾格)
用法:獲取物品附魔訊息。
Player.getEntity()
用法:獲取玩家的UUID,通常用這個當玩家自己的變數。
Player.getExhaustion()
用法:獲取玩家的飢餓值消耗度,範圍0~4,0為滿腹。4開始扣飢餓值。
Player.getExp()
用法:獲取玩家目前的經驗值。
Player.getHunger()
用法:獲取玩家的表面飢餓值,範圍0~20。
Player.getInventorySlot(第幾格)
用法:獲取該背包格的物品ID。
Player.getInventorySlotCount(第幾格)
用法:獲取該背包格的物品數量。
Player.getInventorySlotData(第幾格)
用法:獲取該背包格的物品副ID。
Player.getItemCustomName(第幾格)
用法:獲取該背包格的物品名稱。
Player.getLevel()
用法:獲取玩家等級。
Player.getName(對象)
用法:獲取該玩家的名字,對象是填UUID。
Player.getPointedBlockData()
用法:獲取玩家指著的方塊副ID。註:要方便看玩家正指著甚麼方塊,請在遊戲設定裡開啟分離控制。
Player.getPointedBlockId()
用法:獲取玩家指著的方塊ID。
Player.getPointedBlockSide()
用法:獲取玩家指著的方塊的面。
Player.getPointedBlockX()
用法:獲取玩家指著的方塊X座標。
Player.getPointedBlockY()
用法:獲取玩家指著的方塊Y座標。
Player.getPointedBlockZ()
用法:獲取玩家指著的方塊Z座標。
Player.getPointedEntity()
用法:獲取玩家指著的實體。
Player.getPointedVecX()
用法:獲取玩家指著的實體X方向的速率。
Player.getPointedVecY()
用法:獲取玩家指著的實體Y方向的速率。
Player.getPointedVecZ()
用法:獲取玩家指著的實體Z方向的速率。
Player.getSaturation()
用法:獲取玩家的隱藏飢餓值,範圍為0~20。
Player.getScore()
用法:獲取玩家的分數,似乎是經驗球的蒐集多寡決定。
Player.getSelectedSlotId()
用法:獲取玩家下方物品欄選取的物品ID。
Player.getX()
用法:獲取玩家X座標。
Player.getY()
用法:獲取玩家Y座標。
Player.getZ()
用法:獲取玩家Z座標。
Player.isFlying()
用法:獲取玩家是否飛行(會傳回布林值)。
Player.isPlayer(UUID)
用法:確認是否有該玩家(傳回布林值)。
Player.setArmorSlot(第幾格, 物品ID, 副ID)
用法:設置玩家裝備,不一定要是盔甲類物品。
Player.setCanFly(布林值)
用法:給玩家設置裝備,不一定要是盔甲類物品。
Player.setExhaustion(數值)
用法:設置玩家飢餓值恢復度。
Player.setExp(數值)
用法:設置玩家經驗值。
Player.setFlying(布林值)
用法:設置玩家是否正在飛行。
Player.setHealth(數值)
用法:設置玩家血量。
Player.setHunger(數值)
用法:設置玩家的表面飢餓值,範圍0~20。
Player.setInventorySlot(第幾格, 物品ID, 數量, 副ID)
用法:設置玩家該背包格的物品。
Player.setItemCustomName(第幾格, “名稱”)
用法:設置玩家該背包格的物品名稱。
Player.setLevel(數值)
用法:設置玩家的等級。
Player.setSaturation(數值)
用法:設置玩家的隱藏飢餓值,範圍0~20。
Player.setSelectedSlotId(數值)
用法:設置玩家物品欄選擇的物品ID。
3.6. Entity#
本章重點放在Entity,主要都跟實體有關(包括玩家)。
Entity.addEffect(實體對象, 藥水效果代碼, 持續時間, 效果等級, ?, 是否顯示粒子(布林值))
用法:為實體添加藥水效果。
註:藥水效果代碼請見modpescript_dump.txt裡MobEffects.XXX那裡。
?的部分未知,填0即可。
Entity.getAll()
用法:獲取所有實體(傳回的是一個陣列)。
Entity.getAnimalAge(實體對象)
用法:獲取該實體的年齡,指對有幼年期的對象(如雞、殭屍等)有效。
Entity.getArmor(實體對象, 第幾格)
用法:獲取實體身上穿的裝備ID。 註:裝備格子是從0開始算。
Entity.getArmorCustomName(實體對象, 第幾格)
用法:獲取實體身上穿的裝備名稱。
Entity.getArmorDamage(實體對象, 第幾格)
用法:獲取實體身上穿的裝備損害值。
Entity.getEntityTypeId(實體對象)
用法:獲取實體的ID。
Entity.getExtraData(實體對象, “資訊名”)
用法:如果該實體有被使用setExtraData設定其他資訊,可用這個函數取得。
Entity.getHealth(實體對象)
用法:獲取實體的生命值。
Entity.getItemEntityCount(實體對象)
用法:獲取實體的數量(只對掉落物有效)。
Entity.getItemEntityData(實體對象)
用法:獲取實體的副ID(只對掉落物有效)。
Entity.getItemEntityId(實體對象)
用法:獲取實體的ID(只對掉落物有效)。
Entity.getMaxHealth(實體對象)
用法:獲取實體的上限生命值。
Entity.getMobSkin(實體對象)
用法:獲取實體的皮膚(傳回的是材質裡的路徑)。
Entity.getNameTag(實體對象)
用法:獲取實體的名條。
Entity.getPitch(實體對象)
用法:獲取實體的頭的垂直角度。
Entity.getRenderType(實體對象)
用法:獲取實體的模型ID。
Entity.getRider(實體對象)
用法:獲取實體的騎乘者ID(如果有的話)。
Entity.getRiding(實體對象)
用法:獲取實體騎著的實體ID。
Entity.getTarget(實體對象)
用法:獲取實體的目標(例如鐵巨人要攻擊殭屍)。
Entity.getUniqueId(實體ID)
用法:獲取實體的UUID。
Entity.getVelX(實體對象)
用法:獲取實體的X方向速率。
Entity.getVelY(實體對象)
用法:獲取實體的Y方向速率。
Entity.getVelZ(實體對象)
用法:獲取實體的Z方向速率。
Entity.getX(實體對象)
用法:獲取實體的X座標。
Entity.getY(實體對象)
用法:獲取實體的Y座標。
Entity.getYaw()
用法:獲取實體的頭的水平角度。
Entity.getZ(實體對象)
用法:獲取實體的Z座標。
Entity.isSneaking(實體對象)
用法:偵測實體是否蹲著(傳回布林值)。
Entity.remove(實體對象)
用法:移除實體。
Entity.removeAllEffects(實體對象)
用法:移除實體身上所有的藥水效果。
Entity.removeEffect(實體對象, 藥水代碼)
用法:移除實體身上特定的藥水效果。
Entity.rideAnimal(實體對象1, 實體對象2)
用法:讓實體1騎在實體2上。
Entity.setAnimalAge(實體對象, 數字)
用法:設置實體年齡。
Entity.setArmor(實體對象, 第幾格, 物品ID, 物品副ID)
用法:給實體穿裝備。
Entity.setArmorCustomName(實體對象, 第幾格, “名稱”)
用法:給實體的裝備命名。
Entity.setCape(實體對象, “材質路徑”)
用法:給實體穿披風。
註:路徑為材質包images內開始,例如mob/lop.png。
Entity.setCarriedItem(實體對象, 物品ID, 數量, 物品副ID)
用法:給實體設置手上拿的東西。
Entity.setCollisionSize(實體對象, 寬, 高)
用法:給實體設置陰影面積。
Entity.setExtraData(實體對象, “資訊名稱”, “資訊內容”)
用法:給實體設置額外資訊。
資訊名稱恆為"作者.插件名稱.資訊名稱"。
Entity.setFireTicks(實體對象, 時間)
用法:讓實體著火。
Entity.setHealth(實體對象, 生命值)
用法:設置實體生命值。
Entity.setImmobile(實體對象, 是否靜止(布林值))
用法:讓實體靜止。
Entity.setMaxHealth(實體對象, 生命值)
用法:設置實體最大血量。
Entity.setMobSkin(實體對象, “材質路徑”)
用法:設置實體皮膚。
Entity.setNameTag(實體對象, “字串”)
用法:給實體設置名條。
Entity.setPosition(實體對象, X座標, Y座標, Z座標)
用法:移動實體到指定座標。
Entity.setPositionRelative(實體對象, X座標, Y座標, Z座標)
用法:移動實體到指定的絕對座標,例如某生物和玩家之間的XYZ座標值互減的值。
Entity.setRenderType(實體對象, 模型代碼)
用法:設置實體的模型。
註:模型的代碼請參見modpescript_dump.txt裡EntityType.XXX那邊。
Entity.setRot(實體對象, 頭水平角度, 頭垂直角度)
用法:設置實體的頭角度。
Entity.setSneaking(實體對象, 是否蹲下(布林值))
用法:讓實體蹲下。
Entity.setTarget(實體對象1, 實體對象2)
用法:讓實體對象1的攻擊對象轉移到實體對象2上。
Entity.setVelX(實體對象, 速率)
用法:讓實體往X的方向移動。
Entity.setVelY(實體對象, 速率)
用法:讓實體往Y的方向移動。
Entity.setVelZ(實體對象, 速率)
用法:讓實體往Z的方向移動。
Entity.spawnMob(X座標, Y座標, Z座標, 實體代碼, “材質路徑”)
用法:生成實體。
註:實體代碼請參見modpescript_dump.txt裡EntityType.XXX那邊。
註2:要生成掉落物請使用Level.dropItem()。
3.7. Item#
本章重點放在Item,主要是跟物品有關。
Item.addCraftRecipe(物品ID, 合成出來的數量, 物品副ID, [合成的素材陣列])
用法:為物品添加合成表。合成表陣列,每一個素材的格式為「“物品ID”,“所需數量”,“物品副ID”」,如此最多可以添加9個。
Item.addFurnaceRecipe(物品ID, 燒出來的產物ID, 燒出來的產物副ID)
用法:為物品添加燒煉方法。
Item.addShapedRecipe(物品ID, 合成出來的數量, 物品副ID, ,[變數陣列] ,[合成的素材陣列])
用法:為物品添加合成表,這個會比前面的好用些。變數陣列只能為「“AAA”,“AAA”,“BBB”」其中的每個字員代表一個代號,代號可以自己換掉,若空一格則代表該格不需要放東西。這是在模擬合成台的九宮格。合成的素材陣列則為「“A”,“物品ID”,“物品副ID”」即是用代號來對應物品,如此重複,最多可以用9個。
Item.defineArmor(物品ID, “在物品欄裡的材質”, 源碼, “裝備名稱”, “裝備後的材質路徑”, 防禦力, 耐久度, 裝甲代碼)
用法:添加新的裝備。
源碼填0即可。
裝甲代碼請參考modpescript_dump.txt裡ArmorType.XXX那邊,目前只有頭盔、胸甲、護腿、靴子。
Item.getMaxDamage(物品ID)
用法:獲取該物品最大耐久度。
Item.getMaxStackSize(物品ID)
用法:獲取該物品最大堆疊量。例如雪球是16、泥土是64。
Item.getName(物品ID, 物品副ID, 布林值)
用法:獲取物品的名稱。
拿羊毛舉例,布林值若為true則回傳的結果為「tile.cloth.name」可以給ModPE.langEdit()用。
若為false則傳回目前語言下,該物品的名稱,即「羊毛」。
Item.getTextureCoords(物品ID, 物品副ID)
用法:獲取該物品的材質圖片裡的座標(回傳的陣列內容分別為Y軸起點、X軸起點、Y軸終點、X軸終點、Y軸高度、X軸寬度)。
Item.getUseAnimation(物品ID)
用法:獲取物品攻擊時使用的動畫。
Item.internalNameToId(“物品名稱”)
用法:未知。
Item.isValidItem(物品ID)
用法:檢測該物品是否有效(存在),傳回的是布林值。
Item.setCategory(物品ID, 分類代碼)
用法:設置物品在合成台、背包裡顯示的分類。
分類代碼請參見modpescript_dump.txt裡ItemCategory.XXX的那邊。
Item.setEnchantType(物品ID, 附魔代碼, 布林值)
用法:設置/刪除物品可以附的附魔。
布林值填true則為其添加這個附魔;false則刪除這個附魔。
Item.setHandEquipped(物品ID, 布林值)
用法:設置物品拿在手上的姿勢是否像握劍一樣(直立)。
Item.setMaxDamage(物品ID, 耐久度)
用法:設置物品的最大耐久度。
Item.setProperties(物品ID, {JSON內容})
用法:給物品設置JSON形式的屬性,可以達到局部修改的效果。
Json內容的格式如下,這些屬性有沒有都沒關係:
{
"icon": "遊戲內物品名稱",
"category": "分類代碼",
"use_animation": "使用的動畫",
"use_duration": 10,
"foil": true,
"hover_text_color": "顏色代碼",
"food": {
"nutrition": 5,
"saturation_modifier": "飢餓值上升幅度",
"is_meat": false
}
}
use_duration為作用時間,foil為阻止原本效果,nutuition為回復量,is_meat為設置是否為肉類。
Item.setStackedByData(物品ID, 布林值)
用法:給物品設置為是否照附ID堆疊,例如橡木和樺木的共用同一個ID,但是卻不會堆疊在一起。true為照附ID;false為不照附ID。
Item.setUseAnimation(物品ID, 動畫代碼)
用法:給物品設置攻擊時使用的動畫。動畫代碼請參見modpescript_dump.txt裡UseAnimation.XXX那邊。
Item.translatedNameToId(“物品名稱”)
用法:未知。
3.8. Block#
本章重點放在Block,主要跟方塊有關。
Block.defineBlock(方塊ID, “‘方塊名稱”, [材質陣列], 可破壞的工具ID, 是否不透明, 方塊模型代碼)
用法:添加新方塊。材質陣列裡的命名規則同ModPE.setItem()。格式是為「[“材質名”,0]」依序可填6組,若只填一個則六面都使用這個材質。方塊模型代碼請參見modpscrpit_dump.txt裡的BlockRenderType.XXX那邊。
Block.defineLiquidBlock(方塊ID, “‘方塊名稱”, [材質陣列], 是否流動(布林值), 流動半徑)
用法:添加液體類的新方塊,不設定流動半徑的話㑹很恐怖。
Block.getAllBlockIds()
用法:獲取所有方塊ID(傳回的是陣列)。
Block.getDestroyTime(方塊ID, 方塊副ID)
用法:獲取該方塊破壞所需的時間。
Block.getFriction(方塊ID, 方塊副ID)
用法:獲取玩家走在該方塊上的移動速度。 正常約為0.60,水或冰約為0.98。
Block.getRenderType(方塊ID)
用法:獲取該方塊的模型。
Block.getTextureCoords(方塊ID, 哪一面, 方塊副ID)
用法:獲取該方塊的材質座標,用法同Item.getTextureCoords()。方塊的哪一面可以使用代碼表示,請參見modpescript_dump.txt裡BlcokFace.XXX那邊。
Block.setColor(方塊ID, Hex顏色代碼)
用法:設置該方塊的顏色(直接在表面覆蓋,因此只適用於草皮、白羊毛等)。
Block.setDestroyTime(方塊ID, 破壞時間)
用法:設置該方塊的破壞時間。
Block.setExplosionResistance(方塊ID, 爆炸抗性)
用法:設置該方塊的爆炸抗性。
Block.setFriction(方塊ID, 移動速度)
用法:設置玩家走在該方塊上的移動速度。
Block.setLightLevel(方塊ID, 亮度)
用法:設置該方塊的亮度,範圍為0~15。
Block.setLightOpacity(方塊ID, 遮光度)
用法:設置該方塊的透光度,範圍為0~15。
Block.setRedstoneConsumer(方塊ID, 是否可接受紅石信號(布林值))
用法:設置方塊是否能被紅石觸發。
Block.setRenderLayer(方塊ID, 圖層代碼)
用法:設置方塊的圖層。
Block.setRenderType(方塊ID, 方塊模型代碼)
用法:設置方塊的模型。
Block.setShape(方塊ID, X軸起點, Y軸起點, Z軸起點, X軸寬度, Y軸寬度, Z軸寬度, 方塊副ID)
用法:設置方塊大小。注意:設太大會爆出物品欄且破圖。
modpescript_dump裡有寫到的函數到這裡就此告一段落。
3.9. Renderer & Model#
本章重點放在Renderer和其附屬的Model。
Renderer此分類在modpescript_dump.txt裡沒有列出來,這些函數是給實體做模型用的。
除非你的想像力真的很豐富,否則除了建模宣告外其他部分還是用電腦做的好,關於模型的實作會在Part 5另開新篇教學。
如何把用Techne做的模型轉成插件裡的格式?Techne Porter!
下面的Renderer只是方便表示用的變數,要看實際情況修改。
Renderer.createHumanoidRenderer()
用法:宣告建立一個人類形狀的模型。
Renderer.getModel()
用法:獲取該模型。
Renderer.getRenderType()
用法:獲取該模型的代碼ID。
Renderer.renderType
用法:這不是函數,用這個可代表該模型,Entity.setRenderType()時用這個。
下方的Model是代表Renderer.getModel()的變數。
Model.getPart(“部位名稱”)
用法:選取模型的特定部位。
頭:head
身體:body
右手:rightArm
左手:leftArm
右腳:rightLeg
左腳:leftLeg
下方的ModelPart是代表Model.getPart()的變數。
ModelPart.clear()
用法:清除該部位的模型。
ModelPart.setTextureOffset(X軸起點, Y軸起點, 布林值)
用法:在材質中平移。布林值功能未知。
ModelPart.addBox(X座標, Y座標 , Z座標 , X軸寬度 ,Y軸寬度 ,Z軸寬度)
用法:在該部位添加模型。
ModelPart.setTextureSize(寬, 高)
用法:設置該部位的材質大小,目前似乎無效。
ModelPart.setRotationPoint(X座標, Y座標, Z座標)
用法:設置該部位的轉動點,避免生物頭和手腳動起來很詭異。