それは醜いですが、それは動作します:
import net.minecraft.server.v1_11_R1.WorldMap;
import net.minecraft.server.v1_11_R1.WorldServer;
public static MapView createMap(World world, int id) {
WorldServer ws = ((CraftWorld) world).getHandle();
String name = "map_" + id;
WorldMap map = new WorldMap(name);
map.scale = 3;
map.a(ws.getWorldData().b(), ws.getWorldData().d(), map.scale);
map.map = (byte) ws.dimension;
map.c();
ws.getServer().getServer().worlds.get(0).a(name, map);
MapInitializeEvent event = new MapInitializeEvent(map.mapView);
Bukkit.getServer().getPluginManager().callEvent(event);
return map.mapView;
}
のみスピゴット1.11.2でテストされますが、この方法は、いくつかの他のバージョンで動作するはずです。私は、カスタムIDを使用するようにNMSの既存のコードを変更しました。
これはかなり低いレベルのNMSですので、この方法では今からいくつかの更新が機能しなくなっても驚かないでしょう。
なぜこの機能が必要ですか? NMSを使うことはお勧めできません。 – Kerooker
@Kerooker私は1分ごとに最新の画像を表示しています。私は他のマップを上書きする危険を冒したくありません。私は10000を選択しました。なぜなら、ユーザーが生成したマップはおそらくそのIDに到達しないからです。また、NMSをお勧めしませんか?バージョン間で破損する可能性があるのでしょうか、それとも何か他の理由がありますか? – nelson2tm
バージョン間で問題が発生する可能性があり、パフォーマンスを正しく実装するのが難しい – Kerooker