切换风格

默认晚霞 雪山 粉色心情 伦敦 花卉 绿野仙踪 加州 白云 星空 薰衣草 城市 简约黑色 龙珠
回复 0

13

主题

37

帖子

470

积分

大区版主

Rank: 7Rank: 7Rank: 7

积分
470
人气
14 点
钻石粒
582 粒
贡献
0 点
论坛币
81 个
爱心
0 点
[1.7.10][ECMA]Lore和属性同步[复制链接]
发表于 2019-9-1 19:44:04 | 显示全部楼层 |阅读模式
脚本例子
脚本版本: 0.1
适用版本: 1.7.10 
编写语言: ECMA
最后更新: 2019-09-01
代码版权: 强版权

请注册论坛会员,已便查看高清图片!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 思望文宣 于 2019-9-1 19:48 编辑

这里写的是个让Lore显示物品属性,颜色啥的自己加自己看代码完事了
var player = world.getAllServerPlayers();
for(var i in player){
var box = player[i].getInventory();
for(var s in box){
if(box[s] != null){

var nbt = getAttributeModifiers(box[s]);
for(var i in nbt){
nbt[i] = nbt[i]+""
if(nbt[i].indexOf("generic.maxHealth") != -1){
for(var x = nbt[i].indexOf("amount")+7; x < nbt[i].indexOf(","); x++){
var amount = (amount == null)?nbt[i][x]:amount+nbt[i][x];
}
if(nbt[i][x] == ","){
var nbt2 = box[s].getTag("display");
var nbt3 = nbt2+"";
try{
var hangShu = box[s].getMCItemStack().field_77990_d.func_74775_l("display").func_74781_a("Lore").func_74745_c();
for(z=0;z<hangShu;z++){
var panDuan = box[s].getMCItemStack().field_77990_d.func_74775_l("display").func_74781_a("Lore").func_150307_f(z);
if(panDuan.indexOf("生命值为:") != -1){
setItemLore(box[s],z,"生命值为:"+amount);
}}}catch(e){}
//npc.say("生命值为:"+amount);
amount = null;
}}
if(nbt[i].indexOf("generic.attackDamage") != -1){
for(var x = nbt[i].indexOf("amount")+7; x < nbt[i].indexOf(","); x++){
var amount = (amount == null)?nbt[i][x]:amount+nbt[i][x];
}
if(nbt[i][x] == ","){
var nbt2 = box[s].getTag("display");
var nbt3 = nbt2+"";
try{
var hangShu = box[s].getMCItemStack().field_77990_d.func_74775_l("display").func_74781_a("Lore").func_74745_c();
for(z=0;z<hangShu;z++){
var panDuan = box[s].getMCItemStack().field_77990_d.func_74775_l("display").func_74781_a("Lore").func_150307_f(z);
if(panDuan.indexOf("攻击力为:") != -1){
setItemLore(box[s],z,"攻击力为:"+amount);
}}}catch(e){}
//npc.say("攻击力为:"+amount);
amount = null;
}}
if(nbt[i].indexOf("generic.movementSpeed") != -1){
for(var x = nbt[i].indexOf("amount")+7; x < nbt[i].indexOf(","); x++){
var amount = (amount == null)?nbt[i][x]:amount+nbt[i][x];
}
if(nbt[i][x] == ","){
var nbt2 = box[s].getTag("display");
var nbt3 = nbt2+"";
try{
var hangShu = box[s].getMCItemStack().field_77990_d.func_74775_l("display").func_74781_a("Lore").func_74745_c();
for(z=0;z<hangShu;z++){
var panDuan = box[s].getMCItemStack().field_77990_d.func_74775_l("display").func_74781_a("Lore").func_150307_f(z);
if(panDuan.indexOf("速度为:") != -1){
setItemLore(box[s],z,"速度为:"+amount);
}}}catch(e){}
//npc.say("速度为:"+amount);
amount = null;
}}
}

}}}
var NBTTagString = Java.type("net.minecraft.nbt.NBTTagString");
function setItemLore(item,line,lore){
try{
NBTTagString=Java.type("net.minecraft.nbt.NBTTagString")
loreList=item.getMCItemStack().field_77990_d.func_74775_l("display").func_74781_a("Lore")
loreList.func_150304_a(line,new NBTTagString(lore))
}catch(err){print("在操作lore发生异常,可能是因为没有lore 请将报错提供给作者:"+err)        }
//修改物品lore某一行
/*
*ScriptItemStack item:要修改lore的物品
*int line:要修改lore的行数
*String lore:替换原来lore的lore
*/
}
function getAttributeModifiers(item){
var SharedMonsterAttributes=Java.type("net.minecraft.entity.SharedMonsterAttributes");
var nbt;
var nbtlist;
var attributeModifiers=[];
this.AttributeModifier=function(attributeModifier,attributeName){
     this.attributeModifier=attributeModifier;
     this.attributeName=attributeName;
     this.getID=function(){
      return this.attributeModifier.func_111167_a();
     }
     this.getName=function(){
      return this.attributeModifier.func_111166_b();
     }
     this.getAttributeName=function(){
     return this.attributeName;
     }
     this.getAmount=function(){
      return this.attributeModifier.func_111164_d();
     }
     this.getOperation=function(){
      return this.attributeModifier.func_111169_c();
     }
     this.toString=function(){
      return this.attributeName+":"+this.attributeModifier;
     }
    /*
    *UUID getID():获取属性UUID
    *String getName():获取名字
    *String getAttributeName():获取属性名字
    *double getAmount():获取属性的值
    *int getOperation():获取属性的Operation
    */
    }
nbt=item.getMCItemStack().field_77990_d;
    if(nbt==null){
     return;
    }
nbtlist=nbt.func_150295_c("AttributeModifiers",10);
    for(var i=0;i<nbtlist.func_74745_c();i++){
     attributeModifiers[i]=new this.AttributeModifier(SharedMonsterAttributes.func_111259_a(nbtlist.func_150305_b(i)),
     nbtlist.func_150305_b(i).func_74779_i("AttributeName"));
    }
return attributeModifiers;
/*
*为物品添加属性
*ScriptItemStack item:要获取属性(全部)的物品
*返回
*getAttributeModifiers.AttributeModifier[] attributeModifiers:属性数组
*/
}

  • 声明:
  • 你不能转载该帖
  • 你不能声称你是作者




莫得
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|自定义NPC脚本中文论坛 ( 蜀ICP备17005795号-3 )

GMT+8, 2020-7-3 02:12 , Processed in 0.078656 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部