禁用VoxelMap和JourneyMap等功能的方法
总结经过
因为找不到关于MiniMap MOD功能限制方法的日语页面,所以我整理了一下。
机制
只需要提供一个选项:可以通过发送特定代码来限制各迷你地图MOD的功能。本次使用此方法来禁用了雷达等功能。此外,只需发送颜色代码,因此客户端只会显示空行。
適当にプラグインを作ってみよう
イベントリスナーの登録とか色々省いていますが大体こんな感じです。
10Tickほど遅延させているのは参加してすぐだと無効化されない場合があるためです。
ワールドが変わるごとに送信する必要があります。
他に自分で制限したいものがあれば必要に応じて追加を行ってください。
Googleで調べればすぐにコードは出てきます。
private static final List<String> miniMapCodeList;
static {
List<String> list = new ArrayList<>();
list.add("§r§f §r§f §r§2 §r§0 §r§4 §r§8 §r");
list.add("§r§f §r§f §r§4 §r§0 §r§9 §r§6 §r");
list.add("§r§3 §r§9 §r§2 §r§0 §r§0 §r§2 §r");
list.add("§r§3 §r§6 §r§3 §r§6 §r§3 §r§6 §r");
list.add("§r§f §r§f §r§1 §r§0 §r§2 §r§4 §r");
list.add("§r§3 §r§9 §r§2 §r§0 §r§0 §r§1 §r");
list.add("§r§3 §r§9 §r§2 §r§0 §r§0 §r§3 §r");
list.add("§r§3 §r§6 §r§3 §r§6 §r§3 §r§6 §r");
list.add("§r§f §r§f §r§1 §r§0 §r§2 §r§f §r§f §r§2 §r§0 §r§4 §r§3 §r§9 §r§2 §r§0 §r§0 §r§3 §r§9 §r§2 §r§0 §r§0 §r§3 §r§9 §r§2 §r§0 §r§0 §r");
list.add("§r§3 §r§6 §r§3 §r§6 §r§3 §r§6 §r§e §r");
list.add("§r§3 §r§6 §r§3 §r§6 §r§3 §r§6 §r§d §r");
list.add("§r§f §r§f §r§2 §r§0 §r§4 §r§8 §r");
list.add("§r§f §r§f §r§4 §r§0 §r§9 §r§6 §r");
list.add("§r§f §r§f §r§1 §r§0 §r§2 §r§4 §r");
list.add("§r§3 §r§9 §r§2 §r§0 §r§0 §r§2 §r");
list.add("§r§3 §r§9 §r§2 §r§0 §r§0 §r§1 §r");
list.add("§r§3 §r§9 §r§2 §r§0 §r§0 §r§3 §r");
miniMapCodeList = Collections.unmodifiableList(list);
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
final Player player = event.getPlayer();
Bukkit.getScheduler().runTaskLater(YOUR_PLUGIN_INSTANCE, new Runnable() {
@Override
public void run() {
for (String code : miniMapCodeList) {
player.sendMessage(code);
}
}
}, 5L);
}
@EventHandler
public void onPlayerChangedWorld(PlayerChangedWorldEvent event) {
final Player player = event.getPlayer();
Bukkit.getScheduler().runTaskLater(YOUR_PLUGIN_INSTANCE, new Runnable() {
@Override
public void run() {
for (String code : miniMapCodeList) {
player.sendMessage(code);
}
}
}, 5L);
}
最后
如果有其他可以限制功能的小地图MOD,请在评论中告诉我。
似乎也可以用Skript来实现,但我不会写。