Skip to content

Commit f66695a

Browse files
committed
Merge branch 'bleeding'
2 parents 0b9aa33 + 7d44a43 commit f66695a

File tree

240 files changed

+7698
-5192
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

240 files changed

+7698
-5192
lines changed

.github/workflows/gradle.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ jobs:
99
- uses: actions/checkout@v2
1010
with:
1111
submodules: recursive
12-
- name: Set up JDK 1.8
12+
- name: Set up JDK 1.16
1313
uses: actions/setup-java@v1
1414
with:
15-
java-version: 8
15+
java-version: 16
1616
- name: Build with Gradle
1717
run: ./gradlew clean test build
1818
- uses: actions/upload-artifact@v2

BlueMapCommon/build.gradle

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ plugins {
33
}
44

55
dependencies {
6-
compile 'com.mojang:brigadier:1.0.17'
7-
8-
compile project(':BlueMapCore')
9-
compile project(':BlueMapAPI')
6+
api 'com.mojang:brigadier:1.0.17'
7+
8+
api project(':BlueMapCore')
9+
api project(':BlueMapAPI')
1010

1111
testImplementation 'org.junit.jupiter:junit-jupiter:5.4.2'
1212
}
@@ -34,8 +34,8 @@ task buildWebapp(type: NpmTask) {
3434
task zipWebapp(type: Zip) {
3535
dependsOn 'buildWebapp'
3636
from fileTree('BlueMapVue/dist/')
37-
archiveName 'webapp.zip'
38-
destinationDir(file('src/main/resources/de/bluecolored/bluemap/'))
37+
archiveFileName.set('webapp.zip')
38+
destinationDirectory.set(file('src/main/resources/de/bluecolored/bluemap/'))
3939
outputs.upToDateWhen { false }
4040
}
4141

BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/BlueMapService.java

Lines changed: 36 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,18 @@
2424
*/
2525
package de.bluecolored.bluemap.common;
2626

27-
import com.flowpowered.math.vector.Vector2i;
2827
import de.bluecolored.bluemap.common.plugin.Plugin;
2928
import de.bluecolored.bluemap.common.plugin.serverinterface.ServerInterface;
29+
import de.bluecolored.bluemap.common.web.WebSettings;
3030
import de.bluecolored.bluemap.core.MinecraftVersion;
3131
import de.bluecolored.bluemap.core.config.*;
32+
import de.bluecolored.bluemap.core.debug.DebugDump;
3233
import de.bluecolored.bluemap.core.logger.Logger;
34+
import de.bluecolored.bluemap.core.map.BmMap;
35+
import de.bluecolored.bluemap.core.map.hires.RenderSettings;
3336
import de.bluecolored.bluemap.core.mca.MCAWorld;
34-
import de.bluecolored.bluemap.core.render.RenderSettings;
35-
import de.bluecolored.bluemap.core.render.TileRenderer;
36-
import de.bluecolored.bluemap.core.render.hires.HiresModelManager;
37-
import de.bluecolored.bluemap.core.render.lowres.LowresModelManager;
3837
import de.bluecolored.bluemap.core.resourcepack.ParseResourceException;
3938
import de.bluecolored.bluemap.core.resourcepack.ResourcePack;
40-
import de.bluecolored.bluemap.core.web.WebSettings;
4139
import de.bluecolored.bluemap.core.world.SlicedWorld;
4240
import de.bluecolored.bluemap.core.world.World;
4341
import org.apache.commons.io.FileUtils;
@@ -50,13 +48,14 @@
5048
/**
5149
* This is the attempt to generalize as many actions as possible to have CLI and Plugins run on the same general setup-code.
5250
*/
51+
@DebugDump
5352
public class BlueMapService {
54-
private MinecraftVersion minecraftVersion;
55-
private File configFolder;
56-
private ThrowingFunction<File, UUID, IOException> worldUUIDProvider;
57-
private ThrowingFunction<UUID, String, IOException> worldNameProvider;
53+
private final MinecraftVersion minecraftVersion;
54+
private final File configFolder;
55+
private final ThrowingFunction<File, UUID, IOException> worldUUIDProvider;
56+
private final ThrowingFunction<UUID, String, IOException> worldNameProvider;
5857

59-
private ConfigManager configManager;
58+
private final ConfigManager configManager;
6059

6160
private CoreConfig coreConfig;
6261
private RenderConfig renderConfig;
@@ -65,7 +64,7 @@ public class BlueMapService {
6564
private ResourcePack resourcePack;
6665

6766
private Map<UUID, World> worlds;
68-
private Map<String, MapType> maps;
67+
private Map<String, BmMap> maps;
6968

7069
public BlueMapService(MinecraftVersion minecraftVersion, File configFolder) {
7170
this.minecraftVersion = minecraftVersion;
@@ -105,17 +104,17 @@ public synchronized void createOrUpdateWebApp(boolean force) throws IOException
105104
public synchronized WebSettings updateWebAppSettings() throws IOException, InterruptedException {
106105
WebSettings webSettings = new WebSettings(new File(getRenderConfig().getWebRoot(), "data" + File.separator + "settings.json"));
107106
webSettings.set(getRenderConfig().isUseCookies(), "useCookies");
107+
webSettings.set(getRenderConfig().isEnableFreeFlight(), "freeFlightEnabled");
108108
webSettings.setAllMapsEnabled(false);
109-
for (MapType map : getMaps().values()) {
109+
for (BmMap map : getMaps().values()) {
110110
webSettings.setMapEnabled(true, map.getId());
111-
webSettings.setFrom(map.getTileRenderer(), map.getId());
112-
webSettings.setFrom(map.getWorld(), map.getId());
111+
webSettings.setFrom(map);
113112
}
114113
int ordinal = 0;
115114
for (MapConfig map : getRenderConfig().getMapConfigs()) {
116115
if (!getMaps().containsKey(map.getId())) continue; //don't add not loaded maps
117116
webSettings.setOrdinal(ordinal++, map.getId());
118-
webSettings.setFrom(map, map.getId());
117+
webSettings.setFrom(map);
119118
}
120119
webSettings.save();
121120

@@ -127,14 +126,17 @@ public synchronized Map<UUID, World> getWorlds() throws IOException, Interrupted
127126
return worlds;
128127
}
129128

130-
public synchronized Map<String, MapType> getMaps() throws IOException, InterruptedException {
129+
public synchronized Map<String, BmMap> getMaps() throws IOException, InterruptedException {
131130
if (maps == null) loadWorldsAndMaps();
132131
return maps;
133132
}
134133

135134
private synchronized void loadWorldsAndMaps() throws IOException, InterruptedException {
136135
maps = new HashMap<>();
137136
worlds = new HashMap<>();
137+
138+
ConfigManager configManager = getConfigManager();
139+
configManager.loadResourceConfigs(configFolder, getResourcePack());
138140

139141
for (MapConfig mapConfig : getRenderConfig().getMapConfigs()) {
140142
String id = mapConfig.getId();
@@ -154,18 +156,15 @@ private synchronized void loadWorldsAndMaps() throws IOException, InterruptedExc
154156
continue;
155157
}
156158

157-
ConfigManager configManager = getConfigManager();
158-
configManager.loadResourceConfigs(configFolder, getResourcePack());
159-
160159
World world = worlds.get(worldUUID);
161160
if (world == null) {
162161
try {
163-
world = MCAWorld.load(worldFolder.toPath(), worldUUID, minecraftVersion, configManager.getBlockIdConfig(), configManager.getBlockPropertiesConfig(), configManager.getBiomeConfig(), worldNameProvider.apply(worldUUID), true);
162+
world = MCAWorld.load(worldFolder.toPath(), worldUUID, minecraftVersion, configManager.getBlockIdConfig(), configManager.getBlockPropertiesConfig(), configManager.getBiomeConfig(), worldNameProvider.apply(worldUUID), mapConfig.isIgnoreMissingLightData());
164163
worlds.put(worldUUID, world);
165164
} catch (MissingResourcesException e) {
166165
throw e; // rethrow this to stop loading and display resource-missing message
167166
} catch (IOException e) {
168-
Logger.global.logError("Failed to load map '" + id + "': Failed to read level.dat", e);
167+
Logger.global.logError("Failed to load map '" + id + "'!", e);
169168
continue;
170169
}
171170
}
@@ -179,28 +178,20 @@ private synchronized void loadWorldsAndMaps() throws IOException, InterruptedExc
179178
world,
180179
mapConfig.getMin().min(mapConfig.getMin().sub(2, 2, 2)), // protect from int-overflow
181180
mapConfig.getMax().max(mapConfig.getMax().add(2, 2, 2)) // protect from int-overflow
182-
);
181+
);
183182
}
184183
}
185-
186-
HiresModelManager hiresModelManager = new HiresModelManager(
187-
getRenderConfig().getWebRoot().toPath().resolve("data").resolve(id).resolve("hires"),
184+
185+
BmMap map = new BmMap(
186+
id,
187+
name,
188+
world,
189+
getRenderConfig().getWebRoot().toPath().resolve("data").resolve(id),
188190
getResourcePack(),
189-
mapConfig,
190-
new Vector2i(mapConfig.getHiresTileSize(), mapConfig.getHiresTileSize())
191-
);
192-
193-
LowresModelManager lowresModelManager = new LowresModelManager(
194-
getRenderConfig().getWebRoot().toPath().resolve("data").resolve(id).resolve("lowres"),
195-
new Vector2i(mapConfig.getLowresPointsPerLowresTile(), mapConfig.getLowresPointsPerLowresTile()),
196-
new Vector2i(mapConfig.getLowresPointsPerHiresTile(), mapConfig.getLowresPointsPerHiresTile()),
197-
mapConfig.useGzipCompression()
198-
);
199-
200-
TileRenderer tileRenderer = new TileRenderer(hiresModelManager, lowresModelManager);
201-
202-
MapType mapType = new MapType(id, name, world, tileRenderer);
203-
maps.put(id, mapType);
191+
mapConfig
192+
);
193+
194+
maps.put(id, map);
204195
}
205196

206197
worlds = Collections.unmodifiableMap(worlds);
@@ -209,7 +200,7 @@ private synchronized void loadWorldsAndMaps() throws IOException, InterruptedExc
209200

210201
public synchronized ResourcePack getResourcePack() throws IOException, InterruptedException {
211202
if (resourcePack == null) {
212-
File defaultResourceFile = new File(getCoreConfig().getDataFolder(), "minecraft-client-" + minecraftVersion.getVersionString() + ".jar");
203+
File defaultResourceFile = new File(getCoreConfig().getDataFolder(), "minecraft-client-" + minecraftVersion.getResource().getVersion().getVersionString() + ".jar");
213204
File resourceExtensionsFile = new File(getCoreConfig().getDataFolder(), "resourceExtensions.zip");
214205

215206
File textureExportFile = new File(getRenderConfig().getWebRoot(), "data" + File.separator + "textures.json");
@@ -222,9 +213,9 @@ public synchronized ResourcePack getResourcePack() throws IOException, Interrupt
222213

223214
//download file
224215
try {
225-
Logger.global.logInfo("Downloading " + minecraftVersion.getClientDownloadUrl() + " to " + defaultResourceFile + " ...");
216+
Logger.global.logInfo("Downloading " + minecraftVersion.getResource().getClientUrl() + " to " + defaultResourceFile + " ...");
226217
FileUtils.forceMkdirParent(defaultResourceFile);
227-
FileUtils.copyURLToFile(new URL(minecraftVersion.getClientDownloadUrl()), defaultResourceFile, 10000, 10000);
218+
FileUtils.copyURLToFile(new URL(minecraftVersion.getResource().getClientUrl()), defaultResourceFile, 10000, 10000);
228219
} catch (IOException e) {
229220
throw new IOException("Failed to download resources!", e);
230221
}
@@ -238,7 +229,7 @@ public synchronized ResourcePack getResourcePack() throws IOException, Interrupt
238229

239230
if (resourceExtensionsFile.exists()) FileUtils.forceDelete(resourceExtensionsFile);
240231
FileUtils.forceMkdirParent(resourceExtensionsFile);
241-
FileUtils.copyURLToFile(Plugin.class.getResource("/de/bluecolored/bluemap/" + minecraftVersion.getResourcePrefix() + "/resourceExtensions.zip"), resourceExtensionsFile, 10000, 10000);
232+
FileUtils.copyURLToFile(Plugin.class.getResource("/de/bluecolored/bluemap/" + minecraftVersion.getResource().getResourcePrefix() + "/resourceExtensions.zip"), resourceExtensionsFile, 10000, 10000);
242233

243234
//find more resource packs
244235
File[] resourcePacks = resourcePackFolder.listFiles();

BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/InterruptableReentrantLock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public InterruptableReentrantLock(boolean fair) {
3838
}
3939

4040
/**
41-
* Aquires the lock and interrupts the currently holding thread if there is any.
41+
* Acquires the lock and interrupts the currently holding thread if there is any.
4242
*/
4343
public void interruptAndLock() {
4444
while (!tryLock()) {

BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/MapType.java

Lines changed: 0 additions & 89 deletions
This file was deleted.

0 commit comments

Comments
 (0)