我写一个我的世界服务器JAVA120版本fabric记录玩家挖掘方块并通过计分板显示数据的模组能否提供的代码参考给我
当然可以!以下是一个示例代码,实现了记录玩家挖掘方块并通过计分板显示数据的功能。
首先,你需要创建一个新的Java类,例如"BlockCounterMod",并添加以下代码:
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents;
import net.minecraft.scoreboard.Scoreboard;
import net.minecraft.scoreboard.ScoreboardObjective;
import net.minecraft.scoreboard.ScoreboardPlayerScore;
import net.minecraft.scoreboard.ScoreboardPlayerScoreSet;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.LiteralText;
import net.minecraft.util.Formatting;
public class BlockCounterMod implements ModInitializer {
private static final String SCOREBOARD_OBJECTIVE_NAME = "blockCounter";
@Override
public void onInitialize() {
PlayerBlockBreakEvents.AFTER.register((world, player, pos, state, blockEntity) -> {
if (!world.isClient()) {
increasePlayerScore(player);
}
});
}
private void increasePlayerScore(ServerPlayerEntity player) {
Scoreboard scoreboard = player.getServer().getScoreboard();
ScoreboardObjective objective = scoreboard.getNullableObjective(SCOREBOARD_OBJECTIVE_NAME);
if (objective == null) {
objective = scoreboard.addObjective(SCOREBOARD_OBJECTIVE_NAME, ScoreboardCriterion.DUMMY,
new LiteralText("Blocks Mined").formatted(Formatting.YELLOW), ScoreboardCriterion.RenderType.INTEGER);
}
ScoreboardPlayerScore score = scoreboard.getPlayerScore(player.getEntityName(), objective);
score.incrementScore();
player.sendMessage(new LiteralText("你已挖掘了 " + score.getScore() + " 个方块!").formatted(Formatting.GREEN), false);
}
}
这个代码中,我们使用了Fabric API的PlayerBlockBreakEvents事件来监听玩家挖掘方块的事件。当玩家挖掘方块后,increasePlayerScore方法会被调用,它会增加玩家的得分并在聊天栏显示挖掘方块数量。
请注意,这只是一个简单的示例代码,你可能需要根据你的需求进行修改和扩展。同时,确保你已经正确设置了你的开发环境和Gradle构建文件。
希望这个示例能对你有所帮助,如果有任何问题,请随时提问
原文地址: https://www.cveoy.top/t/topic/hPz6 著作权归作者所有。请勿转载和采集!