MiaoScript/src/main/resources/dev-plugins/ItemTag.js

89 lines
2.5 KiB
JavaScript

'use strict';
/*global Java, base, module, exports, require*/
var event = require('api/event');
var task = require('api/task');
var http = require('http');
var fs = require('fs');
var Keys;
var description = {
name: 'ItemTag',
version: '1.0',
author: 'MiaoWoo'
};
var itemConfig;
function load() {
var itemFile = self.file('item.yml');
task.async(function() {
if (!itemFile.exists()) {
fs.save(itemFile, http.get('https://data.yumc.pw/config/Item_zh_CN.yml'))
}
itemConfig = self.getConfig('item.yml')
})
}
function enable() {
switch (DetectServerType) {
case ServerType.Bukkit:
var i = require('api/item').create('STONE')
if (!i.setCustomName) { return }
event.on(self, 'ItemMergeEvent', function(event) {
bukkit(event.target, event.entity.itemStack.amount + event.target.itemStack.amount);
});
event.on(self, 'ItemSpawnEvent', function(event) {
if (event.entity.itemStack) {
bukkit(event.entity, event.entity.itemStack.amount);
}
});
break;
case ServerType.Sponge:
Keys = Java.type('org.spongepowered.api.data.key.Keys');
event.on(self, 'ItemMergeItemEvent', function(event) {
// Sponge 暂未实现当前事件
});
event.on(self, 'SpawnEntityEvent', function(event) {
event.entities.forEach(function(entity) {
if (entity.type.name === "item") sponge(entity);
})
});
break;
}
}
function bukkit(item, amount) {
item.setCustomName('§b' + getItemName(item.itemStack.type) + getItemCount(amount));
item.setCustomNameVisible(true);
}
function sponge(entity) {
var itemOptional = entity.get(Keys['REPRESENTED_ITEM']);
if (itemOptional.isPresent()) {
var item = itemOptional.get();
var itemName = '§b' + getItemName(item.type.name.split(':')[1]) + getItemCount(item.count);
entity.offer(Keys['DISPLAY_NAME'], org.spongepowered.api.text.Text.of(itemName));
entity.offer(Keys['CUSTOM_NAME_VISIBLE'], true);
}
}
function getItemName(name) {
return itemConfig[(name + '').toUpperCase()] || name;
}
function getItemCount(amount) {
return amount === 1 ? "" : "*" + amount;
}
function disable() {
console.log('卸载', description.name, '插件!');
}
module.exports = {
description: description,
load: load,
enable: enable,
disable: disable
};