Update to Minecraft 1.18-pre5

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot
2021-11-22 09:00:00 +11:00
parent a852b81a69
commit 43702a9e10
700 changed files with 10286 additions and 10098 deletions

View File

@@ -46,6 +46,7 @@ import java.util.UUID;
import java.util.function.Consumer;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.imageio.ImageIO;
import jline.console.ConsoleReader;
import net.minecraft.advancements.Advancement;
@@ -71,8 +72,12 @@ import net.minecraft.server.dedicated.DedicatedServerSettings;
import net.minecraft.server.level.EntityPlayer;
import net.minecraft.server.level.TicketType;
import net.minecraft.server.level.WorldServer;
import net.minecraft.server.players.GameProfileBanEntry;
import net.minecraft.server.players.IpBanEntry;
import net.minecraft.server.players.JsonListEntry;
import net.minecraft.server.players.OpListEntry;
import net.minecraft.server.players.PlayerList;
import net.minecraft.server.players.WhiteListEntry;
import net.minecraft.tags.Tags;
import net.minecraft.tags.TagsBlock;
import net.minecraft.tags.TagsEntity;
@@ -301,7 +306,7 @@ public final class CraftServer implements Server {
}
}));
this.serverVersion = CraftServer.class.getPackage().getImplementationVersion();
this.structureManager = new CraftStructureManager(console.getDefinedStructureManager());
this.structureManager = new CraftStructureManager(console.getStructureManager());
Bukkit.setServer(this);
@@ -453,7 +458,7 @@ public final class CraftServer implements Server {
CommandDispatcher dispatcher = console.vanillaCommandDispatcher;
// Build a list of all Vanilla commands and create wrappers
for (CommandNode<CommandListenerWrapper> cmd : dispatcher.a().getRoot().getChildren()) {
for (CommandNode<CommandListenerWrapper> cmd : dispatcher.getDispatcher().getRoot().getChildren()) {
commandMap.register("minecraft", new VanillaCommandWrapper(dispatcher, cmd));
}
}
@@ -478,15 +483,15 @@ public final class CraftServer implements Server {
node = clone;
}
dispatcher.a().getRoot().addChild(node);
dispatcher.getDispatcher().getRoot().addChild(node);
} else {
new BukkitCommandWrapper(this, entry.getValue()).register(dispatcher.a(), label);
new BukkitCommandWrapper(this, entry.getValue()).register(dispatcher.getDispatcher(), label);
}
}
// Refresh commands
for (EntityPlayer player : getHandle().players) {
dispatcher.a(player);
dispatcher.sendCommands(player);
}
}
@@ -516,7 +521,7 @@ public final class CraftServer implements Server {
@Override
public String getVersion() {
return serverVersion + " (MC: " + console.getVersion() + ")";
return serverVersion + " (MC: " + console.getServerVersion() + ")";
}
@Override
@@ -560,7 +565,7 @@ public final class CraftServer implements Server {
public Player getPlayerExact(String name) {
Validate.notNull(name, "Name cannot be null");
EntityPlayer player = playerList.getPlayer(name);
EntityPlayer player = playerList.getPlayerByName(name);
return (player != null) ? player.getBukkitEntity() : null;
}
@@ -622,9 +627,14 @@ public final class CraftServer implements Server {
return this.getProperties().viewDistance;
}
@Override
public int getSimulationDistance() {
return this.getProperties().simulationDistance;
}
@Override
public String getIp() {
return this.getServer().getServerIp();
return this.getServer().getLocalIp();
}
@Override
@@ -634,7 +644,7 @@ public final class CraftServer implements Server {
@Override
public boolean getGenerateStructures() {
return this.getProperties().a(this.getServer().getCustomRegistry()).shouldGenerateMapFeatures();
return this.getProperties().getWorldGenSettings(this.getServer().registryAccess()).generateFeatures();
}
@Override
@@ -649,7 +659,7 @@ public final class CraftServer implements Server {
@Override
public boolean getAllowNether() {
return this.getServer().getAllowNether();
return this.getServer().isNetherEnabled();
}
public boolean getWarnOnOverload() {
@@ -667,7 +677,7 @@ public final class CraftServer implements Server {
// NOTE: Temporary calls through to server.properies until its replaced
private DedicatedServerProperties getProperties() {
return this.console.getDedicatedServerProperties();
return this.console.getProperties();
}
// End Temporary calls
@@ -788,8 +798,8 @@ public final class CraftServer implements Server {
console.settings = new DedicatedServerSettings(console.options);
DedicatedServerProperties config = console.settings.getProperties();
console.setPVP(config.pvp);
console.setAllowFlight(config.allowFlight);
console.setPvpAllowed(config.pvp);
console.setFlightAllowed(config.allowFlight);
console.setMotd(config.motd);
monsterSpawn = configuration.getInt("spawn-limits.monsters");
animalSpawn = configuration.getInt("spawn-limits.animals");
@@ -805,19 +815,19 @@ public final class CraftServer implements Server {
loadIcon();
try {
playerList.getIPBans().load();
playerList.getIpBans().load();
} catch (IOException ex) {
logger.log(Level.WARNING, "Failed to load banned-ips.json, " + ex.getMessage());
}
try {
playerList.getProfileBans().load();
playerList.getBans().load();
} catch (IOException ex) {
logger.log(Level.WARNING, "Failed to load banned-players.json, " + ex.getMessage());
}
for (WorldServer world : console.getWorlds()) {
for (WorldServer world : console.getAllLevels()) {
world.serverLevelData.setDifficulty(config.difficulty);
world.setSpawnFlags(config.spawnMonsters, config.spawnAnimals);
world.setSpawnSettings(config.spawnMonsters, config.spawnAnimals);
if (this.getTicksPerAnimalSpawns() < 0) {
world.ticksPerAnimalSpawns = 400;
} else {
@@ -953,7 +963,7 @@ public final class CraftServer implements Server {
@Override
public String toString() {
return "CraftServer{" + "serverName=" + serverName + ",serverVersion=" + serverVersion + ",minecraftVersion=" + console.getVersion() + '}';
return "CraftServer{" + "serverName=" + serverName + ",serverVersion=" + serverVersion + ",minecraftVersion=" + console.getServerVersion() + '}';
}
public World createWorld(String name, World.Environment environment) {
@@ -1016,16 +1026,15 @@ public final class CraftServer implements Server {
Convertable.ConversionSession worldSession;
try {
worldSession = Convertable.a(getWorldContainer().toPath()).c(name, actualDimension);
worldSession = Convertable.createDefault(getWorldContainer().toPath()).createAccess(name, actualDimension);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
MinecraftServer.convertWorld(worldSession); // Run conversion now
boolean hardcore = creator.hardcore();
RegistryReadOps<NBTBase> registryreadops = RegistryReadOps.a((DynamicOps) DynamicOpsNBT.INSTANCE, console.resources.i(), console.registryHolder);
WorldDataServer worlddata = (WorldDataServer) worldSession.a((DynamicOps) registryreadops, console.datapackconfiguration);
RegistryReadOps<NBTBase> registryreadops = RegistryReadOps.createAndLoad(DynamicOpsNBT.INSTANCE, console.resources.getResourceManager(), console.registryHolder);
WorldDataServer worlddata = (WorldDataServer) worldSession.getDataTag(registryreadops, console.datapackconfiguration);
WorldSettings worldSettings;
// See MinecraftServer.a(String, String, long, WorldType, JsonElement)
@@ -1036,34 +1045,32 @@ public final class CraftServer implements Server {
properties.put("generate-structures", Objects.toString(creator.generateStructures()));
properties.put("level-type", Objects.toString(creator.type().getName()));
GeneratorSettings generatorsettings = GeneratorSettings.a(console.getCustomRegistry(), properties);
worldSettings = new WorldSettings(name, EnumGamemode.getById(getDefaultGameMode().getValue()), hardcore, EnumDifficulty.EASY, false, new GameRules(), console.datapackconfiguration);
GeneratorSettings generatorsettings = GeneratorSettings.create(console.registryAccess(), properties);
worldSettings = new WorldSettings(name, EnumGamemode.byId(getDefaultGameMode().getValue()), hardcore, EnumDifficulty.EASY, false, new GameRules(), console.datapackconfiguration);
worlddata = new WorldDataServer(worldSettings, generatorsettings, Lifecycle.stable());
}
worlddata.checkName(name);
worlddata.a(console.getServerModName(), console.getModded().isPresent());
worlddata.setModdedInfo(console.getServerModName(), console.getModdedStatus().shouldReportAsModified());
if (console.options.has("forceUpgrade")) {
net.minecraft.server.Main.convertWorld(worldSession, DataConverterRegistry.a(), console.options.has("eraseCache"), () -> {
net.minecraft.server.Main.forceUpgrade(worldSession, DataConverterRegistry.getDataFixer(), console.options.has("eraseCache"), () -> {
return true;
}, worlddata.getGeneratorSettings().d().d().stream().map((entry) -> {
return ResourceKey.a(IRegistry.DIMENSION_TYPE_REGISTRY, ((ResourceKey) entry.getKey()).a());
}).collect(ImmutableSet.toImmutableSet()));
}, worlddata.worldGenSettings());
}
long j = BiomeManager.a(creator.seed());
long j = BiomeManager.obfuscateSeed(creator.seed());
List<MobSpawner> list = ImmutableList.of(new MobSpawnerPhantom(), new MobSpawnerPatrol(), new MobSpawnerCat(), new VillageSiege(), new MobSpawnerTrader(worlddata));
RegistryMaterials<WorldDimension> registrymaterials = worlddata.getGeneratorSettings().d();
WorldDimension worlddimension = (WorldDimension) registrymaterials.a(actualDimension);
RegistryMaterials<WorldDimension> registrymaterials = worlddata.worldGenSettings().dimensions();
WorldDimension worlddimension = (WorldDimension) registrymaterials.get(actualDimension);
DimensionManager dimensionmanager;
net.minecraft.world.level.chunk.ChunkGenerator chunkgenerator;
if (worlddimension == null) {
dimensionmanager = (DimensionManager) console.registryHolder.d(IRegistry.DIMENSION_TYPE_REGISTRY).d(DimensionManager.OVERWORLD_LOCATION);
chunkgenerator = GeneratorSettings.a(console.registryHolder.d(IRegistry.BIOME_REGISTRY), console.registryHolder.d(IRegistry.NOISE_GENERATOR_SETTINGS_REGISTRY), (new Random()).nextLong());
dimensionmanager = (DimensionManager) console.registryHolder.registryOrThrow(IRegistry.DIMENSION_TYPE_REGISTRY).getOrThrow(DimensionManager.OVERWORLD_LOCATION);
chunkgenerator = GeneratorSettings.makeDefaultOverworld(console.registryHolder, (new Random()).nextLong());
} else {
dimensionmanager = worlddimension.b();
chunkgenerator = worlddimension.c();
dimensionmanager = worlddimension.type();
chunkgenerator = worlddimension.generator();
}
WorldInfo worldInfo = new CraftWorldInfo(worlddata, worldSession, creator.environment(), dimensionmanager);
@@ -1072,35 +1079,35 @@ public final class CraftServer implements Server {
}
if (biomeProvider != null) {
WorldChunkManager worldChunkManager = new CustomWorldChunkManager(worldInfo, biomeProvider, console.registryHolder.b(IRegistry.BIOME_REGISTRY));
WorldChunkManager worldChunkManager = new CustomWorldChunkManager(worldInfo, biomeProvider, console.registryHolder.ownedRegistryOrThrow(IRegistry.BIOME_REGISTRY));
if (chunkgenerator instanceof ChunkGeneratorAbstract) {
chunkgenerator = new ChunkGeneratorAbstract(worldChunkManager, chunkgenerator.strongholdSeed, ((ChunkGeneratorAbstract) chunkgenerator).settings);
chunkgenerator = new ChunkGeneratorAbstract(((ChunkGeneratorAbstract) chunkgenerator).noises, worldChunkManager, chunkgenerator.strongholdSeed, ((ChunkGeneratorAbstract) chunkgenerator).settings);
}
}
ResourceKey<net.minecraft.world.level.World> worldKey;
String levelName = this.getServer().getDedicatedServerProperties().levelName;
String levelName = this.getServer().getProperties().levelName;
if (name.equals(levelName + "_nether")) {
worldKey = net.minecraft.world.level.World.NETHER;
} else if (name.equals(levelName + "_the_end")) {
worldKey = net.minecraft.world.level.World.END;
} else {
worldKey = ResourceKey.a(IRegistry.DIMENSION_REGISTRY, new MinecraftKey(name.toLowerCase(java.util.Locale.ENGLISH)));
worldKey = ResourceKey.create(IRegistry.DIMENSION_REGISTRY, new MinecraftKey(name.toLowerCase(java.util.Locale.ENGLISH)));
}
WorldServer internal = (WorldServer) new WorldServer(console, console.executor, worldSession, worlddata, worldKey, dimensionmanager, getServer().progressListenerFactory.create(11),
chunkgenerator, worlddata.getGeneratorSettings().isDebugWorld(), j, creator.environment() == Environment.NORMAL ? list : ImmutableList.of(), true, creator.environment(), generator, biomeProvider);
chunkgenerator, worlddata.worldGenSettings().isDebug(), j, creator.environment() == Environment.NORMAL ? list : ImmutableList.of(), true, creator.environment(), generator, biomeProvider);
if (!(worlds.containsKey(name.toLowerCase(java.util.Locale.ENGLISH)))) {
return null;
}
console.initWorld(internal, worlddata, worlddata, worlddata.getGeneratorSettings());
console.initWorld(internal, worlddata, worlddata, worlddata.worldGenSettings());
internal.setSpawnFlags(true, true);
console.levels.put(internal.getDimensionKey(), internal);
internal.setSpawnSettings(true, true);
console.levels.put(internal.dimension(), internal);
getServer().loadSpawn(internal.getChunkProvider().chunkMap.progressListener, internal);
getServer().prepareLevels(internal.getChunkSource().chunkMap.progressListener, internal);
internal.entityManager.tick(); // SPIGOT-6526: Load pending entities so they are available to the API
pluginManager.callEvent(new WorldLoadEvent(internal.getWorld()));
@@ -1120,15 +1127,15 @@ public final class CraftServer implements Server {
WorldServer handle = ((CraftWorld) world).getHandle();
if (!(console.levels.containsKey(handle.getDimensionKey()))) {
if (!(console.levels.containsKey(handle.dimension()))) {
return false;
}
if (handle.getDimensionKey() == net.minecraft.world.level.World.OVERWORLD) {
if (handle.dimension() == net.minecraft.world.level.World.OVERWORLD) {
return false;
}
if (handle.getPlayers().size() > 0) {
if (handle.players().size() > 0) {
return false;
}
@@ -1144,7 +1151,7 @@ public final class CraftServer implements Server {
handle.save(null, true, true);
}
handle.getChunkProvider().close(save);
handle.getChunkSource().close(save);
handle.entityManager.close(save); // SPIGOT-6722: close entityManager
handle.convertable.close();
} catch (Exception ex) {
@@ -1152,7 +1159,7 @@ public final class CraftServer implements Server {
}
worlds.remove(world.getName().toLowerCase(java.util.Locale.ENGLISH));
console.levels.remove(handle.getDimensionKey());
console.levels.remove(handle.dimension());
return true;
}
@@ -1209,7 +1216,7 @@ public final class CraftServer implements Server {
@Override
public void savePlayers() {
checkSaveState();
playerList.savePlayers();
playerList.saveAll();
}
@Override
@@ -1267,7 +1274,7 @@ public final class CraftServer implements Server {
public Recipe getRecipe(NamespacedKey recipeKey) {
Preconditions.checkArgument(recipeKey != null, "recipeKey == null");
return getServer().getCraftingManager().getRecipe(CraftNamespacedKey.toMinecraft(recipeKey)).map(IRecipe::toBukkitRecipe).orElse(null);
return getServer().getRecipeManager().byKey(CraftNamespacedKey.toMinecraft(recipeKey)).map(IRecipe::toBukkitRecipe).orElse(null);
}
@Override
@@ -1280,7 +1287,7 @@ public final class CraftServer implements Server {
}
@Override
public boolean canUse(EntityHuman entityhuman) {
public boolean stillValid(EntityHuman entityhuman) {
return false;
}
};
@@ -1310,7 +1317,7 @@ public final class CraftServer implements Server {
if (recipe.isPresent()) {
RecipeCrafting recipeCrafting = recipe.get();
if (craftResult.setRecipeUsed(craftWorld.getHandle(), craftPlayer.getHandle(), recipeCrafting)) {
itemstack = recipeCrafting.a(inventoryCrafting);
itemstack = recipeCrafting.assemble(inventoryCrafting);
}
}
@@ -1320,7 +1327,7 @@ public final class CraftServer implements Server {
// Set the resulting matrix items
for (int i = 0; i < craftingMatrix.length; i++) {
Item remaining = inventoryCrafting.getContents().get(i).getItem().getCraftingRemainingItem();
craftingMatrix[i] = (remaining != null) ? CraftItemStack.asBukkitCopy(remaining.createItemStack()) : null;
craftingMatrix[i] = (remaining != null) ? CraftItemStack.asBukkitCopy(remaining.getDefaultInstance()) : null;
}
return CraftItemStack.asBukkitCopy(result);
@@ -1335,7 +1342,7 @@ public final class CraftServer implements Server {
inventoryCrafting.setItem(i, CraftItemStack.asNMSCopy(craftingMatrix[i]));
}
return getServer().getCraftingManager().craft(Recipes.CRAFTING, inventoryCrafting, world.getHandle());
return getServer().getRecipeManager().getRecipeFor(Recipes.CRAFTING, inventoryCrafting, world.getHandle());
}
@Override
@@ -1345,7 +1352,7 @@ public final class CraftServer implements Server {
@Override
public void clearRecipes() {
console.getCraftingManager().clearRecipes();
console.getRecipeManager().clearRecipes();
}
@Override
@@ -1358,7 +1365,7 @@ public final class CraftServer implements Server {
Preconditions.checkArgument(recipeKey != null, "recipeKey == null");
MinecraftKey mcKey = CraftNamespacedKey.toMinecraft(recipeKey);
for (Object2ObjectLinkedOpenHashMap<MinecraftKey, IRecipe<?>> recipes : getServer().getCraftingManager().recipes.values()) {
for (Object2ObjectLinkedOpenHashMap<MinecraftKey, IRecipe<?>> recipes : getServer().getRecipeManager().recipes.values()) {
if (recipes.remove(mcKey) != null) {
return true;
}
@@ -1405,7 +1412,7 @@ public final class CraftServer implements Server {
@Override
public int getSpawnRadius() {
return this.getServer().getSpawnProtection();
return this.getServer().getSpawnProtectionRadius();
}
@Override
@@ -1416,12 +1423,12 @@ public final class CraftServer implements Server {
@Override
public boolean getOnlineMode() {
return console.getOnlineMode();
return console.usesAuthentication();
}
@Override
public boolean getAllowFlight() {
return console.getAllowFlight();
return console.isFlightAllowed();
}
@Override
@@ -1504,7 +1511,7 @@ public final class CraftServer implements Server {
@Override
@Deprecated
public CraftMapView getMap(int id) {
WorldMap worldmap = console.getWorldServer(net.minecraft.world.level.World.OVERWORLD).a("map_" + id);
WorldMap worldmap = console.getLevel(net.minecraft.world.level.World.OVERWORLD).getMapData("map_" + id);
if (worldmap == null) {
return null;
}
@@ -1517,8 +1524,8 @@ public final class CraftServer implements Server {
net.minecraft.world.level.World minecraftWorld = ((CraftWorld) world).getHandle();
// creates a new map at world spawn with the scale of 3, with out tracking position and unlimited tracking
int newId = ItemWorldMap.createNewSavedData(minecraftWorld, minecraftWorld.getWorldData().a(), minecraftWorld.getWorldData().c(), 3, false, false, minecraftWorld.getDimensionKey());
return minecraftWorld.a(ItemWorldMap.a(newId)).mapView;
int newId = ItemWorldMap.createNewSavedData(minecraftWorld, minecraftWorld.getLevelData().getXSpawn(), minecraftWorld.getLevelData().getZSpawn(), 3, false, false, minecraftWorld.dimension());
return minecraftWorld.getMapData(ItemWorldMap.makeKey(newId)).mapView;
}
@Override
@@ -1537,17 +1544,17 @@ public final class CraftServer implements Server {
BlockPosition structurePosition = new BlockPosition(structureLocation.getBlockX(), structureLocation.getBlockY(), structureLocation.getBlockZ());
// Create map with trackPlayer = true, unlimitedTracking = true
net.minecraft.world.item.ItemStack stack = ItemWorldMap.createFilledMapView(worldServer, structurePosition.getX(), structurePosition.getZ(), MapView.Scale.NORMAL.getValue(), true, true);
ItemWorldMap.applySepiaFilter(worldServer, stack);
net.minecraft.world.item.ItemStack stack = ItemWorldMap.create(worldServer, structurePosition.getX(), structurePosition.getZ(), MapView.Scale.NORMAL.getValue(), true, true);
ItemWorldMap.renderBiomePreviewMap(worldServer, stack);
// "+" map ID taken from EntityVillager
ItemWorldMap.getSavedMap(stack, worldServer).decorateMap(stack, structurePosition, "+", MapIcon.Type.a(structureType.getMapIcon().getValue()));
ItemWorldMap.getSavedData(stack, worldServer).addTargetDecoration(stack, structurePosition, "+", MapIcon.Type.byIcon(structureType.getMapIcon().getValue()));
return CraftItemStack.asBukkitCopy(stack);
}
@Override
public void shutdown() {
console.safeShutdown(false);
console.halt(false);
}
@Override
@@ -1584,7 +1591,7 @@ public final class CraftServer implements Server {
OfflinePlayer result = getPlayerExact(name);
if (result == null) {
// This is potentially blocking :(
GameProfile profile = console.getUserCache().getProfile(name).orElse(null);
GameProfile profile = console.getProfileCache().get(name).orElse(null);
if (profile == null) {
// Make an OfflinePlayer using an offline mode UUID since the name has no profile
result = getOfflinePlayer(new GameProfile(UUID.nameUUIDFromBytes(("OfflinePlayer:" + name).getBytes(Charsets.UTF_8)), name));
@@ -1626,7 +1633,7 @@ public final class CraftServer implements Server {
@Override
@SuppressWarnings("unchecked")
public Set<String> getIPBans() {
return new HashSet<String>(Arrays.asList(playerList.getIPBans().getEntries()));
return playerList.getIpBans().getEntries().stream().map(IpBanEntry::getUser).collect(Collectors.toSet());
}
@Override
@@ -1647,8 +1654,8 @@ public final class CraftServer implements Server {
public Set<OfflinePlayer> getBannedPlayers() {
Set<OfflinePlayer> result = new HashSet<OfflinePlayer>();
for (JsonListEntry entry : playerList.getProfileBans().getValues()) {
result.add(getOfflinePlayer((GameProfile) entry.getKey()));
for (GameProfileBanEntry entry : playerList.getBans().getValues()) {
result.add(getOfflinePlayer(entry.getUser()));
}
return result;
@@ -1660,17 +1667,17 @@ public final class CraftServer implements Server {
switch (type) {
case IP:
return new CraftIpBanList(playerList.getIPBans());
return new CraftIpBanList(playerList.getIpBans());
case NAME:
default:
return new CraftProfileBanList(playerList.getProfileBans());
return new CraftProfileBanList(playerList.getBans());
}
}
@Override
public void setWhitelist(boolean value) {
playerList.setHasWhitelist(value);
console.setHasWhitelist(value);
playerList.setUsingWhiteList(value);
console.storeUsingWhiteList(value);
}
@Override
@@ -1687,8 +1694,8 @@ public final class CraftServer implements Server {
public Set<OfflinePlayer> getWhitelistedPlayers() {
Set<OfflinePlayer> result = new LinkedHashSet<OfflinePlayer>();
for (JsonListEntry entry : playerList.getWhitelist().getValues()) {
result.add(getOfflinePlayer((GameProfile) entry.getKey()));
for (WhiteListEntry entry : playerList.getWhiteList().getValues()) {
result.add(getOfflinePlayer(entry.getUser()));
}
return result;
@@ -1698,8 +1705,8 @@ public final class CraftServer implements Server {
public Set<OfflinePlayer> getOperators() {
Set<OfflinePlayer> result = new HashSet<OfflinePlayer>();
for (JsonListEntry entry : playerList.getOPs().getValues()) {
result.add(getOfflinePlayer((GameProfile) entry.getKey()));
for (OpListEntry entry : playerList.getOps().getValues()) {
result.add(getOfflinePlayer(entry.getUser()));
}
return result;
@@ -1707,12 +1714,12 @@ public final class CraftServer implements Server {
@Override
public void reloadWhitelist() {
playerList.reloadWhitelist();
playerList.reloadWhiteList();
}
@Override
public GameMode getDefaultGameMode() {
return GameMode.getByValue(console.getWorldServer(net.minecraft.world.level.World.OVERWORLD).serverLevelData.getGameType().getId());
return GameMode.getByValue(console.getLevel(net.minecraft.world.level.World.OVERWORLD).serverLevelData.getGameType().getId());
}
@Override
@@ -1720,7 +1727,7 @@ public final class CraftServer implements Server {
Validate.notNull(mode, "Mode cannot be null");
for (World world : getWorlds()) {
((CraftWorld) world).getHandle().serverLevelData.setGameType(EnumGamemode.getById(mode.getValue()));
((CraftWorld) world).getHandle().serverLevelData.setGameType(EnumGamemode.byId(mode.getValue()));
}
}
@@ -1743,7 +1750,7 @@ public final class CraftServer implements Server {
@Override
public File getWorldContainer() {
return this.getServer().storageSource.a(net.minecraft.world.level.World.OVERWORLD).getParentFile();
return this.getServer().storageSource.getDimensionPath(net.minecraft.world.level.World.OVERWORLD).getParent().toFile();
}
@Override
@@ -1990,18 +1997,19 @@ public final class CraftServer implements Server {
@Override
public void setIdleTimeout(int threshold) {
console.setIdleTimeout(threshold);
console.setPlayerIdleTimeout(threshold);
}
@Override
public int getIdleTimeout() {
return console.getIdleTimeout();
return console.getPlayerIdleTimeout();
}
@Override
public ChunkGenerator.ChunkData createChunkData(World world) {
Validate.notNull(world, "World cannot be null");
return new OldCraftChunkData(world);
WorldServer handle = ((CraftWorld) world).getHandle();
return new OldCraftChunkData(world.getMinHeight(), world.getMaxHeight(), handle.registryAccess().registryOrThrow(IRegistry.BIOME_REGISTRY));
}
@Override
@@ -2013,7 +2021,7 @@ public final class CraftServer implements Server {
public KeyedBossBar createBossBar(NamespacedKey key, String title, BarColor barColor, BarStyle barStyle, BarFlag... barFlags) {
Preconditions.checkArgument(key != null, "key");
BossBattleCustom bossBattleCustom = getServer().getBossBattleCustomData().register(CraftNamespacedKey.toMinecraft(key), CraftChatMessage.fromString(title, true)[0]);
BossBattleCustom bossBattleCustom = getServer().getCustomBossEvents().create(CraftNamespacedKey.toMinecraft(key), CraftChatMessage.fromString(title, true)[0]);
CraftKeyedBossbar craftKeyedBossbar = new CraftKeyedBossbar(bossBattleCustom);
craftKeyedBossbar.setColor(barColor);
craftKeyedBossbar.setStyle(barStyle);
@@ -2026,7 +2034,7 @@ public final class CraftServer implements Server {
@Override
public Iterator<KeyedBossBar> getBossBars() {
return Iterators.unmodifiableIterator(Iterators.transform(getServer().getBossBattleCustomData().getBattles().iterator(), new Function<BossBattleCustom, org.bukkit.boss.KeyedBossBar>() {
return Iterators.unmodifiableIterator(Iterators.transform(getServer().getCustomBossEvents().getEvents().iterator(), new Function<BossBattleCustom, org.bukkit.boss.KeyedBossBar>() {
@Override
public org.bukkit.boss.KeyedBossBar apply(BossBattleCustom bossBattleCustom) {
return bossBattleCustom.getBukkitEntity();
@@ -2037,7 +2045,7 @@ public final class CraftServer implements Server {
@Override
public KeyedBossBar getBossBar(NamespacedKey key) {
Preconditions.checkArgument(key != null, "key");
net.minecraft.server.bossevents.BossBattleCustom bossBattleCustom = getServer().getBossBattleCustomData().a(CraftNamespacedKey.toMinecraft(key));
net.minecraft.server.bossevents.BossBattleCustom bossBattleCustom = getServer().getCustomBossEvents().get(CraftNamespacedKey.toMinecraft(key));
return (bossBattleCustom == null) ? null : bossBattleCustom.getBukkitEntity();
}
@@ -2045,8 +2053,8 @@ public final class CraftServer implements Server {
@Override
public boolean removeBossBar(NamespacedKey key) {
Preconditions.checkArgument(key != null, "key");
net.minecraft.server.bossevents.BossBattleCustomData bossBattleCustomData = getServer().getBossBattleCustomData();
net.minecraft.server.bossevents.BossBattleCustom bossBattleCustom = bossBattleCustomData.a(CraftNamespacedKey.toMinecraft(key));
net.minecraft.server.bossevents.BossBattleCustomData bossBattleCustomData = getServer().getCustomBossEvents();
net.minecraft.server.bossevents.BossBattleCustom bossBattleCustom = bossBattleCustomData.get(CraftNamespacedKey.toMinecraft(key));
if (bossBattleCustom != null) {
bossBattleCustomData.remove(bossBattleCustom);
@@ -2060,7 +2068,7 @@ public final class CraftServer implements Server {
public Entity getEntity(UUID uuid) {
Validate.notNull(uuid, "UUID cannot be null");
for (WorldServer world : getServer().getWorlds()) {
for (WorldServer world : getServer().getAllLevels()) {
net.minecraft.world.entity.Entity entity = world.getEntity(uuid);
if (entity != null) {
return entity.getBukkitEntity();
@@ -2074,13 +2082,13 @@ public final class CraftServer implements Server {
public org.bukkit.advancement.Advancement getAdvancement(NamespacedKey key) {
Preconditions.checkArgument(key != null, "key");
Advancement advancement = console.getAdvancementData().a(CraftNamespacedKey.toMinecraft(key));
Advancement advancement = console.getAdvancements().getAdvancement(CraftNamespacedKey.toMinecraft(key));
return (advancement == null) ? null : advancement.bukkit;
}
@Override
public Iterator<org.bukkit.advancement.Advancement> advancementIterator() {
return Iterators.unmodifiableIterator(Iterators.transform(console.getAdvancementData().getAdvancements().iterator(), new Function<Advancement, org.bukkit.advancement.Advancement>() {
return Iterators.unmodifiableIterator(Iterators.transform(console.getAdvancements().getAllAdvancements().iterator(), new Function<Advancement, org.bukkit.advancement.Advancement>() {
@Override
public org.bukkit.advancement.Advancement apply(Advancement advancement) {
return advancement.bukkit;
@@ -2129,19 +2137,19 @@ public final class CraftServer implements Server {
case org.bukkit.Tag.REGISTRY_BLOCKS:
Preconditions.checkArgument(clazz == org.bukkit.Material.class, "Block namespace must have material type");
return (org.bukkit.Tag<T>) new CraftBlockTag(TagsBlock.a(), key);
return (org.bukkit.Tag<T>) new CraftBlockTag(TagsBlock.getAllTags(), key);
case org.bukkit.Tag.REGISTRY_ITEMS:
Preconditions.checkArgument(clazz == org.bukkit.Material.class, "Item namespace must have material type");
return (org.bukkit.Tag<T>) new CraftItemTag(TagsItem.a(), key);
return (org.bukkit.Tag<T>) new CraftItemTag(TagsItem.getAllTags(), key);
case org.bukkit.Tag.REGISTRY_FLUIDS:
Preconditions.checkArgument(clazz == org.bukkit.Fluid.class, "Fluid namespace must have fluid type");
return (org.bukkit.Tag<T>) new CraftFluidTag(TagsFluid.a(), key);
return (org.bukkit.Tag<T>) new CraftFluidTag(TagsFluid.getAllTags(), key);
case org.bukkit.Tag.REGISTRY_ENTITY_TYPES:
Preconditions.checkArgument(clazz == org.bukkit.entity.EntityType.class, "Entity type namespace must have entity type");
return (org.bukkit.Tag<T>) new CraftEntityTag(TagsEntity.a(), key);
return (org.bukkit.Tag<T>) new CraftEntityTag(TagsEntity.getAllTags(), key);
default:
throw new IllegalArgumentException();
}
@@ -2154,23 +2162,23 @@ public final class CraftServer implements Server {
case org.bukkit.Tag.REGISTRY_BLOCKS:
Preconditions.checkArgument(clazz == org.bukkit.Material.class, "Block namespace must have material type");
Tags<Block> blockTags = TagsBlock.a();
return blockTags.a().keySet().stream().map(key -> (org.bukkit.Tag<T>) new CraftBlockTag(blockTags, key)).collect(ImmutableList.toImmutableList());
Tags<Block> blockTags = TagsBlock.getAllTags();
return blockTags.getAllTags().keySet().stream().map(key -> (org.bukkit.Tag<T>) new CraftBlockTag(blockTags, key)).collect(ImmutableList.toImmutableList());
case org.bukkit.Tag.REGISTRY_ITEMS:
Preconditions.checkArgument(clazz == org.bukkit.Material.class, "Item namespace must have material type");
Tags<Item> itemTags = TagsItem.a();
return itemTags.a().keySet().stream().map(key -> (org.bukkit.Tag<T>) new CraftItemTag(itemTags, key)).collect(ImmutableList.toImmutableList());
Tags<Item> itemTags = TagsItem.getAllTags();
return itemTags.getAllTags().keySet().stream().map(key -> (org.bukkit.Tag<T>) new CraftItemTag(itemTags, key)).collect(ImmutableList.toImmutableList());
case org.bukkit.Tag.REGISTRY_FLUIDS:
Preconditions.checkArgument(clazz == org.bukkit.Material.class, "Fluid namespace must have fluid type");
Tags<FluidType> fluidTags = TagsFluid.a();
return fluidTags.a().keySet().stream().map(key -> (org.bukkit.Tag<T>) new CraftFluidTag(fluidTags, key)).collect(ImmutableList.toImmutableList());
Tags<FluidType> fluidTags = TagsFluid.getAllTags();
return fluidTags.getAllTags().keySet().stream().map(key -> (org.bukkit.Tag<T>) new CraftFluidTag(fluidTags, key)).collect(ImmutableList.toImmutableList());
case org.bukkit.Tag.REGISTRY_ENTITY_TYPES:
Preconditions.checkArgument(clazz == org.bukkit.entity.EntityType.class, "Entity type namespace must have entity type");
Tags<EntityTypes<?>> entityTags = TagsEntity.a();
return entityTags.a().keySet().stream().map(key -> (org.bukkit.Tag<T>) new CraftEntityTag(entityTags, key)).collect(ImmutableList.toImmutableList());
Tags<EntityTypes<?>> entityTags = TagsEntity.getAllTags();
return entityTags.getAllTags().keySet().stream().map(key -> (org.bukkit.Tag<T>) new CraftEntityTag(entityTags, key)).collect(ImmutableList.toImmutableList());
default:
throw new IllegalArgumentException();
}
@@ -2180,8 +2188,8 @@ public final class CraftServer implements Server {
public LootTable getLootTable(NamespacedKey key) {
Validate.notNull(key, "NamespacedKey cannot be null");
LootTableRegistry registry = getServer().getLootTableRegistry();
return new CraftLootTable(key, registry.getLootTable(CraftNamespacedKey.toMinecraft(key)));
LootTableRegistry registry = getServer().getLootTables();
return new CraftLootTable(key, registry.get(CraftNamespacedKey.toMinecraft(key)));
}
@Override
@@ -2189,12 +2197,12 @@ public final class CraftServer implements Server {
Preconditions.checkArgument(selector != null, "Selector cannot be null");
Preconditions.checkArgument(sender != null, "Sender cannot be null");
ArgumentEntity arg = ArgumentEntity.multipleEntities();
ArgumentEntity arg = ArgumentEntity.entities();
List<? extends net.minecraft.world.entity.Entity> nms;
try {
StringReader reader = new StringReader(selector);
nms = arg.parse(reader, true).getEntities(VanillaCommandWrapper.getListener(sender));
nms = arg.parse(reader, true).findEntities(VanillaCommandWrapper.getListener(sender));
Preconditions.checkArgument(!reader.canRead(), "Spurious trailing data in selector: " + selector);
} catch (CommandSyntaxException ex) {
throw new IllegalArgumentException("Could not parse selector: " + selector, ex);