鹊桥
首页
介绍
部署
配置文件
命令
  • V2 事件
  • V1 事件
  • V2 API
  • V1 API
常见问题
  • 标准开发
  • 快速开发
对接
GitHub
首页
介绍
部署
配置文件
命令
  • V2 事件
  • V1 事件
  • V2 API
  • V1 API
常见问题
  • 标准开发
  • 快速开发
对接
GitHub
  • 快速开发
  • 主类编写
  • 事件监听
  • utils

    • 工具包
  • handle

    • API 处理实现
    • 命令返回信息实现
  • 命令

工具包

工具包用来封装一些复用性较高的代码,方便在事件处理器、命令等模块中调用。

参考

点击展开
package com.github.theword.queqiao.utils;

import com.github.theword.queqiao.tool.GlobalContext;
import com.github.theword.queqiao.tool.event.model.PlayerModel;
import com.github.theword.queqiao.tool.event.model.achievement.AchievementModel;
import com.github.theword.queqiao.tool.event.model.achievement.DisplayModel;
import com.google.gson.JsonElement;
import net.minecraft.advancements.Advancement;
import net.minecraft.advancements.DisplayInfo;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentTranslation;


public class ForgeTool {

    /**
     * 将Forge的玩家对象转换为通用玩家模型
     * 
     * @param forgeServerPlayer Forge服务器玩家对象
     * @return 通用玩家模型
     */
    public static PlayerModel getForgePlayer(EntityPlayerMP forgeServerPlayer) {
        PlayerModel playerModel = new PlayerModel();
        playerModel.setNickname(forgeServerPlayer.getName());
        playerModel.setUuid(forgeServerPlayer.getUniqueID());
        playerModel.setAddress(forgeServerPlayer.getPlayerIP());
        playerModel.setHealth((double) forgeServerPlayer.getHealth());
        playerModel.setMaxHealth((double) forgeServerPlayer.getMaxHealth());
        playerModel.setExperienceLevel(forgeServerPlayer.experienceLevel);
        playerModel.setExperienceProgress((double) forgeServerPlayer.experience);
        playerModel.setTotalExperience(forgeServerPlayer.experienceTotal);
        playerModel.setOp(forgeServerPlayer.canUseCommand(4, "op"));
        playerModel.setWalkSpeed((double) forgeServerPlayer.getAIMoveSpeed());
        playerModel.setX(forgeServerPlayer.posX);
        playerModel.setY(forgeServerPlayer.posY);
        playerModel.setZ(forgeServerPlayer.posZ);
        return playerModel;
    }

    /**
     * 将Forge的成就对象转换为通用成就模型
     * 
     * @param advancement Forge成就对象
     * @return 通用成就模型
     */
    public static AchievementModel getForgeAchievement(Advancement advancement) {
        AchievementModel achievementModel = new AchievementModel();
        DisplayModel displayModel = new DisplayModel();
        achievementModel.setKey(advancement.getId().toString());
        DisplayInfo displayInfo = advancement.getDisplay();
        displayModel.setFrame(displayInfo.getFrame().toString());
        displayModel.setTitle(((TextComponentTranslation) displayInfo.getTitle()).getKey());
        displayModel.setDescription(((TextComponentTranslation) displayInfo.getDescription()).getKey());
        achievementModel.setDisplay(displayModel);
        return achievementModel;
    }

    /** 调用原版方法反序列化Json文本组件, 并将异常输出到日志
     * @param jsonElement 消息体
     * @return 文本组件, 或null如果解析出错
     */
    public static ITextComponent parseJsonToTextWrapped(JsonElement jsonElement) {
        try {
            return ITextComponent.Serializer.fromJsonLenient(jsonElement.toString());
        } catch (Throwable e) {
            GlobalContext.getLogger().error("Error handling Broadcast Message {} : ", jsonElement, e);
        }
        return null;
    }
}
Edit this page
最近更新: 2025/12/2 15:22
Contributors: 17TheWord