Also find worlds based on their id again in BlueMapAPI

This commit is contained in:
Lukas Rieger (Blue) 2024-02-05 17:31:12 +01:00
parent edee956893
commit fab523fe05
No known key found for this signature in database
GPG Key ID: 2D09EC5ED2687FF2
2 changed files with 23 additions and 21 deletions

View File

@ -35,10 +35,10 @@ import de.bluecolored.bluemap.core.BlueMap;
import de.bluecolored.bluemap.core.logger.Logger;
import de.bluecolored.bluemap.core.map.BmMap;
import de.bluecolored.bluemap.core.world.World;
import de.bluecolored.bluemap.core.world.mca.MCAWorld;
import java.io.IOException;
import java.util.*;
import java.util.Collection;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
@ -78,25 +78,20 @@ public class BlueMapAPIImpl extends BlueMapAPI {
@Override
public Collection<BlueMapMap> getMaps() {
Map<String, BmMap> maps = plugin.getBlueMap().getMaps();
return maps.values().stream()
.map(map -> {
try {
return new BlueMapMapImpl(plugin, map);
} catch (IOException e) {
Logger.global.logError("[API] Failed to create BlueMapMap for map " + map.getId(), e);
return null;
}
})
.filter(Objects::nonNull)
return maps.keySet().stream()
.map(this::getMap)
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toUnmodifiableSet());
}
@Override
public Collection<BlueMapWorld> getWorlds() {
Map<String, World> worlds = plugin.getBlueMap().getWorlds();
return worlds.values().stream()
.map(world -> getWorld(world).orElse(null))
.filter(Objects::nonNull)
return worlds.keySet().stream()
.map(this::getWorld)
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toUnmodifiableSet());
}
@ -107,8 +102,13 @@ public class BlueMapAPIImpl extends BlueMapAPI {
public Optional<BlueMapWorld> getWorldUncached(Object world) {
if (world instanceof MCAWorld) {
var coreWorld = (MCAWorld) world;
if (world instanceof String) {
var coreWorld = plugin.getBlueMap().getWorlds().get(world);
if (coreWorld != null) world = coreWorld;
}
if (world instanceof World) {
var coreWorld = (World) world;
return Optional.of(new BlueMapWorldImpl(plugin, coreWorld));
}

View File

@ -70,9 +70,11 @@ public class BlueMapWorldImpl implements BlueMapWorld {
@Override
public Collection<BlueMapMap> getMaps() {
return unpack(plugin).getBlueMap().getMaps().values().stream()
.filter(map -> map.getWorld().equals(unpack(world)))
.map(map -> new BlueMapMapImpl(unpack(plugin), map, this))
Plugin plugin = unpack(this.plugin);
World world = unpack(this.world);
return plugin.getBlueMap().getMaps().values().stream()
.filter(map -> map.getWorld().equals(world))
.map(map -> new BlueMapMapImpl(plugin, map, this))
.collect(Collectors.toUnmodifiableSet());
}