mirror of
				https://e.coding.net/circlecloud/YumCore.git
				synced 2025-11-03 23:06:02 +00:00 
			
		
		
		
	@@ -14,6 +14,7 @@ import org.bukkit.inventory.meta.ItemMeta;
 | 
				
			|||||||
import pw.yumc.YumCore.bukkit.Log;
 | 
					import pw.yumc.YumCore.bukkit.Log;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 | 
					 * 物品序列化类
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * @since 2016年9月9日 下午3:47:17
 | 
					 * @since 2016年9月9日 下午3:47:17
 | 
				
			||||||
 * @author 喵♂呜
 | 
					 * @author 喵♂呜
 | 
				
			||||||
@@ -31,7 +32,7 @@ public abstract class ItemSerialize {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public static String $(final ItemStack item) {
 | 
					    public static String $(final ItemStack item) {
 | 
				
			||||||
        final String result = itemSerialize.parse(item);
 | 
					        final String result = itemSerialize.parse(item);
 | 
				
			||||||
        Log.debug(String.format("%s物品序列化结果: %s", itemSerialize.getName(), result));
 | 
					        Log.d("%s物品序列化结果: %s", itemSerialize.getName(), result);
 | 
				
			||||||
        return result;
 | 
					        return result;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,7 +77,7 @@ public abstract class ItemSerialize {
 | 
				
			|||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public String parse(final ItemStack item) {
 | 
					        public String parse(final ItemStack item) {
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                return new JsonBuilder((nmsSaveNBTMethod.invoke(asNMSCopyMethod.invoke(null, item), nmsNBTTagCompound.newInstance()).toString())).toString();
 | 
					                return nmsSaveNBTMethod.invoke(asNMSCopyMethod.invoke(null, item), nmsNBTTagCompound.newInstance()).toString();
 | 
				
			||||||
            } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | InstantiationException e) {
 | 
					            } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | InstantiationException e) {
 | 
				
			||||||
                itemSerialize = new Manual();
 | 
					                itemSerialize = new Manual();
 | 
				
			||||||
                return itemSerialize.parse(item);
 | 
					                return itemSerialize.parse(item);
 | 
				
			||||||
@@ -168,7 +169,7 @@ public abstract class ItemSerialize {
 | 
				
			|||||||
         * @return 物品字符串
 | 
					         * @return 物品字符串
 | 
				
			||||||
         */
 | 
					         */
 | 
				
			||||||
        private String serialize(final ItemStack item) {
 | 
					        private String serialize(final ItemStack item) {
 | 
				
			||||||
            final JsonBuilder json = new JsonBuilder("{");
 | 
					            final StringBuffer json = new StringBuffer("{");
 | 
				
			||||||
            json.append(String.format("id:\"%s\",Damage:\"%s\"", item.getTypeId(), item.getDurability()));
 | 
					            json.append(String.format("id:\"%s\",Damage:\"%s\"", item.getTypeId(), item.getDurability()));
 | 
				
			||||||
            if (item.getAmount() > 1) {
 | 
					            if (item.getAmount() > 1) {
 | 
				
			||||||
                json.append(String.format(",Count:%s", item.getAmount()));
 | 
					                json.append(String.format(",Count:%s", item.getAmount()));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,11 @@
 | 
				
			|||||||
package pw.yumc.YumCore.tellraw;
 | 
					package pw.yumc.YumCore.tellraw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Json构建
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @since 2016年9月14日 上午11:55:36
 | 
				
			||||||
 | 
					 * @author 喵♂呜
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
public class JsonBuilder {
 | 
					public class JsonBuilder {
 | 
				
			||||||
    public static final String[] REPLACEMENT_CHARS;
 | 
					    public static final String[] REPLACEMENT_CHARS;
 | 
				
			||||||
    static {
 | 
					    static {
 | 
				
			||||||
@@ -59,6 +65,10 @@ public class JsonBuilder {
 | 
				
			|||||||
        json.deleteCharAt(json.length() - 1);
 | 
					        json.deleteCharAt(json.length() - 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isEmpty() {
 | 
				
			||||||
 | 
					        return json.length() == 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public int length() {
 | 
					    public int length() {
 | 
				
			||||||
        return json.length();
 | 
					        return json.length();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ public class MessagePart {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 消息文本
 | 
					     * 消息文本
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public String text = "";
 | 
					    public String text;
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 点击操作
 | 
					     * 点击操作
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
@@ -59,18 +59,18 @@ public class MessagePart {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public void writeJson(final StringBuffer str) {
 | 
					    public void writeJson(final StringBuffer str) {
 | 
				
			||||||
        str.append("{");
 | 
					        str.append("{");
 | 
				
			||||||
        str.append(String.format(TEXT_FORMAT, text));
 | 
					        str.append(String.format(TEXT_FORMAT, new JsonBuilder(text)));
 | 
				
			||||||
        if (clickActionName != null) {
 | 
					        if (clickActionName != null) {
 | 
				
			||||||
            str.append(",");
 | 
					            str.append(",");
 | 
				
			||||||
            str.append(String.format(CLICK_FORMAT, clickActionName, clickActionData));
 | 
					            str.append(String.format(CLICK_FORMAT, clickActionName, new JsonBuilder(clickActionData)));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (hoverActionName != null) {
 | 
					        if (hoverActionName != null) {
 | 
				
			||||||
            str.append(",");
 | 
					            str.append(",");
 | 
				
			||||||
            str.append(String.format(HOVER_FORMAT, hoverActionName, hoverActionData));
 | 
					            str.append(String.format(HOVER_FORMAT, hoverActionName, new JsonBuilder(hoverActionData)));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (insertionData != null) {
 | 
					        if (insertionData != null) {
 | 
				
			||||||
            str.append(",");
 | 
					            str.append(",");
 | 
				
			||||||
            str.append(String.format(INSERT_FORMAT, insertionData));
 | 
					            str.append(String.format(INSERT_FORMAT, new JsonBuilder(insertionData)));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        str.append("}");
 | 
					        str.append("}");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,6 +10,7 @@ import org.bukkit.command.CommandSender;
 | 
				
			|||||||
import org.bukkit.entity.Player;
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
import org.bukkit.inventory.ItemStack;
 | 
					import org.bukkit.inventory.ItemStack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import pw.yumc.YumCore.bukkit.Log;
 | 
				
			||||||
import pw.yumc.YumCore.bukkit.P;
 | 
					import pw.yumc.YumCore.bukkit.P;
 | 
				
			||||||
import pw.yumc.YumCore.bukkit.compatible.C;
 | 
					import pw.yumc.YumCore.bukkit.compatible.C;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -276,6 +277,7 @@ public class Tellraw {
 | 
				
			|||||||
            messagePart.writeJson(msg);
 | 
					            messagePart.writeJson(msg);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        msg.append("]");
 | 
					        msg.append("]");
 | 
				
			||||||
 | 
					        Log.debug(msg.toString());
 | 
				
			||||||
        return msg.toString();
 | 
					        return msg.toString();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user