1.12.2 npc制作尸體
//有無好用的網(wǎng)盤
//修復(fù)了重啟游戲后tempMap丟失導(dǎo)致的無物品自動消失失效(就是打開時自動寫入tempMap)
//尸體系統(tǒng) 需要TkkGameLib1.4.0+
//author Praise_suffering 2kk2
//尸體npc腳本
function interact(event){
var lib=Java.type("com.twokktwo.tkklib.TkkGameLib")
var display=event.npc.getDisplay()
var id=display.getTitle()
var date=lib.dateMap
lib.tempMap.putIfAbsent(id,event.npc)
if(date.hasKey(id)){
var chest=date.get(id)
chest.openForPlayer(event.player.getMCEntity())
}else{
event.player.message("尸體的數(shù)據(jù)丟失")
event.npc.despawn()
lib.tempMap.remove(id)
date.getHashMap().remove(id)
}
}
function died(event){
var lib=Java.type("com.twokktwo.tkklib.TkkGameLib")
var display=event.npc.getDisplay()
var id=display.getTitle()
var date=lib.dateMap
var chest=date.getHashMap().get(id)
var inventory=chest.inventory
if(inventory==null){
lib.tempMap.remove(id)
date.getHashMap().remove(id)
return;
}
var x=inventory.func_70302_i_()
var i;
var item;
var world=event.npc.getWorld().getMCWorld()
var EntityItem = Java.type("net.minecraft.entity.item.EntityItem");
var ItemStack = Java.type("net.minecraft.item.ItemStack")
var newEntityItem;
for(i=0;i<x;i++){
item=inventory.func_70304_b(i)
newEntityItem = new EntityItem(world,event.npc.getX(),event.npc.getY(),event.npc.getZ(),item)
newEntityItem.field_145804_b=10
world.func_72838_d(newEntityItem)
//inventory.func_70299_a(i,new ItemStack(null))
}
lib.tempMap.remove(id)
date.getHashMap().remove(id)
}
//玩家尸體生成
function died(event){
var lib=Java.type("com.twokktwo.tkklib.TkkGameLib")
var player=event.player;
var world=player.getWorld()
var UUID=Java.type("java.util.UUID")
//生成uuid以及尸體
var uuid=UUID.randomUUID().toString()
var deadbody=world.getClone(9,'尸體實例');
deadbody.setX(player.getX())
deadbody.setY(player.getY()+0.5)
deadbody.setZ(player.getZ())
//deadbody.getDisplay().setSkinPlayer(player.getName())
//生成容器
var FastMenu=Java.type("com.twokktwo.tkklib.tool.tkkFastChestMenu")
var chest=new FastMenu(5*9,player.getName(),true,uuid)
chest.inventory.cloneJSOpen=true;
chest.inventory.cloneJS=CloseEvent.toString()
function CloseEvent(e){
if(e.end){//關(guān)閉后
if(e.inventory.func_191420_l()){
var lib=Java.type("com.twokktwo.tkklib.TkkGameLib")
var date=lib.dateMap
date.getHashMap().remove(e.inventory.id)
var deadbody=lib.tempMap.get(e.inventory.id)
if(deadbody!=null){deadbody.despawn()}
}
}
}
//設(shè)置容器 如果要做不掉落從這改
var inventoyr=player.getInventory()
var i=inventoyr.getSize()
var item;
for(var x=0;x<i;x++){
item=inventoyr.getSlot(x)
chest.setItem(x,item.getMCItemStack())
inventoyr.setSlot(x,null);
}
player.updatePlayerInventory()
//配置
var date=lib.dateMap
date.set(uuid,chest)
lib.tempMap.put(uuid,deadbody)
deadbody.getDisplay().setTitle(uuid)
//deadbody.updateClient()
world.spawnEntity(deadbody)
player.message("§c你的遺物坐標(biāo) X:"+Math.floor(deadbody.getX())+",Y:"+Math.floor(deadbody.getY())+",Z:"+Math.floor(deadbody.getZ()))
}