diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts index 9615b406cc1..1d423c89981 100644 --- a/build-logic/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -9,6 +9,7 @@ plugins { repositories { mavenCentral() + google() // gestalt uses an annotation package by Google maven { name = "Terasology Artifactory" @@ -21,10 +22,11 @@ repositories { dependencies { // Needed for caching reflected data during builds implementation("org.terasology:reflections:0.9.12-MB") + implementation("org.javassist:javassist:3.27.0-GA") implementation("dom4j:dom4j:1.6.1") // for inspecting modules - implementation("org.terasology:gestalt-module:5.1.5") + implementation("org.terasology.gestalt:gestalt-module:7.0.6-SNAPSHOT") api(kotlin("test")) } diff --git a/build-logic/src/main/kotlin/org/terasology/gradology/module_build.kt b/build-logic/src/main/kotlin/org/terasology/gradology/module_build.kt index 8d1f573c138..2d81dfce369 100644 --- a/build-logic/src/main/kotlin/org/terasology/gradology/module_build.kt +++ b/build-logic/src/main/kotlin/org/terasology/gradology/module_build.kt @@ -4,10 +4,10 @@ package org.terasology.gradology import org.gradle.api.Project -import org.terasology.module.DependencyInfo -import org.terasology.module.ModuleMetadata -import org.terasology.module.ModuleMetadataJsonAdapter -import org.terasology.naming.Version +import org.terasology.gestalt.module.ModuleMetadata +import org.terasology.gestalt.module.ModuleMetadataJsonAdapter +import org.terasology.gestalt.module.dependencyresolution.DependencyInfo +import org.terasology.gestalt.naming.Version import java.io.File diff --git a/build-logic/src/main/kotlin/reflections-manifest.gradle.kts b/build-logic/src/main/kotlin/reflections-manifest.gradle.kts new file mode 100644 index 00000000000..4696090dbb0 --- /dev/null +++ b/build-logic/src/main/kotlin/reflections-manifest.gradle.kts @@ -0,0 +1,42 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +import org.reflections.Reflections +import org.reflections.scanners.SubTypesScanner +import org.reflections.scanners.TypeAnnotationsScanner +import org.reflections.serializers.JsonSerializer +import org.reflections.util.ConfigurationBuilder +import java.net.URLClassLoader + +tasks.register("cacheReflections") { + description = "Caches reflection output to make regular startup faster. May go stale and need cleanup at times." + + val sourceSets = project.convention.getPlugin(JavaPluginConvention::class.java).sourceSets + val mainSourceSet: SourceSet = sourceSets[SourceSet.MAIN_SOURCE_SET_NAME] + + inputs.files(mainSourceSet.output.classesDirs) + dependsOn(tasks.named("classes")) + outputs.upToDateWhen { tasks.named("classes").get().state.upToDate } + + // TODO: output to the task's own build directory, because putting things in the + // classes directory confuses gradle caching. + val manifestFile = File(mainSourceSet.output.classesDirs.first(), "manifest.json") + outputs.file(manifestFile) + + doLast { + val classPaths = mainSourceSet.compileClasspath.map { it.toURI().toURL() } + val classLoader = URLClassLoader(classPaths.toTypedArray()) + try { + val reflections = Reflections( + ConfigurationBuilder() + .setSerializer(JsonSerializer()) + .addClassLoader(classLoader) + // .filterInputsBy(FilterBuilder.parsePackages("+org")) + .addUrls(inputs.files.map { it.toURI().toURL() }) + .setScanners(TypeAnnotationsScanner(), SubTypesScanner(false))) + reflections.save(manifestFile.toString()) + } catch (e: java.net.MalformedURLException) { + logger.error("Cannot parse input to url", e) + } + } +} diff --git a/build-logic/src/main/kotlin/terasology-module.gradle.kts b/build-logic/src/main/kotlin/terasology-module.gradle.kts index ab6af4cb8db..6a63fde2b36 100644 --- a/build-logic/src/main/kotlin/terasology-module.gradle.kts +++ b/build-logic/src/main/kotlin/terasology-module.gradle.kts @@ -5,11 +5,6 @@ import org.gradle.plugins.ide.eclipse.model.EclipseModel import org.gradle.plugins.ide.idea.model.IdeaModel -import org.reflections.Reflections -import org.reflections.scanners.SubTypesScanner -import org.reflections.scanners.TypeAnnotationsScanner -import org.reflections.util.ConfigurationBuilder -import org.reflections.util.FilterBuilder import org.terasology.gradology.ModuleMetadataForGradle plugins { @@ -121,32 +116,6 @@ tasks.register("createSkeleton") { val mainSourceSet: SourceSet = sourceSets[SourceSet.MAIN_SOURCE_SET_NAME] -tasks.register("cacheReflections") { - description = "Caches reflection output to make regular startup faster. May go stale and need cleanup at times." - inputs.files(mainSourceSet.output.classesDirs) - outputs.file(File(mainSourceSet.output.classesDirs.first(), "reflections.cache")) - dependsOn(tasks.named("classes")) - - outputs.upToDateWhen { tasks.named("classes").get().state.upToDate } - - doFirst { - try { - val reflections = Reflections(ConfigurationBuilder() - .filterInputsBy(FilterBuilder.parsePackages("+org")) - .addUrls(inputs.getFiles().getSingleFile().toURI().toURL()) - .setScanners(TypeAnnotationsScanner(), SubTypesScanner())) - reflections.save(outputs.getFiles().getAsPath()) - } catch (e: java.net.MalformedURLException) { - logger.error("Cannot parse input to url", e) - } - } -} - -tasks.register("cleanReflections") { - description = "Cleans the reflection cache. Useful in cases where it has gone stale and needs regeneration." - delete(tasks.getByName("cacheReflections").outputs.files) -} - // This task syncs everything in the assets dir into the output dir, used when jarring the module tasks.register("syncAssets") { from("assets") @@ -166,7 +135,6 @@ tasks.register("syncDeltas") { // Instructions for packaging a jar file - is a manifest even needed for modules? tasks.named("jar") { // Make sure the assets directory is included - dependsOn("cacheReflections") dependsOn("syncAssets") dependsOn("syncOverrides") dependsOn("syncDeltas") @@ -179,7 +147,6 @@ tasks.named("jar") { } } - finalizedBy("cleanReflections") } tasks.named("test") { diff --git a/build-logic/src/main/kotlin/terasology-repositories.gradle.kts b/build-logic/src/main/kotlin/terasology-repositories.gradle.kts index 7122ecb32a4..f562b420078 100644 --- a/build-logic/src/main/kotlin/terasology-repositories.gradle.kts +++ b/build-logic/src/main/kotlin/terasology-repositories.gradle.kts @@ -14,6 +14,14 @@ repositories { } } + google { + // gestalt uses an annotation library from Google + content { + // (This is an optimization so gradle doesn't try to find our hundreds of modules here.) + excludeGroupByRegex("""org\.terasology(\..+)?""") + } + } + // MovingBlocks Artifactory instance for libs not readily available elsewhere plus our own libs maven { val repoViaEnv = System.getenv()["RESOLUTION_REPO"] diff --git a/build.gradle b/build.gradle index 71018ec415e..d3da6942ff0 100644 --- a/build.gradle +++ b/build.gradle @@ -5,6 +5,7 @@ buildscript { repositories { mavenCentral() + google() gradlePluginPortal() maven { @@ -16,10 +17,6 @@ buildscript { } dependencies { - // Needed for caching reflected data during builds - classpath 'org.terasology:reflections:0.9.12-MB' - classpath 'dom4j:dom4j:1.6.1' - //Spotbugs classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.0.0" @@ -43,6 +40,8 @@ plugins { id "idea" // For the "Build and run using: Intellij IDEA | Gradle" switch id "org.jetbrains.gradle.plugin.idea-ext" version "1.0" + + id("terasology-repositories") } @@ -71,17 +70,6 @@ ext { LwjglVersion = '3.2.3' } -// Declare remote repositories we're interested in - library files will be fetched from here -repositories { - mavenCentral() - - // MovingBlocks Artifactory instance for libs not readily available elsewhere plus our own libs - maven { - name "Terasology Artifactory" - url "http://artifactory.terasology.org/artifactory/virtual-repo-live" - allowInsecureProtocol true // 😱 - } -} /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Natives - Handles pulling in and extracting native libraries for LWJGL // diff --git a/engine-tests/build.gradle b/engine-tests/build.gradle index 17d6f6d2bae..025ede8aa99 100644 --- a/engine-tests/build.gradle +++ b/engine-tests/build.gradle @@ -23,7 +23,7 @@ ext { /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Read the internal version out of the engine-tests module.txt -def moduleFile = file('src/main/resources/module.txt') +def moduleFile = file('src/main/resources/org/terasology/unittest/module.txt') if (!moduleFile.exists()) { println "Failed to find module.txt for engine-tests" @@ -68,6 +68,7 @@ dependencies { implementation("org.junit.jupiter:junit-jupiter-api") implementation("org.junit.jupiter:junit-jupiter-params") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") + testImplementation("org.mockito:mockito-inline:3.7.7") implementation("org.mockito:mockito-junit-jupiter:3.7.7") diff --git a/engine-tests/src/main/java/org/terasology/engine/Environment.java b/engine-tests/src/main/java/org/terasology/engine/Environment.java index 6f49dd890ba..e9346ca9e9a 100644 --- a/engine-tests/src/main/java/org/terasology/engine/Environment.java +++ b/engine-tests/src/main/java/org/terasology/engine/Environment.java @@ -1,18 +1,5 @@ -/* - * Copyright 2014 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"){ } - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine; @@ -20,13 +7,13 @@ import com.google.common.collect.Sets; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.management.AssetManager; import org.terasology.engine.context.Context; import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.core.paths.PathManager; import org.terasology.engine.recording.RecordAndReplayCurrentStatus; import org.terasology.engine.registry.CoreRegistry; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.naming.Name; import java.io.IOException; import java.util.Set; @@ -50,8 +37,11 @@ public Environment(Name... moduleNames) { try { reset(Sets.newHashSet(moduleNames)); } catch (Exception e) { - logger.error("Error", e); - throw new RuntimeException(e); + if (e instanceof RuntimeException) { + throw (RuntimeException) e; + } else { + throw new RuntimeException(e); + } } } @@ -76,7 +66,7 @@ protected void reset(Set moduleNames) throws Exception { AssetManager assetManager = setupAssetManager(); setupBlockManager(assetManager); - + setupExtraDataManager(context); setupCollisionManager(); @@ -137,7 +127,7 @@ protected AssetManager setupEmptyAssetManager() { protected void setupBlockManager(AssetManager assetManager) { // empty } - + protected void setupExtraDataManager(Context context) { // empty } diff --git a/engine-tests/src/main/java/org/terasology/engine/HeadlessEnvironment.java b/engine-tests/src/main/java/org/terasology/engine/HeadlessEnvironment.java index c241e093d7d..7408a8df660 100644 --- a/engine-tests/src/main/java/org/terasology/engine/HeadlessEnvironment.java +++ b/engine-tests/src/main/java/org/terasology/engine/HeadlessEnvironment.java @@ -4,8 +4,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.audio.AudioManager; import org.terasology.engine.audio.StaticSound; import org.terasology.engine.audio.StreamingSound; @@ -54,6 +52,7 @@ import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMesh; import org.terasology.engine.rendering.assets.texture.PNGTextureFormat; import org.terasology.engine.rendering.assets.texture.Texture; +import org.terasology.engine.rendering.assets.texture.TextureData; import org.terasology.engine.rendering.assets.texture.subtexture.Subtexture; import org.terasology.engine.testUtil.ModuleManagerFactory; import org.terasology.engine.world.WorldProvider; @@ -63,6 +62,7 @@ import org.terasology.engine.world.block.family.BlockFamilyLibrary; import org.terasology.engine.world.block.internal.BlockManagerImpl; import org.terasology.engine.world.block.loader.BlockFamilyDefinition; +import org.terasology.engine.world.block.loader.BlockFamilyDefinitionData; import org.terasology.engine.world.block.loader.BlockFamilyDefinitionFormat; import org.terasology.engine.world.block.shapes.BlockShape; import org.terasology.engine.world.block.shapes.BlockShapeImpl; @@ -77,11 +77,12 @@ import org.terasology.engine.world.sun.DefaultCelestialSystem; import org.terasology.engine.world.time.WorldTime; import org.terasology.engine.world.time.WorldTimeImpl; -import org.terasology.module.DependencyResolver; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.ModuleRegistry; -import org.terasology.module.ResolutionResult; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManagerImpl; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.asset.UIElement; import org.terasology.nui.skin.UISkinAsset; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; @@ -128,7 +129,7 @@ protected void setupStorageManager() throws IOException { ModuleEnvironment environment = context.get(ModuleManager.class).getEnvironment(); context.put(BlockFamilyLibrary.class, new BlockFamilyLibrary(environment,context)); - + ExtraBlockDataManager extraDataManager = context.get(ExtraBlockDataManager.class); context.put(StorageManager.class, new ReadWriteStorageManager(savePath, moduleManager.getEnvironment(), @@ -164,7 +165,7 @@ protected void setupBlockManager(AssetManager assetManager) { typeHandlerLibrary.addTypeHandler(BlockFamily.class, new BlockFamilyTypeHandler(blockManager)); typeHandlerLibrary.addTypeHandler(Block.class, new BlockTypeHandler(blockManager)); } - + @Override protected void setupExtraDataManager(Context context) { context.put(ExtraBlockDataManager.class, new ExtraBlockDataManager(context)); @@ -172,7 +173,7 @@ protected void setupExtraDataManager(Context context) { @Override protected AssetManager setupEmptyAssetManager() { - ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManager(); + ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManagerImpl(); assetTypeManager.switchEnvironment(context.get(ModuleManager.class).getEnvironment()); context.put(ModuleAwareAssetTypeManager.class, assetTypeManager); @@ -182,54 +183,59 @@ protected AssetManager setupEmptyAssetManager() { @Override protected AssetManager setupAssetManager() { - ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManager(); + ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManagerImpl(); // cast lambdas explicitly to avoid inconsistent compiler behavior wrt. type inference - assetTypeManager.registerCoreAssetType(Prefab.class, - PojoPrefab::new, false, "prefabs"); - assetTypeManager.registerCoreAssetType(BlockShape.class, + assetTypeManager.createAssetType(Prefab.class, + PojoPrefab::new, "prefabs"); + assetTypeManager.createAssetType(BlockShape.class, BlockShapeImpl::new, "shapes"); - assetTypeManager.registerCoreAssetType(BlockSounds.class, + assetTypeManager.createAssetType(BlockSounds.class, BlockSounds::new, "blockSounds"); - assetTypeManager.registerCoreAssetType(BlockTile.class, + assetTypeManager.createAssetType(BlockTile.class, BlockTile::new, "blockTiles"); - assetTypeManager.registerCoreAssetType(BlockFamilyDefinition.class, - BlockFamilyDefinition::new, "blocks"); + AssetType blockFamilyDefinitionDataAssetType = + assetTypeManager.createAssetType(BlockFamilyDefinition.class, + BlockFamilyDefinition::new, "blocks"); - assetTypeManager.registerCoreAssetType(StaticSound.class, NullSound::new, "sounds"); - assetTypeManager.registerCoreAssetType(StreamingSound.class, NullStreamingSound::new, "music"); - assetTypeManager.registerCoreFormat(BlockFamilyDefinition.class, + assetTypeManager.getAssetFileDataProducer(blockFamilyDefinitionDataAssetType).addAssetFormat( new BlockFamilyDefinitionFormat(assetTypeManager.getAssetManager())); - assetTypeManager.registerCoreAssetType(UISkinAsset.class, + assetTypeManager.createAssetType(StaticSound.class, NullSound::new, "sounds"); + assetTypeManager.createAssetType(StreamingSound.class, NullStreamingSound::new, "music"); + + assetTypeManager.createAssetType(UISkinAsset.class, UISkinAsset::new, "skins"); - assetTypeManager.registerCoreAssetType(BehaviorTree.class, - BehaviorTree::new, false, "behaviors"); - assetTypeManager.registerCoreAssetType(UIElement.class, + assetTypeManager.createAssetType(BehaviorTree.class, + BehaviorTree::new, "behaviors"); + assetTypeManager.createAssetType(UIElement.class, UIElement::new, "ui"); - assetTypeManager.registerCoreAssetType(Font.class, + assetTypeManager.createAssetType(Font.class, FontImpl::new, "fonts"); - assetTypeManager.registerCoreAssetType(Texture.class, - HeadlessTexture::new, "textures", "fonts"); - assetTypeManager.registerCoreFormat(Texture.class, - new PNGTextureFormat(Texture.FilterMode.NEAREST, path -> path.getName(2).toString().equals("textures"))); - assetTypeManager.registerCoreFormat(Texture.class, - new PNGTextureFormat(Texture.FilterMode.LINEAR, path -> path.getName(2).toString().equals("fonts"))); - - assetTypeManager.registerCoreAssetType(Shader.class, + AssetType textureDataAssetType = assetTypeManager.createAssetType(Texture.class, + HeadlessTexture::create, "textures", "fonts"); + assetTypeManager.getAssetFileDataProducer(textureDataAssetType).addAssetFormat( + new PNGTextureFormat(Texture.FilterMode.NEAREST, + path -> path.getPath().get(1).equals("textures"))); + assetTypeManager.getAssetFileDataProducer(textureDataAssetType).addAssetFormat( + new PNGTextureFormat(Texture.FilterMode.LINEAR, path -> path.getPath().get(1).equals("fonts"))); + + assetTypeManager.createAssetType(Shader.class, HeadlessShader::new, "shaders"); - assetTypeManager.registerCoreAssetType(Material.class, + assetTypeManager.createAssetType(Material.class, HeadlessMaterial::new, "materials"); - assetTypeManager.registerCoreAssetType(Mesh.class, + assetTypeManager.createAssetType(Mesh.class, HeadlessMesh::new, "mesh"); - assetTypeManager.registerCoreAssetType(SkeletalMesh.class, + assetTypeManager.createAssetType(SkeletalMesh.class, HeadlessSkeletalMesh::new, "skeletalMesh"); - assetTypeManager.registerCoreAssetType(MeshAnimation.class, MeshAnimationImpl::new, "animations"); + assetTypeManager.createAssetType(MeshAnimation.class, + MeshAnimationImpl::new, "animations"); - assetTypeManager.registerCoreAssetType(Atlas.class, + assetTypeManager.createAssetType(Atlas.class, Atlas::new, "atlas"); - assetTypeManager.registerCoreAssetType(Subtexture.class, Subtexture::new); + assetTypeManager.createAssetType(Subtexture.class, + Subtexture::new); assetTypeManager.switchEnvironment(context.get(ModuleManager.class).getEnvironment()); @@ -253,24 +259,15 @@ protected void setupConfig() { @Override protected void setupModuleManager(Set moduleNames) throws Exception { - ModuleTypeRegistry typeRegistry = new ModuleTypeRegistry(); TypeRegistry.WHITELISTED_CLASSES = ExternalApiWhitelist.CLASSES.stream().map(Class::getName).collect(Collectors.toSet()); - context.put(TypeRegistry.class, typeRegistry); - context.put(ModuleTypeRegistry.class, typeRegistry); - ModuleManager moduleManager = ModuleManagerFactory.create(true); - ModuleRegistry registry = moduleManager.getRegistry(); + ModuleManager moduleManager = ModuleManagerFactory.create(); + ModuleTypeRegistry typeRegistry = new ModuleTypeRegistry(moduleManager.getEnvironment()); - DependencyResolver resolver = new DependencyResolver(registry); - ResolutionResult result = resolver.resolve(moduleNames); + context.put(TypeRegistry.class, typeRegistry); + context.put(ModuleTypeRegistry.class, typeRegistry); - if (result.isSuccess()) { - ModuleEnvironment modEnv = moduleManager.loadEnvironment(result.getModules(), true); - typeRegistry.reload(modEnv); - logger.debug("Loaded modules: " + modEnv.getModuleIdsOrderedByDependencies()); - } else { - logger.error("Could not resolve module dependencies for " + moduleNames); - } + moduleManager.resolveAndLoadEnvironment(moduleNames); context.put(ModuleManager.class, moduleManager); diff --git a/engine-tests/src/main/java/org/terasology/engine/ModuleEnvironmentTest.java b/engine-tests/src/main/java/org/terasology/engine/ModuleEnvironmentTest.java index a8fad2c7179..0e0a46969bf 100644 --- a/engine-tests/src/main/java/org/terasology/engine/ModuleEnvironmentTest.java +++ b/engine-tests/src/main/java/org/terasology/engine/ModuleEnvironmentTest.java @@ -3,19 +3,19 @@ package org.terasology.engine; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.io.TempDir; +import org.terasology.engine.core.module.ExternalApiWhitelist; import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.core.paths.PathManager; -import org.terasology.module.DependencyResolver; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.ResolutionResult; -import org.terasology.reflection.ModuleTypeRegistry; import org.terasology.engine.testUtil.ModuleManagerFactory; +import org.terasology.reflection.ModuleTypeRegistry; +import org.terasology.reflection.TypeRegistry; import java.nio.file.Path; +import java.util.stream.Collectors; -import static org.junit.jupiter.api.Assumptions.assumeTrue; - +@Tag("MteTest") public abstract class ModuleEnvironmentTest { protected ModuleManager moduleManager; protected ModuleTypeRegistry typeRegistry; @@ -25,14 +25,9 @@ public void before(@TempDir Path tempHome) throws Exception { PathManager.getInstance().useOverrideHomePath(tempHome); moduleManager = ModuleManagerFactory.create(); - - DependencyResolver resolver = new DependencyResolver(moduleManager.getRegistry()); - ResolutionResult result = resolver.resolve(moduleManager.getRegistry().getModuleIds()); - - assumeTrue(result.isSuccess()); - - ModuleEnvironment environment = moduleManager.loadEnvironment(result.getModules(), true); - typeRegistry = new ModuleTypeRegistry(environment); + TypeRegistry.WHITELISTED_CLASSES = ExternalApiWhitelist.CLASSES.stream().map(Class::getName).collect(Collectors.toSet()); + TypeRegistry.WHITELISTED_PACKAGES = ExternalApiWhitelist.PACKAGES; + typeRegistry = new ModuleTypeRegistry(moduleManager.getEnvironment()); setup(); } diff --git a/engine-tests/src/main/java/org/terasology/engine/TerasologyTestingEnvironment.java b/engine-tests/src/main/java/org/terasology/engine/TerasologyTestingEnvironment.java index 797a77b37fb..6011b56a58b 100644 --- a/engine-tests/src/main/java/org/terasology/engine/TerasologyTestingEnvironment.java +++ b/engine-tests/src/main/java/org/terasology/engine/TerasologyTestingEnvironment.java @@ -8,6 +8,8 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.io.TempDir; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.terasology.engine.context.Context; import org.terasology.engine.core.ComponentSystemManager; import org.terasology.engine.core.EngineTime; @@ -20,7 +22,6 @@ import org.terasology.engine.game.Game; import org.terasology.engine.logic.console.Console; import org.terasology.engine.logic.console.ConsoleImpl; -import org.terasology.naming.Name; import org.terasology.engine.network.NetworkSystem; import org.terasology.engine.network.internal.NetworkSystemImpl; import org.terasology.engine.persistence.StorageManager; @@ -31,9 +32,10 @@ import org.terasology.engine.recording.RecordAndReplaySerializer; import org.terasology.engine.recording.RecordAndReplayUtils; import org.terasology.engine.recording.RecordedEventStore; -import org.terasology.reflection.TypeRegistry; import org.terasology.engine.world.block.BlockManager; import org.terasology.engine.world.chunks.blockdata.ExtraBlockDataManager; +import org.terasology.gestalt.naming.Name; +import org.terasology.reflection.TypeRegistry; import java.nio.file.Path; @@ -44,6 +46,8 @@ * */ public abstract class TerasologyTestingEnvironment { + private static final Logger logger = LoggerFactory.getLogger(TerasologyTestingEnvironment.class); + protected static Context context; private static ModuleManager moduleManager; @@ -113,7 +117,11 @@ public void setup() throws Exception { @AfterAll public static void tearDown() throws Exception { - env.close(); + if (env != null) { + env.close(); + } else { + logger.warn("TTE.env unexpectedly null during tearDown"); + } } diff --git a/engine-tests/src/main/java/org/terasology/engine/WorldProvidingHeadlessEnvironment.java b/engine-tests/src/main/java/org/terasology/engine/WorldProvidingHeadlessEnvironment.java index b09074e430c..61452547de9 100644 --- a/engine-tests/src/main/java/org/terasology/engine/WorldProvidingHeadlessEnvironment.java +++ b/engine-tests/src/main/java/org/terasology/engine/WorldProvidingHeadlessEnvironment.java @@ -15,7 +15,7 @@ */ package org.terasology.engine; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.world.BlockEntityRegistry; import org.terasology.engine.world.WorldProvider; diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/EntityRefComponent.java b/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/EntityRefComponent.java deleted file mode 100644 index 8a8eb08e8e7..00000000000 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/EntityRefComponent.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.terasology.engine.entitySystem.stubs; - -import org.terasology.engine.entitySystem.Component; -import org.terasology.engine.entitySystem.entity.EntityRef; - -/** - */ -public class EntityRefComponent implements Component { - - public EntityRef entityRef = EntityRef.NULL; - - public EntityRefComponent() { - - } - - public EntityRefComponent(EntityRef ref) { - this.entityRef = ref; - } -} diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/ForceBlockActiveComponent.java b/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/ForceBlockActiveComponent.java deleted file mode 100644 index 0d2ffd2b9fc..00000000000 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/ForceBlockActiveComponent.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.terasology.engine.entitySystem.stubs; - -import org.terasology.engine.entitySystem.Component; -import org.terasology.engine.world.block.ForceBlockActive; - -/** - */ -@ForceBlockActive -public class ForceBlockActiveComponent implements Component { -} diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/GetterSetterComponent.java b/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/GetterSetterComponent.java deleted file mode 100644 index 4d383e6f07d..00000000000 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/GetterSetterComponent.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.terasology.engine.entitySystem.stubs; - -import org.joml.Vector3f; -import org.terasology.engine.entitySystem.Component; - -/** - */ -public class GetterSetterComponent implements Component { - public transient boolean getterUsed; - public transient boolean setterUsed; - - private Vector3f value = new Vector3f(0, 0, 0); - - public Vector3f getValue() { - getterUsed = true; - return value; - } - - public void setValue(Vector3f value) { - this.value = value; - setterUsed = true; - } -} diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/ListOfEnumsComponent.java b/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/ListOfEnumsComponent.java deleted file mode 100644 index 7a4dd6eac8a..00000000000 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/ListOfEnumsComponent.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2017 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.terasology.engine.entitySystem.stubs; - -import org.terasology.engine.entitySystem.Component; -import org.terasology.engine.math.Side; - -import java.util.ArrayList; -import java.util.List; - -public class ListOfEnumsComponent implements Component { - public List elements = new ArrayList<>(); -} diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/ListOfObjectComponent.java b/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/ListOfObjectComponent.java deleted file mode 100644 index 28ed1135385..00000000000 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/ListOfObjectComponent.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.terasology.engine.entitySystem.stubs; - -import org.terasology.engine.entitySystem.Component; -import org.terasology.reflection.MappedContainer; - -import java.util.ArrayList; -import java.util.List; - -public class ListOfObjectComponent implements Component { - public String shortName; - public List elements = new ArrayList<>(); - - @MappedContainer - public static class SubElement { - public String id; - public String type; - } -} diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/MappedContainerComponent.java b/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/MappedContainerComponent.java deleted file mode 100644 index 7dca8d6f4c3..00000000000 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/MappedContainerComponent.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2015 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.terasology.engine.entitySystem.stubs; - -import org.terasology.engine.entitySystem.Component; -import org.terasology.reflection.MappedContainer; - -import java.util.Set; - -public class MappedContainerComponent implements Component { - public Set containers; - - @MappedContainer - public static class Cont { - public String value; - } -} diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/MappedTypeComponent.java b/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/MappedTypeComponent.java deleted file mode 100644 index dbe61c481e2..00000000000 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/MappedTypeComponent.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.terasology.engine.entitySystem.stubs; - -import org.terasology.engine.entitySystem.Component; -import org.terasology.reflection.MappedContainer; - -/** - */ -public class MappedTypeComponent implements Component { - - public InnerType val = new InnerType(); - public Number number = 2; - - @MappedContainer - public static class InnerType { - public static final int STATIC_VALUE = 2; - } - -} diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/OrderedMapTestComponent.java b/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/OrderedMapTestComponent.java deleted file mode 100644 index 164f87fc1cd..00000000000 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/OrderedMapTestComponent.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.terasology.engine.entitySystem.stubs; - -import org.terasology.engine.entitySystem.Component; - -import java.util.Map; - -public final class OrderedMapTestComponent implements Component { - public Map orderedMap; -} diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/OwnerComponent.java b/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/OwnerComponent.java deleted file mode 100644 index 52d28024263..00000000000 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/OwnerComponent.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.terasology.engine.entitySystem.stubs; - -import org.terasology.engine.entitySystem.Component; -import org.terasology.engine.entitySystem.Owns; -import org.terasology.engine.entitySystem.entity.EntityRef; - -/** - */ -public class OwnerComponent implements Component { - @Owns - public EntityRef child = EntityRef.NULL; -} diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/RetainedOnBlockChangeComponent.java b/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/RetainedOnBlockChangeComponent.java deleted file mode 100644 index 0a66a0903ed..00000000000 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/RetainedOnBlockChangeComponent.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.terasology.engine.entitySystem.stubs; - -import org.terasology.engine.entitySystem.Component; -import org.terasology.engine.world.block.ForceBlockActive; - -/** - */ -@ForceBlockActive(retainUnalteredOnBlockChange = true) -public class RetainedOnBlockChangeComponent implements Component { - public int value; - - public RetainedOnBlockChangeComponent() { - } - - public RetainedOnBlockChangeComponent(int value) { - this.value = value; - } -} diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/UnsupportedTypeComponent.java b/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/UnsupportedTypeComponent.java deleted file mode 100644 index e12278f1119..00000000000 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/UnsupportedTypeComponent.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.terasology.engine.entitySystem.stubs; - -import org.terasology.engine.entitySystem.Component; -import org.terasology.engine.entitySystem.systems.internal.DoNotAutoRegister; - -/** - */ -@DoNotAutoRegister -public class UnsupportedTypeComponent implements Component { - public UnsupportedType value; - public UnsupportedType2 value2; - public UnsupportedType3 value3; - - public interface UnsupportedType3 { - - } - - public static final class UnsupportedType { - private UnsupportedType() { - } - } - - public abstract static class UnsupportedType2 { - - } - - -} diff --git a/engine-tests/src/main/java/org/terasology/engine/testUtil/Assertions.java b/engine-tests/src/main/java/org/terasology/engine/testUtil/Assertions.java new file mode 100644 index 00000000000..1447776f30a --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/engine/testUtil/Assertions.java @@ -0,0 +1,25 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +package org.terasology.engine.testUtil; + +import com.google.common.collect.Iterables; + +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.fail; + +public class Assertions { + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") + public static void assertNotEmpty(Optional obj) { + if (!obj.isPresent()) { + fail("Empty result."); + } + } + + public static void assertNotEmpty(Iterable obj) { + if (Iterables.isEmpty(obj)) { + fail("Empty result."); + } + } +} diff --git a/engine-tests/src/main/java/org/terasology/engine/testUtil/ModuleManagerFactory.java b/engine-tests/src/main/java/org/terasology/engine/testUtil/ModuleManagerFactory.java index d4ef5229536..62ee685a7ab 100644 --- a/engine-tests/src/main/java/org/terasology/engine/testUtil/ModuleManagerFactory.java +++ b/engine-tests/src/main/java/org/terasology/engine/testUtil/ModuleManagerFactory.java @@ -2,41 +2,21 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.testUtil; -import com.google.common.collect.Sets; +import com.google.common.collect.ImmutableList; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.engine.entitySystem.stubs.StringComponent; -import org.terasology.module.Module; - -import java.io.IOException; -import java.net.URISyntaxException; -import java.util.Collections; - -import static com.google.common.base.Verify.verify; -import static org.terasology.engine.core.TerasologyConstants.ENGINE_MODULE; +import org.terasology.gestalt.module.Module; +import org.terasology.nui.UIWidget; public final class ModuleManagerFactory { - private ModuleManagerFactory() { } - - public static ModuleManager create() throws Exception { - return create(false); + private ModuleManagerFactory() { } - public static ModuleManager create(boolean loadModulesFromClasspath) throws Exception { - ModuleManager moduleManager = new ModuleManager("", Collections.emptyList(), loadModulesFromClasspath); - loadUnitTestModule(moduleManager); + public static ModuleManager create() throws Exception { + // Loading screens, among other things, break when NUI classes are not added to engine. + ModuleManager moduleManager = new ModuleManager("", ImmutableList.of(UIWidget.class)); + Module unittestModule = moduleManager.registerPackageModule("org.terasology.unittest"); + moduleManager.resolveAndLoadEnvironment(unittestModule.getId()); return moduleManager; } - - public static void loadUnitTestModule(ModuleManager manager) throws IOException, URISyntaxException { - // using the StringComponent stub class as representative example of classes in the unittest module - Module testModule = manager.loadClasspathModule(StringComponent.class); - verify(testModule.getMetadata().getId().toString().equals("unittest"), - "Intended to load the unittest module but ended up with this instead: %s", testModule); - manager.loadEnvironment( - Sets.newHashSet( - manager.getRegistry().getLatestModuleVersion(ENGINE_MODULE), - testModule - ), true); - } } diff --git a/engine-tests/src/main/java/org/terasology/unittest/ExampleClass.java b/engine-tests/src/main/java/org/terasology/unittest/ExampleClass.java new file mode 100644 index 00000000000..a1421dc1626 --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/ExampleClass.java @@ -0,0 +1,10 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +package org.terasology.unittest; + +import org.terasology.gestalt.module.sandbox.API; + +@API +public class ExampleClass implements ExampleInterface { +} diff --git a/engine-tests/src/main/java/org/terasology/unittest/ExampleInterface.java b/engine-tests/src/main/java/org/terasology/unittest/ExampleInterface.java new file mode 100644 index 00000000000..64c7872f905 --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/ExampleInterface.java @@ -0,0 +1,10 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +package org.terasology.unittest; + +import org.terasology.gestalt.module.sandbox.API; + +@API +public interface ExampleInterface { +} diff --git a/engine-tests/src/main/java/org/terasology/unittest/stubs/EntityRefComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/EntityRefComponent.java new file mode 100644 index 00000000000..d15325be9cf --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/EntityRefComponent.java @@ -0,0 +1,21 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 +package org.terasology.unittest.stubs; + +import org.terasology.engine.entitySystem.Component; +import org.terasology.engine.entitySystem.entity.EntityRef; + +/** + */ +public class EntityRefComponent implements Component { + + public EntityRef entityRef = EntityRef.NULL; + + public EntityRefComponent() { + + } + + public EntityRefComponent(EntityRef ref) { + this.entityRef = ref; + } +} diff --git a/engine-tests/src/main/java/org/terasology/unittest/stubs/ForceBlockActiveComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/ForceBlockActiveComponent.java new file mode 100644 index 00000000000..97568be510d --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/ForceBlockActiveComponent.java @@ -0,0 +1,12 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 +package org.terasology.unittest.stubs; + +import org.terasology.engine.entitySystem.Component; +import org.terasology.engine.world.block.ForceBlockActive; + +/** + */ +@ForceBlockActive +public class ForceBlockActiveComponent implements Component { +} diff --git a/engine-tests/src/main/java/org/terasology/unittest/stubs/GetterSetterComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/GetterSetterComponent.java new file mode 100644 index 00000000000..ac80ec08883 --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/GetterSetterComponent.java @@ -0,0 +1,25 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 +package org.terasology.unittest.stubs; + +import org.joml.Vector3f; +import org.terasology.engine.entitySystem.Component; + +/** + */ +public class GetterSetterComponent implements Component { + public transient boolean getterUsed; + public transient boolean setterUsed; + + private Vector3f value = new Vector3f(0, 0, 0); + + public Vector3f getValue() { + getterUsed = true; + return value; + } + + public void setValue(Vector3f value) { + this.value = value; + setterUsed = true; + } +} diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/IntegerComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/IntegerComponent.java similarity index 51% rename from engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/IntegerComponent.java rename to engine-tests/src/main/java/org/terasology/unittest/stubs/IntegerComponent.java index f9856f93957..83e7e35ee7f 100644 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/IntegerComponent.java +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/IntegerComponent.java @@ -1,19 +1,6 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.terasology.engine.entitySystem.stubs; +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 +package org.terasology.unittest.stubs; import org.terasology.engine.entitySystem.Component; diff --git a/engine-tests/src/main/java/org/terasology/unittest/stubs/ListOfEnumsComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/ListOfEnumsComponent.java new file mode 100644 index 00000000000..ada27a02cbf --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/ListOfEnumsComponent.java @@ -0,0 +1,13 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 +package org.terasology.unittest.stubs; + +import org.terasology.engine.entitySystem.Component; +import org.terasology.engine.math.Side; + +import java.util.ArrayList; +import java.util.List; + +public class ListOfEnumsComponent implements Component { + public List elements = new ArrayList<>(); +} diff --git a/engine-tests/src/main/java/org/terasology/unittest/stubs/ListOfObjectComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/ListOfObjectComponent.java new file mode 100644 index 00000000000..ce450217308 --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/ListOfObjectComponent.java @@ -0,0 +1,21 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +package org.terasology.unittest.stubs; + +import org.terasology.engine.entitySystem.Component; +import org.terasology.reflection.MappedContainer; + +import java.util.ArrayList; +import java.util.List; + +public class ListOfObjectComponent implements Component { + public String shortName; + public List elements = new ArrayList<>(); + + @MappedContainer + public static class SubElement { + public String id; + public String type; + } +} diff --git a/engine-tests/src/main/java/org/terasology/unittest/stubs/MappedContainerComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/MappedContainerComponent.java new file mode 100644 index 00000000000..7b2ea437345 --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/MappedContainerComponent.java @@ -0,0 +1,17 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 +package org.terasology.unittest.stubs; + +import org.terasology.engine.entitySystem.Component; +import org.terasology.reflection.MappedContainer; + +import java.util.Set; + +public class MappedContainerComponent implements Component { + public Set containers; + + @MappedContainer + public static class Cont { + public String value; + } +} diff --git a/engine-tests/src/main/java/org/terasology/unittest/stubs/MappedTypeComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/MappedTypeComponent.java new file mode 100644 index 00000000000..b149b2cb0a8 --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/MappedTypeComponent.java @@ -0,0 +1,21 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +package org.terasology.unittest.stubs; + +import org.terasology.engine.entitySystem.Component; +import org.terasology.reflection.MappedContainer; + +/** + */ +public class MappedTypeComponent implements Component { + + public InnerType val = new InnerType(); + public Number number = 2; + + @MappedContainer + public static class InnerType { + public static final int STATIC_VALUE = 2; + } + +} diff --git a/engine-tests/src/main/java/org/terasology/unittest/stubs/OrderedMapTestComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/OrderedMapTestComponent.java new file mode 100644 index 00000000000..61fe23e9dfb --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/OrderedMapTestComponent.java @@ -0,0 +1,11 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 +package org.terasology.unittest.stubs; + +import org.terasology.engine.entitySystem.Component; + +import java.util.Map; + +public final class OrderedMapTestComponent implements Component { + public Map orderedMap; +} diff --git a/engine-tests/src/main/java/org/terasology/unittest/stubs/OwnerComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/OwnerComponent.java new file mode 100644 index 00000000000..d5e670de38f --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/OwnerComponent.java @@ -0,0 +1,14 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 +package org.terasology.unittest.stubs; + +import org.terasology.engine.entitySystem.Component; +import org.terasology.engine.entitySystem.Owns; +import org.terasology.engine.entitySystem.entity.EntityRef; + +/** + */ +public class OwnerComponent implements Component { + @Owns + public EntityRef child = EntityRef.NULL; +} diff --git a/engine-tests/src/main/java/org/terasology/unittest/stubs/RetainedOnBlockChangeComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/RetainedOnBlockChangeComponent.java new file mode 100644 index 00000000000..b11a9498a1c --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/RetainedOnBlockChangeComponent.java @@ -0,0 +1,20 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 +package org.terasology.unittest.stubs; + +import org.terasology.engine.entitySystem.Component; +import org.terasology.engine.world.block.ForceBlockActive; + +/** + */ +@ForceBlockActive(retainUnalteredOnBlockChange = true) +public class RetainedOnBlockChangeComponent implements Component { + public int value; + + public RetainedOnBlockChangeComponent() { + } + + public RetainedOnBlockChangeComponent(int value) { + this.value = value; + } +} diff --git a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/StringComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/StringComponent.java similarity index 95% rename from engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/StringComponent.java rename to engine-tests/src/main/java/org/terasology/unittest/stubs/StringComponent.java index c3ce92fa793..83b27051918 100644 --- a/engine-tests/src/main/java/org/terasology/engine/entitySystem/stubs/StringComponent.java +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/StringComponent.java @@ -1,6 +1,6 @@ // Copyright 2021 The Terasology Foundation // SPDX-License-Identifier: Apache-2.0 -package org.terasology.engine.entitySystem.stubs; +package org.terasology.unittest.stubs; import com.google.common.base.MoreObjects; import com.google.common.base.Objects; diff --git a/engine-tests/src/main/java/org/terasology/unittest/stubs/UnsupportedTypeComponent.java b/engine-tests/src/main/java/org/terasology/unittest/stubs/UnsupportedTypeComponent.java new file mode 100644 index 00000000000..330c97fbd39 --- /dev/null +++ b/engine-tests/src/main/java/org/terasology/unittest/stubs/UnsupportedTypeComponent.java @@ -0,0 +1,31 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +package org.terasology.unittest.stubs; + +import org.terasology.engine.entitySystem.Component; +import org.terasology.engine.entitySystem.systems.internal.DoNotAutoRegister; + +/** + */ +@DoNotAutoRegister +public class UnsupportedTypeComponent implements Component { + public UnsupportedType value; + public UnsupportedType2 value2; + public UnsupportedType3 value3; + + public interface UnsupportedType3 { + + } + + public static final class UnsupportedType { + private UnsupportedType() { + } + } + + public abstract static class UnsupportedType2 { + + } + + +} diff --git a/engine-tests/src/main/resources/assets/behaviors/BehaviorA.behavior b/engine-tests/src/main/resources/org/terasology/unittest/assets/behaviors/BehaviorA.behavior similarity index 100% rename from engine-tests/src/main/resources/assets/behaviors/BehaviorA.behavior rename to engine-tests/src/main/resources/org/terasology/unittest/assets/behaviors/BehaviorA.behavior diff --git a/engine-tests/src/main/resources/assets/behaviors/BehaviorB.behavior b/engine-tests/src/main/resources/org/terasology/unittest/assets/behaviors/BehaviorB.behavior similarity index 100% rename from engine-tests/src/main/resources/assets/behaviors/BehaviorB.behavior rename to engine-tests/src/main/resources/org/terasology/unittest/assets/behaviors/BehaviorB.behavior diff --git a/engine-tests/src/main/resources/assets/behaviors/BehaviorEmptyLookup.behavior b/engine-tests/src/main/resources/org/terasology/unittest/assets/behaviors/BehaviorEmptyLookup.behavior similarity index 100% rename from engine-tests/src/main/resources/assets/behaviors/BehaviorEmptyLookup.behavior rename to engine-tests/src/main/resources/org/terasology/unittest/assets/behaviors/BehaviorEmptyLookup.behavior diff --git a/engine-tests/src/main/resources/assets/behaviors/BehaviorLookup.behavior b/engine-tests/src/main/resources/org/terasology/unittest/assets/behaviors/BehaviorLookup.behavior similarity index 100% rename from engine-tests/src/main/resources/assets/behaviors/BehaviorLookup.behavior rename to engine-tests/src/main/resources/org/terasology/unittest/assets/behaviors/BehaviorLookup.behavior diff --git a/engine-tests/src/main/resources/assets/behaviors/BehaviorLookupB.behavior b/engine-tests/src/main/resources/org/terasology/unittest/assets/behaviors/BehaviorLookupB.behavior similarity index 100% rename from engine-tests/src/main/resources/assets/behaviors/BehaviorLookupB.behavior rename to engine-tests/src/main/resources/org/terasology/unittest/assets/behaviors/BehaviorLookupB.behavior diff --git a/engine-tests/src/main/resources/assets/prefabs/inheritsComponent.prefab b/engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/inheritsComponent.prefab similarity index 100% rename from engine-tests/src/main/resources/assets/prefabs/inheritsComponent.prefab rename to engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/inheritsComponent.prefab diff --git a/engine-tests/src/main/resources/assets/prefabs/multilevelInheritance.prefab b/engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/multilevelInheritance.prefab similarity index 100% rename from engine-tests/src/main/resources/assets/prefabs/multilevelInheritance.prefab rename to engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/multilevelInheritance.prefab diff --git a/engine-tests/src/main/resources/assets/prefabs/simple.prefab b/engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/simple.prefab similarity index 100% rename from engine-tests/src/main/resources/assets/prefabs/simple.prefab rename to engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/simple.prefab diff --git a/engine-tests/src/main/resources/assets/prefabs/withCollectionOfMappedContainers.prefab b/engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/withCollectionOfMappedContainers.prefab similarity index 100% rename from engine-tests/src/main/resources/assets/prefabs/withCollectionOfMappedContainers.prefab rename to engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/withCollectionOfMappedContainers.prefab diff --git a/engine-tests/src/main/resources/assets/prefabs/withComponent.prefab b/engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/withComponent.prefab similarity index 100% rename from engine-tests/src/main/resources/assets/prefabs/withComponent.prefab rename to engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/withComponent.prefab diff --git a/engine-tests/src/main/resources/assets/prefabs/withComponentContainingOrderedMap.prefab b/engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/withComponentContainingOrderedMap.prefab similarity index 100% rename from engine-tests/src/main/resources/assets/prefabs/withComponentContainingOrderedMap.prefab rename to engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/withComponentContainingOrderedMap.prefab diff --git a/engine-tests/src/main/resources/assets/prefabs/withListContainer.prefab b/engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/withListContainer.prefab similarity index 100% rename from engine-tests/src/main/resources/assets/prefabs/withListContainer.prefab rename to engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/withListContainer.prefab diff --git a/engine-tests/src/main/resources/assets/prefabs/withListEnumContainer.prefab b/engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/withListEnumContainer.prefab similarity index 100% rename from engine-tests/src/main/resources/assets/prefabs/withListEnumContainer.prefab rename to engine-tests/src/main/resources/org/terasology/unittest/assets/prefabs/withListEnumContainer.prefab diff --git a/engine-tests/src/main/resources/module.txt b/engine-tests/src/main/resources/org/terasology/unittest/module.txt similarity index 77% rename from engine-tests/src/main/resources/module.txt rename to engine-tests/src/main/resources/org/terasology/unittest/module.txt index 648e9498cdf..483211bd57a 100644 --- a/engine-tests/src/main/resources/module.txt +++ b/engine-tests/src/main/resources/org/terasology/unittest/module.txt @@ -1,6 +1,6 @@ { "id" : "unittest", - "version" : "4.4.0-SNAPSHOT", + "version" : "4.4.0", "displayName" : "Terasology Engine Test", "description" : "Engine unit test content" } diff --git a/engine-tests/src/test/java/org/terasology/config/flexible/AutoConfigManagerTest.java b/engine-tests/src/test/java/org/terasology/config/flexible/AutoConfigManagerTest.java index 28cbb80dc43..a63538cfc19 100644 --- a/engine-tests/src/test/java/org/terasology/config/flexible/AutoConfigManagerTest.java +++ b/engine-tests/src/test/java/org/terasology/config/flexible/AutoConfigManagerTest.java @@ -14,8 +14,8 @@ import org.terasology.engine.persistence.typeHandling.gson.GsonPersistedDataReader; import org.terasology.engine.persistence.typeHandling.gson.GsonPersistedDataSerializer; import org.terasology.engine.persistence.typeHandling.gson.GsonPersistedDataWriter; -import org.terasology.module.ModuleEnvironment; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.naming.Name; import org.terasology.persistence.serializers.Serializer; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; diff --git a/engine-tests/src/test/java/org/terasology/config/flexible/ui/SettingWidgetFactoryTest.java b/engine-tests/src/test/java/org/terasology/config/flexible/ui/SettingWidgetFactoryTest.java index fcb936d6fe4..b5104da42a0 100644 --- a/engine-tests/src/test/java/org/terasology/config/flexible/ui/SettingWidgetFactoryTest.java +++ b/engine-tests/src/test/java/org/terasology/config/flexible/ui/SettingWidgetFactoryTest.java @@ -4,11 +4,11 @@ import com.google.common.collect.Lists; import org.junit.jupiter.api.Test; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.management.AssetTypeManager; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.config.flexible.Setting; import org.terasology.engine.config.flexible.constraints.NumberRangeConstraint; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.assets.management.AssetTypeManager; +import org.terasology.gestalt.module.ModuleEnvironment; import java.util.Optional; diff --git a/engine-tests/src/test/java/org/terasology/documentation/ApiScraper.java b/engine-tests/src/test/java/org/terasology/documentation/ApiScraper.java index 8a891c0b357..880a5a83538 100644 --- a/engine-tests/src/test/java/org/terasology/documentation/ApiScraper.java +++ b/engine-tests/src/test/java/org/terasology/documentation/ApiScraper.java @@ -19,8 +19,8 @@ import com.google.common.collect.SortedSetMultimap; import org.terasology.engine.core.module.ExternalApiWhitelist; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.testUtil.ModuleManagerFactory; import java.net.URL; diff --git a/engine-tests/src/test/java/org/terasology/documentation/apiScraper/CompleteApiScraper.java b/engine-tests/src/test/java/org/terasology/documentation/apiScraper/CompleteApiScraper.java index 2303d8d19ae..96812acd58b 100644 --- a/engine-tests/src/test/java/org/terasology/documentation/apiScraper/CompleteApiScraper.java +++ b/engine-tests/src/test/java/org/terasology/documentation/apiScraper/CompleteApiScraper.java @@ -21,8 +21,8 @@ import org.slf4j.LoggerFactory; import org.terasology.engine.core.module.ExternalApiWhitelist; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.testUtil.ModuleManagerFactory; import java.lang.reflect.Constructor; diff --git a/engine-tests/src/test/java/org/terasology/engine/core/module/ClasspathCompromisingModuleFactoryTest.java b/engine-tests/src/test/java/org/terasology/engine/core/module/ClasspathCompromisingModuleFactoryTest.java new file mode 100644 index 00000000000..79309c1c0b5 --- /dev/null +++ b/engine-tests/src/test/java/org/terasology/engine/core/module/ClasspathCompromisingModuleFactoryTest.java @@ -0,0 +1,63 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +package org.terasology.engine.core.module; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleFactory; +import org.terasology.gestalt.module.ModuleMetadata; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; +import org.terasology.gestalt.naming.Version; +import org.terasology.unittest.ExampleClass; + +import java.io.File; +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class ClasspathCompromisingModuleFactoryTest { + final static Class someClassOutsideTheModule = ClasspathCompromisingModuleFactory.class; + + @Test + public void directoryModuleContainsClass() { + ModuleFactory factory = new ClasspathCompromisingModuleFactory(); + + // This test assumes that the unittest module is under the current working directory (`engine-test/`) + File engineTestDirectory = new File(System.getProperty("user.dir", ".")); + ModuleMetadata metadata = new ModuleMetadata(new Name("unittest"), new Version("1.0.0")); + Module module = factory.createDirectoryModule(metadata, engineTestDirectory); + + // and that ExampleClass is inside that directory + assertTrue(module.getClassPredicate().test(ExampleClass.class)); + // and that this other class (in engine, not engine-test) is outside that directory. + assertFalse(module.getClassPredicate().test(someClassOutsideTheModule)); + + // These assumptions could break if things get moved around enough. + } + + @Test + @Disabled("TODO: need a jar module containing classes") + public void archiveModuleContainsClass() throws IOException { + ModuleFactory factory = new ClasspathCompromisingModuleFactory(); + + Module module = factory.createArchiveModule(new File("FIXME.jar")); + + Class someClassInTheModule = module.getModuleManifest().getTypesAnnotatedWith(API.class).iterator().next(); + + assertTrue(module.getClassPredicate().test(someClassInTheModule)); + assertFalse(module.getClassPredicate().test(someClassOutsideTheModule)); + } + + @Test + @Disabled("TODO: need a jar module alongside a classes directory") + public void directoryModuleContainsClassLoadedFromJar() { + // Example: + // - m/build/classes/org/t/Foo.class + // - m/build/libs/foo.jar + // load m as directory module while foo.jar is on classpath + } +} diff --git a/engine-tests/src/test/java/org/terasology/engine/module/ModuleDownloadListGeneratorTest.java b/engine-tests/src/test/java/org/terasology/engine/core/module/ModuleDownloadListGeneratorTest.java similarity index 74% rename from engine-tests/src/test/java/org/terasology/engine/module/ModuleDownloadListGeneratorTest.java rename to engine-tests/src/test/java/org/terasology/engine/core/module/ModuleDownloadListGeneratorTest.java index 77ad61b8a75..82b93db423a 100644 --- a/engine-tests/src/test/java/org/terasology/engine/module/ModuleDownloadListGeneratorTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/core/module/ModuleDownloadListGeneratorTest.java @@ -1,35 +1,21 @@ -/* - * Copyright 2017 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.core.module; -import com.google.common.collect.ImmutableList; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.reflections.Reflections; import org.terasology.engine.core.TerasologyConstants; -import org.terasology.module.BaseModule; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.module.ModuleMetadata; -import org.terasology.module.ModuleRegistry; -import org.terasology.module.ResolutionResult; -import org.terasology.module.TableModuleRegistry; -import org.terasology.naming.Name; -import org.terasology.naming.Version; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleMetadata; +import org.terasology.gestalt.module.ModuleRegistry; +import org.terasology.gestalt.module.TableModuleRegistry; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; +import org.terasology.gestalt.module.resources.EmptyFileSource; +import org.terasology.gestalt.naming.Name; +import org.terasology.gestalt.naming.Version; -import java.net.URL; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; @@ -100,24 +86,8 @@ private Module buildSimpleModule(String id, String version) { if (version != null) { metadata.setVersion(new Version(version)); } - return new BaseModule(Collections.emptyList(), metadata) { - @Override - public ImmutableList getClasspaths() { - return null; - } - - @Override - public boolean isOnClasspath() { - return false; - } - - @Override - public boolean isCodeModule() { - return false; - } - }; + return new Module(metadata, new EmptyFileSource(), Collections.emptyList(), new Reflections(), (c) -> false); } - private Module buildEngineModule(String version) { return buildSimpleModule(TerasologyConstants.ENGINE_MODULE.toString(), version); } diff --git a/engine-tests/src/test/java/org/terasology/entitySystem/PojoEntityManagerTest.java b/engine-tests/src/test/java/org/terasology/engine/entitySystem/PojoEntityManagerTest.java similarity index 96% rename from engine-tests/src/test/java/org/terasology/entitySystem/PojoEntityManagerTest.java rename to engine-tests/src/test/java/org/terasology/engine/entitySystem/PojoEntityManagerTest.java index 46331961cee..cf14a997f57 100644 --- a/engine-tests/src/test/java/org/terasology/entitySystem/PojoEntityManagerTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/entitySystem/PojoEntityManagerTest.java @@ -1,4 +1,4 @@ -// Copyright 2020 The Terasology Foundation +// Copyright 2021 The Terasology Foundation // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.entitySystem; @@ -6,14 +6,13 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.terasology.assets.AssetFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.engine.core.module.ModuleManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.context.Context; import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.core.bootstrap.EntitySystemSetupUtil; -import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.entitySystem.entity.EntityManager; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.entity.internal.PojoEntityManager; @@ -27,15 +26,16 @@ import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.entitySystem.prefab.PrefabData; import org.terasology.engine.entitySystem.prefab.internal.PojoPrefab; -import org.terasology.engine.entitySystem.stubs.EntityRefComponent; -import org.terasology.engine.entitySystem.stubs.IntegerComponent; -import org.terasology.engine.entitySystem.stubs.StringComponent; +import org.terasology.unittest.stubs.EntityRefComponent; +import org.terasology.unittest.stubs.IntegerComponent; +import org.terasology.unittest.stubs.StringComponent; import org.terasology.engine.network.NetworkMode; import org.terasology.engine.network.NetworkSystem; import org.terasology.engine.recording.RecordAndReplayCurrentStatus; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.testUtil.ModuleManagerFactory; import org.terasology.engine.utilities.Assets; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManagerImpl; import java.util.Collections; import java.util.Iterator; @@ -65,9 +65,8 @@ public static void setupClass() throws Exception { context = new ContextImpl(); ModuleManager moduleManager = ModuleManagerFactory.create(); context.put(ModuleManager.class, moduleManager); - ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManager(); - assetTypeManager.registerCoreAssetType(Prefab.class, - (AssetFactory) PojoPrefab::new, "prefabs"); + ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManagerImpl(); + assetTypeManager.createAssetType(Prefab.class, PojoPrefab::new, "prefabs"); assetTypeManager.switchEnvironment(moduleManager.getEnvironment()); context.put(AssetManager.class, assetTypeManager.getAssetManager()); context.put(RecordAndReplayCurrentStatus.class, new RecordAndReplayCurrentStatus()); diff --git a/engine-tests/src/test/java/org/terasology/entitySystem/PojoEventSystemTests.java b/engine-tests/src/test/java/org/terasology/engine/entitySystem/PojoEventSystemTests.java similarity index 98% rename from engine-tests/src/test/java/org/terasology/entitySystem/PojoEventSystemTests.java rename to engine-tests/src/test/java/org/terasology/engine/entitySystem/PojoEventSystemTests.java index afef59ad019..d8a9c0e45ca 100644 --- a/engine-tests/src/test/java/org/terasology/entitySystem/PojoEventSystemTests.java +++ b/engine-tests/src/test/java/org/terasology/engine/entitySystem/PojoEventSystemTests.java @@ -7,7 +7,7 @@ import org.junit.jupiter.api.Test; import org.reflections.Reflections; import org.terasology.engine.context.internal.ContextImpl; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.entity.internal.PojoEntityManager; import org.terasology.engine.entitySystem.event.AbstractConsumableEvent; @@ -19,8 +19,8 @@ import org.terasology.engine.entitySystem.metadata.ComponentLibrary; import org.terasology.engine.entitySystem.metadata.EntitySystemLibrary; import org.terasology.engine.entitySystem.prefab.internal.PojoPrefabManager; -import org.terasology.engine.entitySystem.stubs.IntegerComponent; -import org.terasology.engine.entitySystem.stubs.StringComponent; +import org.terasology.unittest.stubs.IntegerComponent; +import org.terasology.unittest.stubs.StringComponent; import org.terasology.engine.entitySystem.systems.BaseComponentSystem; import org.terasology.engine.persistence.typeHandling.TypeHandlerLibraryImpl; import org.terasology.engine.registry.CoreRegistry; diff --git a/engine-tests/src/test/java/org/terasology/entitySystem/PojoPrefabManagerTest.java b/engine-tests/src/test/java/org/terasology/engine/entitySystem/PojoPrefabManagerTest.java similarity index 81% rename from engine-tests/src/test/java/org/terasology/entitySystem/PojoPrefabManagerTest.java rename to engine-tests/src/test/java/org/terasology/engine/entitySystem/PojoPrefabManagerTest.java index 4c142ec6054..cabe26bd889 100644 --- a/engine-tests/src/test/java/org/terasology/entitySystem/PojoPrefabManagerTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/entitySystem/PojoPrefabManagerTest.java @@ -1,22 +1,23 @@ -// Copyright 2020 The Terasology Foundation +// Copyright 2021 The Terasology Foundation // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.entitySystem; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; -import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.core.module.ModuleManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.entitySystem.prefab.PrefabData; import org.terasology.engine.entitySystem.prefab.internal.PojoPrefab; import org.terasology.engine.entitySystem.prefab.internal.PojoPrefabManager; -import org.terasology.engine.entitySystem.stubs.StringComponent; +import org.terasology.unittest.stubs.StringComponent; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.testUtil.ModuleManagerFactory; import org.terasology.engine.utilities.Assets; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManagerImpl; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -35,8 +36,8 @@ public void setup() throws Exception { CoreRegistry.setContext(context); ModuleManager moduleManager = ModuleManagerFactory.create(); - ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManager(); - assetTypeManager.registerCoreAssetType(Prefab.class, PojoPrefab::new, "prefabs"); + ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManagerImpl(); + assetTypeManager.createAssetType(Prefab.class, PojoPrefab::new, "prefabs"); assetTypeManager.switchEnvironment(moduleManager.getEnvironment()); context.put(AssetManager.class, assetTypeManager.getAssetManager()); diff --git a/engine-tests/src/test/java/org/terasology/entitySystem/PrefabTest.java b/engine-tests/src/test/java/org/terasology/engine/entitySystem/PrefabTest.java similarity index 88% rename from engine-tests/src/test/java/org/terasology/entitySystem/PrefabTest.java rename to engine-tests/src/test/java/org/terasology/engine/entitySystem/PrefabTest.java index ba86d5ea1cd..81b3b585b74 100644 --- a/engine-tests/src/test/java/org/terasology/entitySystem/PrefabTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/entitySystem/PrefabTest.java @@ -6,12 +6,12 @@ import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.AssetFactory; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.engine.core.module.ModuleManager; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.core.bootstrap.EntitySystemSetupUtil; -import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.entitySystem.metadata.ComponentLibrary; import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.entitySystem.prefab.PrefabData; @@ -19,16 +19,17 @@ import org.terasology.engine.entitySystem.prefab.internal.PojoPrefab; import org.terasology.engine.entitySystem.prefab.internal.PojoPrefabManager; import org.terasology.engine.entitySystem.prefab.internal.PrefabFormat; -import org.terasology.engine.entitySystem.stubs.ListOfEnumsComponent; -import org.terasology.engine.entitySystem.stubs.ListOfObjectComponent; -import org.terasology.engine.entitySystem.stubs.MappedContainerComponent; -import org.terasology.engine.entitySystem.stubs.OrderedMapTestComponent; -import org.terasology.engine.entitySystem.stubs.StringComponent; +import org.terasology.unittest.stubs.ListOfEnumsComponent; +import org.terasology.unittest.stubs.ListOfObjectComponent; +import org.terasology.unittest.stubs.MappedContainerComponent; +import org.terasology.unittest.stubs.OrderedMapTestComponent; +import org.terasology.unittest.stubs.StringComponent; import org.terasology.engine.math.Side; import org.terasology.engine.network.NetworkMode; import org.terasology.engine.network.NetworkSystem; import org.terasology.engine.recording.RecordAndReplayCurrentStatus; import org.terasology.engine.registry.CoreRegistry; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManagerImpl; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; import org.terasology.engine.testUtil.ModuleManagerFactory; @@ -61,13 +62,12 @@ public void setup() throws Exception { EntitySystemSetupUtil.addReflectionBasedLibraries(context); - ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManager(); - assetTypeManager.registerCoreAssetType(Prefab.class, - (AssetFactory) PojoPrefab::new, "prefabs"); + ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManagerImpl(); + AssetType prefabDataAssetType = assetTypeManager.createAssetType(Prefab.class, PojoPrefab::new, "prefabs"); ComponentLibrary componentLibrary = context.get(ComponentLibrary.class); TypeHandlerLibrary typeHandlerLibrary = context.get(TypeHandlerLibrary.class); PrefabFormat prefabFormat = new PrefabFormat(componentLibrary, typeHandlerLibrary); - assetTypeManager.registerCoreFormat(Prefab.class, prefabFormat); + assetTypeManager.getAssetFileDataProducer(prefabDataAssetType).addAssetFormat(prefabFormat); assetTypeManager.switchEnvironment(moduleManager.getEnvironment()); context.put(AssetManager.class, assetTypeManager.getAssetManager()); diff --git a/engine-tests/src/test/java/org/terasology/entitySystem/metadata/ComponentMetadataTest.java b/engine-tests/src/test/java/org/terasology/engine/entitySystem/metadata/ComponentMetadataTest.java similarity index 91% rename from engine-tests/src/test/java/org/terasology/entitySystem/metadata/ComponentMetadataTest.java rename to engine-tests/src/test/java/org/terasology/engine/entitySystem/metadata/ComponentMetadataTest.java index bd3c9c2863b..6908509348f 100644 --- a/engine-tests/src/test/java/org/terasology/entitySystem/metadata/ComponentMetadataTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/entitySystem/metadata/ComponentMetadataTest.java @@ -1,4 +1,4 @@ -// Copyright 2020 The Terasology Foundation +// Copyright 2021 The Terasology Foundation // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.entitySystem.metadata; @@ -6,11 +6,11 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.reflections.Reflections; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.context.Context; import org.terasology.engine.context.internal.ContextImpl; -import org.terasology.engine.entitySystem.stubs.OwnerComponent; -import org.terasology.engine.entitySystem.stubs.StringComponent; +import org.terasology.unittest.stubs.OwnerComponent; +import org.terasology.unittest.stubs.StringComponent; import org.terasology.engine.persistence.typeHandling.TypeHandlerLibraryImpl; import org.terasology.reflection.copy.CopyStrategyLibrary; import org.terasology.reflection.reflect.ReflectFactory; diff --git a/engine-tests/src/test/java/org/terasology/entitySystem/metadata/FieldMetadataTest.java b/engine-tests/src/test/java/org/terasology/engine/entitySystem/metadata/FieldMetadataTest.java similarity index 58% rename from engine-tests/src/test/java/org/terasology/entitySystem/metadata/FieldMetadataTest.java rename to engine-tests/src/test/java/org/terasology/engine/entitySystem/metadata/FieldMetadataTest.java index f7c6d4e35f2..addcfaddd94 100644 --- a/engine-tests/src/test/java/org/terasology/entitySystem/metadata/FieldMetadataTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/entitySystem/metadata/FieldMetadataTest.java @@ -1,23 +1,10 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.entitySystem.metadata; import org.junit.jupiter.api.Test; -import org.terasology.assets.ResourceUrn; -import org.terasology.engine.entitySystem.stubs.OwnerComponent; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.unittest.stubs.OwnerComponent; import org.terasology.reflection.copy.CopyStrategyLibrary; import org.terasology.reflection.reflect.ReflectFactory; import org.terasology.reflection.reflect.ReflectionReflectFactory; @@ -40,8 +27,8 @@ public void testOwnsAnnotationProcessed() throws NoSuchMethodException { @Test public void testOwnsAnnotationCollectionProcessed() throws NoSuchMethodException { - ComponentMetadata classMetadata = - new ComponentMetadata<>(new ResourceUrn("unittest:OwnedCollectionComponent"), OwnedCollectionComponent.class, factory, copyStrategyLibrary); + ComponentMetadata classMetadata = + new ComponentMetadata<>(new ResourceUrn("unittest:OwnedCollectionComponent"), org.terasology.engine.entitySystem.metadata.OwnedCollectionComponent.class, factory, copyStrategyLibrary); ComponentFieldMetadata metadata = classMetadata.getField("items"); assertTrue(metadata.isOwnedReference()); } diff --git a/engine-tests/src/test/java/org/terasology/engine/module/ClasspathSupportingModuleLoaderTest.java b/engine-tests/src/test/java/org/terasology/engine/module/ClasspathSupportingModuleLoaderTest.java deleted file mode 100644 index 97ed5f87fab..00000000000 --- a/engine-tests/src/test/java/org/terasology/engine/module/ClasspathSupportingModuleLoaderTest.java +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2021 The Terasology Foundation -// SPDX-License-Identifier: Apache-2.0 - -package org.terasology.engine.core.module; - -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.terasology.module.ModuleLoader; - -import java.io.IOException; -import java.net.URISyntaxException; -import java.nio.file.Path; -import java.nio.file.Paths; - -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.terasology.engine.core.TerasologyConstants.MODULE_INFO_FILENAME; - -public class ClasspathSupportingModuleLoaderTest { - @ParameterizedTest - @ValueSource(strings = { - "testdummy-1.0.0-SNAPSHOT.jar", - "messy-name-directory & $t#f/testmessy-1.0.0-SNAPSHOT.jar", - "Spacey Parent/SourceModuleFixture/" - }) - void testLoadModuleFromPath(String moduleLocation) throws IOException, URISyntaxException { - ModuleLoader loader = new ClasspathSupportingModuleLoader(true, false); - loader.setModuleInfoPath(MODULE_INFO_FILENAME); - - Path modulePath = Paths.get(getClass().getResource(moduleLocation).toURI()); - - assertNotNull(loader.load(modulePath)); - } -} diff --git a/engine-tests/src/test/java/org/terasology/network/internal/NetworkOwnershipTest.java b/engine-tests/src/test/java/org/terasology/engine/network/internal/NetworkOwnershipTest.java similarity index 92% rename from engine-tests/src/test/java/org/terasology/network/internal/NetworkOwnershipTest.java rename to engine-tests/src/test/java/org/terasology/engine/network/internal/NetworkOwnershipTest.java index d1b926c678d..13f41190c19 100644 --- a/engine-tests/src/test/java/org/terasology/network/internal/NetworkOwnershipTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/network/internal/NetworkOwnershipTest.java @@ -1,18 +1,5 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.network.internal; diff --git a/engine-tests/src/test/java/org/terasology/persistence/ComponentSerializerTest.java b/engine-tests/src/test/java/org/terasology/engine/persistence/ComponentSerializerTest.java similarity index 96% rename from engine-tests/src/test/java/org/terasology/persistence/ComponentSerializerTest.java rename to engine-tests/src/test/java/org/terasology/engine/persistence/ComponentSerializerTest.java index ac9aaa2a9fb..8ba875933c1 100644 --- a/engine-tests/src/test/java/org/terasology/persistence/ComponentSerializerTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/persistence/ComponentSerializerTest.java @@ -9,17 +9,17 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.reflections.Reflections; -import org.terasology.assets.ResourceUrn; +import org.terasology.engine.core.module.ModuleManager; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.context.Context; import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.core.bootstrap.EntitySystemSetupUtil; -import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.entity.internal.EngineEntityManager; import org.terasology.engine.entitySystem.metadata.ComponentLibrary; -import org.terasology.engine.entitySystem.stubs.GetterSetterComponent; -import org.terasology.engine.entitySystem.stubs.IntegerComponent; -import org.terasology.engine.entitySystem.stubs.StringComponent; +import org.terasology.unittest.stubs.GetterSetterComponent; +import org.terasology.unittest.stubs.IntegerComponent; +import org.terasology.unittest.stubs.StringComponent; import org.terasology.engine.network.NetworkMode; import org.terasology.engine.network.NetworkSystem; import org.terasology.engine.persistence.serializers.ComponentSerializer; diff --git a/engine-tests/src/test/java/org/terasology/persistence/EntitySerializerTest.java b/engine-tests/src/test/java/org/terasology/engine/persistence/EntitySerializerTest.java similarity index 94% rename from engine-tests/src/test/java/org/terasology/persistence/EntitySerializerTest.java rename to engine-tests/src/test/java/org/terasology/engine/persistence/EntitySerializerTest.java index 00d8e5c0620..0499c73b92d 100644 --- a/engine-tests/src/test/java/org/terasology/persistence/EntitySerializerTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/persistence/EntitySerializerTest.java @@ -1,4 +1,4 @@ -// Copyright 2020 The Terasology Foundation +// Copyright 2021 The Terasology Foundation // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.persistence; @@ -6,14 +6,13 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.terasology.assets.AssetFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.engine.core.module.ModuleManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.context.Context; import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.core.bootstrap.EntitySystemSetupUtil; -import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.DoNotPersist; import org.terasology.engine.entitySystem.entity.EntityRef; @@ -24,14 +23,14 @@ import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.entitySystem.prefab.PrefabData; import org.terasology.engine.entitySystem.prefab.internal.PojoPrefab; -import org.terasology.engine.entitySystem.stubs.GetterSetterComponent; -import org.terasology.engine.entitySystem.stubs.IntegerComponent; -import org.terasology.engine.entitySystem.stubs.MappedTypeComponent; -import org.terasology.engine.entitySystem.stubs.StringComponent; +import org.terasology.unittest.stubs.GetterSetterComponent; +import org.terasology.unittest.stubs.IntegerComponent; +import org.terasology.unittest.stubs.MappedTypeComponent; +import org.terasology.unittest.stubs.StringComponent; import org.terasology.engine.network.NetworkMode; import org.terasology.engine.network.NetworkSystem; -import org.terasology.engine.persistence.serializers.ComponentSerializeCheck; import org.terasology.engine.persistence.serializers.EntitySerializer; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManagerImpl; import org.terasology.engine.persistence.serializers.PersistenceComponentSerializeCheck; import org.terasology.protobuf.EntityData; import org.terasology.engine.recording.RecordAndReplayCurrentStatus; @@ -67,9 +66,8 @@ public static void setupClass() throws Exception { moduleManager = ModuleManagerFactory.create(); context.put(ModuleManager.class, moduleManager); - ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManager(); - assetTypeManager.registerCoreAssetType(Prefab.class, - (AssetFactory) PojoPrefab::new, "prefabs"); + ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManagerImpl(); + assetTypeManager.createAssetType(Prefab.class, PojoPrefab::new, "prefabs"); assetTypeManager.switchEnvironment(moduleManager.getEnvironment()); context.put(AssetManager.class, assetTypeManager.getAssetManager()); } diff --git a/engine-tests/src/test/java/org/terasology/persistence/internal/StorageManagerTest.java b/engine-tests/src/test/java/org/terasology/engine/persistence/internal/StorageManagerTest.java similarity index 98% rename from engine-tests/src/test/java/org/terasology/persistence/internal/StorageManagerTest.java rename to engine-tests/src/test/java/org/terasology/engine/persistence/internal/StorageManagerTest.java index 1477e06be9a..145534fe8ac 100644 --- a/engine-tests/src/test/java/org/terasology/persistence/internal/StorageManagerTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/persistence/internal/StorageManagerTest.java @@ -16,18 +16,18 @@ import org.junit.jupiter.api.io.TempDir; import org.mockito.ArgumentMatchers; import org.terasology.engine.TerasologyTestingEnvironment; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.core.bootstrap.EntitySystemSetupUtil; import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.core.paths.PathManager; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.entity.internal.EngineEntityManager; -import org.terasology.engine.entitySystem.stubs.EntityRefComponent; -import org.terasology.engine.entitySystem.stubs.StringComponent; +import org.terasology.unittest.stubs.EntityRefComponent; +import org.terasology.unittest.stubs.StringComponent; import org.terasology.joml.geom.AABBfc; import org.terasology.engine.logic.location.LocationComponent; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.engine.network.Client; import org.terasology.engine.network.ClientComponent; import org.terasology.engine.network.NetworkMode; diff --git a/engine-tests/src/test/java/org/terasology/persistence/serializers/TypeSerializerTest.java b/engine-tests/src/test/java/org/terasology/engine/persistence/serializers/TypeSerializerTest.java similarity index 72% rename from engine-tests/src/test/java/org/terasology/persistence/serializers/TypeSerializerTest.java rename to engine-tests/src/test/java/org/terasology/engine/persistence/serializers/TypeSerializerTest.java index 50335635dad..4eaed8d3fd3 100644 --- a/engine-tests/src/test/java/org/terasology/persistence/serializers/TypeSerializerTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/persistence/serializers/TypeSerializerTest.java @@ -14,7 +14,7 @@ import org.terasology.engine.persistence.typeHandling.gson.GsonPersistedDataReader; import org.terasology.engine.persistence.typeHandling.gson.GsonPersistedDataSerializer; import org.terasology.engine.persistence.typeHandling.gson.GsonPersistedDataWriter; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.Color; import org.terasology.persistence.serializers.Serializer; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; @@ -29,10 +29,17 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.terasology.engine.testUtil.Assertions.assertNotEmpty; class TypeSerializerTest extends ModuleEnvironmentTest { private static final SomeClass INSTANCE = new SomeClass<>(0xdeadbeef); - private static final String INSTANCE_JSON = "{\"generic-t\":-559038737,\"list\":[50,51,-52,-53],\"animals\":[{\"class\":\"org.terasology.engine.persistence.serializers.TypeSerializerTest$Dog\",\"tailPosition\":[3.15,54.51,-0.001],\"headPosition\":[10.0,30.0,-0.001],\"data\":{\"class\":\"java.lang.Integer\",\"content\":1}},{\"class\":\"org.terasology.engine.persistence.serializers.TypeSerializerTest$Cheetah\",\"spotColor\":[255,0,255,255],\"data\":{\"class\":\"java.lang.Integer\",\"content\":2}}]}"; + private static final String INSTANCE_JSON = "{\"generic-t\":-559038737,\"list\":[50,51,-52,-53]," + + "\"animals\":[{\"class\":\"org.terasology.engine.persistence.serializers.TypeSerializerTest$Dog\"," + + "\"tailPosition\":[3.15,54.51,-0.001],\"headPosition\":[10.0,30.0,-0.001],\"data\":{\"class\":\"java.lang" + + ".Integer\",\"content\":1}},{\"class\":\"org.terasology.engine.persistence.serializers" + + ".TypeSerializerTest$Cheetah\",\"spotColor\":[255,0,255,255],\"data\":{\"class\":\"java.lang.Integer\"," + + "\"content\":2}}],\"singleAnimal\":{\"class\":\"org.terasology.engine.persistence.serializers" + + ".TypeSerializerTest$Dog\",\"tailPosition\":[4.0,5.0,6.0],\"headPosition\":[4.0,5.8,8.0],\"data\":2}}"; static { INSTANCE.list.addAll(Lists.newArrayList(50, 51, -52, -53)); @@ -40,6 +47,8 @@ class TypeSerializerTest extends ModuleEnvironmentTest { INSTANCE.animals.add(new Dog<>(1, new Vector3f(3.15f, 54.51f, -0.001f), new org.joml.Vector3f(10.0f,30.0f,-0.001f))); INSTANCE.animals.add(new Cheetah<>(2, Color.MAGENTA)); + + INSTANCE.singleAnimal = new Dog<>(2, new Vector3f(4, 5, 6), new org.joml.Vector3f(4,5.8f,8)); } private TypeHandlerLibrary typeHandlerLibrary; @@ -74,18 +83,18 @@ void testJsonSerialize() { @Test void testDeserialize() { - Optional> deserialize = gsonSerializer.deserialize(new TypeInfo>() { - }, INSTANCE_JSON.getBytes(TerasologyConstants.CHARSET)); + Optional> deserialize = gsonSerializer.deserialize( + new TypeInfo>() {}, + INSTANCE_JSON.getBytes(TerasologyConstants.CHARSET)); assertTrue(deserialize.isPresent()); - SomeClass deserialized = - deserialize.get(); + SomeClass deserialized = deserialize.get(); assertEquals(INSTANCE, deserialized); } @Test - void testSerializeDeserialize() throws IOException { + void testProtobufSerializeDeserialize() throws IOException { byte[] bytes = protobufSerializer.toBytes(INSTANCE, new TypeInfo>() { }); @@ -93,6 +102,32 @@ void testSerializeDeserialize() throws IOException { protobufSerializer.fromBytes(bytes, new TypeInfo>() { }); + assertNotEmpty(typeHandlerLibrary.getTypeHandler(Animal.class)); + assertNotEmpty(typeHandlerLibrary.getTypeHandler(Dog.class)); + + assertNotEmpty(typeRegistry.load("org.terasology.engine.persistence.serializers.TypeSerializerTest$Animal")); + assertNotEmpty(typeRegistry.load("org.terasology.engine.persistence.serializers.TypeSerializerTest$Dog")); + + assertEquals(INSTANCE, deserializedInstance); + } + + @Test + void testJsonSerializeDeserialize() throws IOException { + //noinspection unchecked,OptionalGetWithoutIsPresent,OptionalGetWithoutIsPresent + byte[] bytes = (byte[]) gsonSerializer.serialize(INSTANCE, new TypeInfo>() { + }).get(); + + //noinspection unchecked,OptionalGetWithoutIsPresent,OptionalGetWithoutIsPresent + SomeClass deserializedInstance = + (SomeClass) gsonSerializer.deserialize(new TypeInfo>() {}, bytes) + .get(); + + assertNotEmpty(typeHandlerLibrary.getTypeHandler(Animal.class)); + assertNotEmpty(typeHandlerLibrary.getTypeHandler(Dog.class)); + + assertNotEmpty(typeRegistry.load("org.terasology.engine.persistence.serializers.TypeSerializerTest$Animal")); + assertNotEmpty(typeRegistry.load("org.terasology.engine.persistence.serializers.TypeSerializerTest$Dog")); + assertEquals(INSTANCE, deserializedInstance); } @@ -101,6 +136,7 @@ private static class SomeClass { private T data; private List list = Lists.newArrayList(); private Set> animals = Sets.newHashSet(); + private Animal singleAnimal; private SomeClass(T data) { this.data = data; @@ -150,7 +186,7 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - Animal animal = (Animal) o; + Animal animal = (Animal) o; return Objects.equals(data, animal.data); } @@ -181,7 +217,7 @@ public boolean equals(Object o) { if (!super.equals(o)) { return false; } - Dog dog = (Dog) o; + Dog dog = (Dog) o; return Objects.equals(tailPosition, dog.tailPosition) && Objects.equals(headPosition, dog.headPosition); } @@ -219,7 +255,7 @@ public boolean equals(Object o) { if (!super.equals(o)) { return false; } - Cheetah cheetah = (Cheetah) o; + Cheetah cheetah = (Cheetah) o; return Objects.equals(spotColor, cheetah.spotColor); } diff --git a/engine-tests/src/test/java/org/terasology/persistence/serializers/VectorTypeSerializerTest.java b/engine-tests/src/test/java/org/terasology/engine/persistence/serializers/VectorTypeSerializerTest.java similarity index 83% rename from engine-tests/src/test/java/org/terasology/persistence/serializers/VectorTypeSerializerTest.java rename to engine-tests/src/test/java/org/terasology/engine/persistence/serializers/VectorTypeSerializerTest.java index 75b68a13370..1164eabd786 100644 --- a/engine-tests/src/test/java/org/terasology/persistence/serializers/VectorTypeSerializerTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/persistence/serializers/VectorTypeSerializerTest.java @@ -16,7 +16,7 @@ import org.terasology.engine.persistence.typeHandling.gson.GsonPersistedDataReader; import org.terasology.engine.persistence.typeHandling.gson.GsonPersistedDataSerializer; import org.terasology.engine.persistence.typeHandling.gson.GsonPersistedDataWriter; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.persistence.serializers.Serializer; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; import org.terasology.reflection.TypeInfo; @@ -25,6 +25,7 @@ import static org.terasology.joml.test.VectorAssert.assertEquals; +@SuppressWarnings("FieldCanBeLocal") class VectorTypeSerializerTest extends ModuleEnvironmentTest { static class TestObject { public Vector3f v1; @@ -58,7 +59,7 @@ public void setup() { } @Test - void testSerializationConstant() throws IOException { + void testSerializationConstant() { TestObject2 a = new TestObject2(); a.v1 = new Vector3f(1.0f, 2.0f, 3.0f); a.v2 = new Vector4f(1.0f, 2.0f, 3.0f, 5.0f); @@ -68,9 +69,10 @@ void testSerializationConstant() throws IOException { TestObject2 o = gsonSerializer.deserialize(new TypeInfo() { },data).get(); - assertEquals(o.v1, new Vector3f(1.0f, 2.0f, 3.0f), .00001f); - assertEquals(o.v2, new Vector4f(1.0f, 2.0f, 3.0f, 5.0f), .00001f); - assertEquals(o.v3, new Vector2f(1.0f, 2.0f), .00001f); + + assertEquals(new Vector3f(1.0f, 2.0f, 3.0f), o.v1, .00001f); + assertEquals(new Vector4f(1.0f, 2.0f, 3.0f, 5.0f), o.v2, .00001f); + assertEquals(new Vector2f(1.0f, 2.0f), o.v3, .00001f); } @Test @@ -86,9 +88,9 @@ void testJsonSerialize() throws IOException { TestObject o = protobufSerializer.fromBytes(data, new TypeInfo() { }); - assertEquals(o.v1, new Vector3f(11.5f, 13.15f, 3), .00001f); - assertEquals(o.v2, new Vector2f(12f, 13f), .00001f); - assertEquals(o.v3, new Vector4f(12, 12.2f, 3f, 15.5f), .00001f); + assertEquals(new Vector3f(11.5f, 13.15f, 3), o.v1, .00001f); + assertEquals(new Vector2f(12f, 13f), o.v2, .00001f); + assertEquals(new Vector4f(12, 12.2f, 3f, 15.5f), o.v3, .00001f); } @Test @@ -104,8 +106,8 @@ void testProtobufSerialize() throws IOException { TestObject o = protobufSerializer.fromBytes(bytes, new TypeInfo() { }); - assertEquals(o.v1, new Vector3f(11.5f, 13.15f, 3), .00001f); - assertEquals(o.v2, new Vector2f(12f, 13f), .00001f); - assertEquals(o.v3, new Vector4f(12, 12.2f, 3f, 15.5f), .00001f); + assertEquals(new Vector3f(11.5f, 13.15f, 3), o.v1, .00001f); + assertEquals(new Vector2f(12f, 13f), o.v2, .00001f); + assertEquals(new Vector4f(12, 12.2f, 3f, 15.5f), o.v3, .00001f); } } diff --git a/engine-tests/src/test/java/org/terasology/persistence/typeHandling/mathTypes/BlockAreaTypeHandlerTest.java b/engine-tests/src/test/java/org/terasology/engine/persistence/typeHandling/mathTypes/BlockAreaTypeHandlerTest.java similarity index 91% rename from engine-tests/src/test/java/org/terasology/persistence/typeHandling/mathTypes/BlockAreaTypeHandlerTest.java rename to engine-tests/src/test/java/org/terasology/engine/persistence/typeHandling/mathTypes/BlockAreaTypeHandlerTest.java index 6b26320b1e2..b2b57247536 100644 --- a/engine-tests/src/test/java/org/terasology/persistence/typeHandling/mathTypes/BlockAreaTypeHandlerTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/persistence/typeHandling/mathTypes/BlockAreaTypeHandlerTest.java @@ -14,7 +14,7 @@ import org.terasology.engine.persistence.typeHandling.gson.GsonPersistedDataWriter; import org.terasology.engine.world.block.BlockArea; import org.terasology.engine.world.block.BlockAreac; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.persistence.serializers.Serializer; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; import org.terasology.reflection.TypeInfo; @@ -60,8 +60,8 @@ public void testGsonSerialization() throws IOException { TestObject o = gsonSerializer.deserialize(new TypeInfo() { },data).get(); - assertEquals(o.b1, new BlockArea(-1, -1, 0, 0)); - assertEquals(o.b2, new BlockArea(0, 0, 1, 1)); + assertEquals(new BlockArea(-1, -1, 0, 0), o.b1); + assertEquals(new BlockArea(0, 0, 1, 1), o.b2); } @Test @@ -75,8 +75,8 @@ public void testProtobufSerialize() throws IOException { TestObject o = protobufSerializer.fromBytes(data, new TypeInfo() { }); - assertEquals(o.b1, new BlockArea(-1, -1, 0, 0)); - assertEquals(o.b2, new BlockArea(0, 0, 1, 1)); + assertEquals(new BlockArea(-1, -1, 0, 0), o.b1); + assertEquals(new BlockArea(0, 0, 1, 1), o.b2); } } diff --git a/engine-tests/src/test/java/org/terasology/engine/persistence/typeHandling/reflection/TestModuleEnvironmentSandbox.java b/engine-tests/src/test/java/org/terasology/engine/persistence/typeHandling/reflection/TestModuleEnvironmentSandbox.java new file mode 100644 index 00000000000..1adc9cdf57e --- /dev/null +++ b/engine-tests/src/test/java/org/terasology/engine/persistence/typeHandling/reflection/TestModuleEnvironmentSandbox.java @@ -0,0 +1,53 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +package org.terasology.engine.persistence.typeHandling.reflection; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.terasology.engine.core.module.ModuleManager; +import org.terasology.engine.entitySystem.Component; +import org.terasology.engine.testUtil.ModuleManagerFactory; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.reflection.ModuleTypeRegistry; +import org.terasology.reflection.TypeRegistry; +import org.terasology.unittest.ExampleInterface; + +import static org.terasology.engine.testUtil.Assertions.assertNotEmpty; + +@SuppressWarnings("FieldCanBeLocal") +public class TestModuleEnvironmentSandbox { + + private ModuleEnvironmentSandbox sandbox; + private TypeRegistry typeRegistry; + private ModuleManager moduleManager; + private ModuleEnvironment environment; + + @BeforeEach + protected void provideSandbox() throws Exception { + moduleManager = ModuleManagerFactory.create(); + environment = moduleManager.getEnvironment(); + + // TODO: make unit test more focused by not relying on complex ModuleManager interactions + typeRegistry = new ModuleTypeRegistry(environment); + + sandbox = new ModuleEnvironmentSandbox(moduleManager, typeRegistry); + + // module = environment.get(new Name("unittest")); + } + + @Test + public void findSubtypeOfGlobalClass() { + assertNotEmpty(sandbox.findSubTypeOf("org.joml.Vector3f", org.joml.Vector3fc.class)); + } + + @Test + public void findSubtypeOfEngineClass() { + assertNotEmpty(sandbox.findSubTypeOf("engine:BlockComponent", Component.class)); + } + + @Test + public void findSubtypeOfModuleClass() { + assertNotEmpty(sandbox.findSubTypeOf("unittest:ExampleClass", ExampleInterface.class)); + } +} diff --git a/engine-tests/src/test/java/org/terasology/engine/subsystem/config/BindsSubsystemTest.java b/engine-tests/src/test/java/org/terasology/engine/subsystem/config/BindsSubsystemTest.java index 4091d1afd67..8b8c1039973 100644 --- a/engine-tests/src/test/java/org/terasology/engine/subsystem/config/BindsSubsystemTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/subsystem/config/BindsSubsystemTest.java @@ -1,4 +1,7 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + package org.terasology.engine.core.subsystem.config; import org.junit.jupiter.api.BeforeEach; @@ -13,20 +16,20 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.BindableButton; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindAxis; +import org.terasology.engine.input.RegisterBindButton; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleMetadata; +import org.terasology.gestalt.module.ModuleRegistry; +import org.terasology.gestalt.module.TableModuleRegistry; +import org.terasology.gestalt.naming.Name; +import org.terasology.gestalt.naming.Version; import org.terasology.input.Input; import org.terasology.input.InputType; import org.terasology.input.Keyboard; import org.terasology.input.Keyboard.Key; import org.terasology.input.Keyboard.KeyId; -import org.terasology.engine.input.RegisterBindAxis; -import org.terasology.engine.input.RegisterBindButton; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.ModuleMetadata; -import org.terasology.module.ModuleRegistry; -import org.terasology.module.TableModuleRegistry; -import org.terasology.naming.Name; -import org.terasology.naming.Version; import java.util.ArrayList; import java.util.List; @@ -64,7 +67,6 @@ private void setUpMockModuleEnvironment() { ModuleRegistry moduleRegistry = new TableModuleRegistry(); Module module = mock(Module.class); - when(module.isCodeModule()).thenReturn(true); when(module.getId()).thenReturn(new Name(TEST_MODULE)); when(module.getVersion()).thenReturn(new Version(0, 0, 1, true)); when(module.getMetadata()).thenReturn(new ModuleMetadata()); diff --git a/engine-tests/src/test/java/org/terasology/world/EntityAwareWorldProviderTest.java b/engine-tests/src/test/java/org/terasology/engine/world/EntityAwareWorldProviderTest.java similarity index 96% rename from engine-tests/src/test/java/org/terasology/world/EntityAwareWorldProviderTest.java rename to engine-tests/src/test/java/org/terasology/engine/world/EntityAwareWorldProviderTest.java index cc822a32db4..b1bcafd9dc7 100644 --- a/engine-tests/src/test/java/org/terasology/world/EntityAwareWorldProviderTest.java +++ b/engine-tests/src/test/java/org/terasology/engine/world/EntityAwareWorldProviderTest.java @@ -1,18 +1,5 @@ -/* - * Copyright 2018 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.world; import com.google.common.base.Objects; @@ -23,8 +10,8 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.terasology.engine.TerasologyTestingEnvironment; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.core.GameThread; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.entity.EntityRef; @@ -40,10 +27,10 @@ import org.terasology.engine.entitySystem.event.internal.EventSystem; import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.entitySystem.prefab.PrefabData; -import org.terasology.engine.entitySystem.stubs.ForceBlockActiveComponent; -import org.terasology.engine.entitySystem.stubs.IntegerComponent; -import org.terasology.engine.entitySystem.stubs.RetainedOnBlockChangeComponent; -import org.terasology.engine.entitySystem.stubs.StringComponent; +import org.terasology.unittest.stubs.ForceBlockActiveComponent; +import org.terasology.unittest.stubs.IntegerComponent; +import org.terasology.unittest.stubs.RetainedOnBlockChangeComponent; +import org.terasology.unittest.stubs.StringComponent; import org.terasology.engine.entitySystem.systems.BaseComponentSystem; import org.terasology.engine.network.NetworkComponent; import org.terasology.engine.testUtil.WorldProviderCoreStub; diff --git a/engine-tests/src/test/java/org/terasology/entitySystem/BaseEntityRefTest.java b/engine-tests/src/test/java/org/terasology/entitySystem/BaseEntityRefTest.java index ec6d00b04ba..450b6fea28e 100644 --- a/engine-tests/src/test/java/org/terasology/entitySystem/BaseEntityRefTest.java +++ b/engine-tests/src/test/java/org/terasology/entitySystem/BaseEntityRefTest.java @@ -6,9 +6,6 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.terasology.assets.AssetFactory; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.context.Context; import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.core.bootstrap.EntitySystemSetupUtil; @@ -19,13 +16,15 @@ import org.terasology.engine.entitySystem.entity.internal.EntityScope; import org.terasology.engine.entitySystem.entity.internal.PojoEntityManager; import org.terasology.engine.entitySystem.prefab.Prefab; -import org.terasology.engine.entitySystem.prefab.PrefabData; import org.terasology.engine.entitySystem.prefab.internal.PojoPrefab; import org.terasology.engine.network.NetworkMode; import org.terasology.engine.network.NetworkSystem; import org.terasology.engine.recording.RecordAndReplayCurrentStatus; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.testUtil.ModuleManagerFactory; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManagerImpl; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -49,9 +48,8 @@ public static void setupClass() throws Exception { context = new ContextImpl(); ModuleManager moduleManager = ModuleManagerFactory.create(); context.put(ModuleManager.class, moduleManager); - ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManager(); - assetTypeManager.registerCoreAssetType(Prefab.class, - (AssetFactory) PojoPrefab::new, "prefabs"); + ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManagerImpl(); + assetTypeManager.createAssetType(Prefab.class, PojoPrefab::new, "prefabs"); assetTypeManager.switchEnvironment(moduleManager.getEnvironment()); context.put(AssetManager.class, assetTypeManager.getAssetManager()); context.put(RecordAndReplayCurrentStatus.class, new RecordAndReplayCurrentStatus()); diff --git a/engine-tests/src/test/java/org/terasology/entitySystem/OwnershipHelperTest.java b/engine-tests/src/test/java/org/terasology/entitySystem/OwnershipHelperTest.java index fb6274d674c..55644eb8569 100644 --- a/engine-tests/src/test/java/org/terasology/entitySystem/OwnershipHelperTest.java +++ b/engine-tests/src/test/java/org/terasology/entitySystem/OwnershipHelperTest.java @@ -1,4 +1,4 @@ -// Copyright 2020 The Terasology Foundation +// Copyright 2021 The Terasology Foundation // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.entitySystem; @@ -12,7 +12,7 @@ import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.entity.internal.EngineEntityManager; import org.terasology.engine.entitySystem.entity.internal.OwnershipHelper; -import org.terasology.engine.entitySystem.stubs.OwnerComponent; +import org.terasology.unittest.stubs.OwnerComponent; import org.terasology.engine.network.NetworkMode; import org.terasology.engine.network.NetworkSystem; import org.terasology.engine.recording.RecordAndReplayCurrentStatus; @@ -41,7 +41,7 @@ public static void setupClass() throws Exception { @BeforeEach public void setup() { ContextImpl context = new ContextImpl(); - context.put(ModuleManager.class, moduleManager); + context.put( ModuleManager.class, moduleManager); NetworkSystem networkSystem = mock(NetworkSystem.class); when(networkSystem.getMode()).thenReturn(NetworkMode.NONE); context.put(NetworkSystem.class, networkSystem); diff --git a/engine-tests/src/test/java/org/terasology/entitySystem/PojoEntityPoolTest.java b/engine-tests/src/test/java/org/terasology/entitySystem/PojoEntityPoolTest.java index 245d79cb7a9..94d7ea3f28a 100644 --- a/engine-tests/src/test/java/org/terasology/entitySystem/PojoEntityPoolTest.java +++ b/engine-tests/src/test/java/org/terasology/entitySystem/PojoEntityPoolTest.java @@ -5,9 +5,6 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.terasology.assets.AssetFactory; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.context.Context; import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.core.bootstrap.EntitySystemSetupUtil; @@ -17,13 +14,15 @@ import org.terasology.engine.entitySystem.entity.internal.PojoEntityManager; import org.terasology.engine.entitySystem.entity.internal.PojoEntityPool; import org.terasology.engine.entitySystem.prefab.Prefab; -import org.terasology.engine.entitySystem.prefab.PrefabData; import org.terasology.engine.entitySystem.prefab.internal.PojoPrefab; import org.terasology.engine.network.NetworkMode; import org.terasology.engine.network.NetworkSystem; import org.terasology.engine.recording.RecordAndReplayCurrentStatus; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.testUtil.ModuleManagerFactory; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManagerImpl; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -43,9 +42,9 @@ public static void setupClass() throws Exception { context = new ContextImpl(); ModuleManager moduleManager = ModuleManagerFactory.create(); context.put(ModuleManager.class, moduleManager); - ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManager(); - assetTypeManager.registerCoreAssetType(Prefab.class, - (AssetFactory) PojoPrefab::new, "prefabs"); + ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManagerImpl(); + assetTypeManager.createAssetType(Prefab.class, + PojoPrefab::new, "prefabs"); assetTypeManager.switchEnvironment(moduleManager.getEnvironment()); context.put(AssetManager.class, assetTypeManager.getAssetManager()); context.put(RecordAndReplayCurrentStatus.class, new RecordAndReplayCurrentStatus()); diff --git a/engine-tests/src/test/java/org/terasology/i18n/TranslationFormatTests.java b/engine-tests/src/test/java/org/terasology/i18n/TranslationFormatTests.java index ae7751b57c5..d04ac2a42e7 100644 --- a/engine-tests/src/test/java/org/terasology/i18n/TranslationFormatTests.java +++ b/engine-tests/src/test/java/org/terasology/i18n/TranslationFormatTests.java @@ -1,39 +1,30 @@ -/* - * Copyright 2015 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.i18n; +import com.google.common.collect.ImmutableList; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.exceptions.InvalidAssetFilenameException; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.format.FileFormat; import org.terasology.engine.core.SimpleUri; import org.terasology.engine.i18n.assets.TranslationData; import org.terasology.engine.i18n.assets.TranslationFormat; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.exceptions.InvalidAssetFilenameException; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.format.FileFormat; +import org.terasology.gestalt.module.resources.FileReference; +import org.terasology.gestalt.naming.Name; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.IOException; +import java.io.InputStream; import java.nio.charset.StandardCharsets; -import java.nio.file.Paths; import java.util.Collections; +import java.util.List; import java.util.Locale; +import java.util.function.Predicate; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -54,19 +45,20 @@ public void setup() { } @Test - public void testGetAssetName() throws InvalidAssetFilenameException { + public void testGetAssetName() throws InvalidAssetFilenameException { assertEquals(new Name("menu"), format.getAssetName("menu.lang")); assertEquals(new Name("menu_pl"), format.getAssetName("menu_pl.lang")); } @Test public void testPathMatcher() { - assertFalse(format.getFileMatcher().matches(Paths.get("menu.json"))); - assertFalse(format.getFileMatcher().matches(Paths.get("menu.prefab"))); + Predicate matcher = format.getFileMatcher(); + assertFalse(matcher.test(new CarefreeFileReference("menu.json"))); + assertFalse(matcher.test(new CarefreeFileReference("menu.prefab"))); - assertTrue(format.getFileMatcher().matches(Paths.get("menu.lang"))); - assertTrue(format.getFileMatcher().matches(Paths.get("menu_pl.lang"))); - assertTrue(format.getFileMatcher().matches(Paths.get("menu_en-US-x-lvariant-POSIX.lang"))); + assertTrue(matcher.test(new CarefreeFileReference("menu.lang"))); + assertTrue(matcher.test(new CarefreeFileReference("menu_pl.lang"))); + assertTrue(matcher.test(new CarefreeFileReference("menu_en-US-x-lvariant-POSIX.lang"))); } @Test @@ -141,4 +133,28 @@ private static String createSimpleTranslationFile() { sb.append("}"); return sb.toString(); } + + + static class CarefreeFileReference implements FileReference { + private final String name; + + CarefreeFileReference(String filename) { + name = filename; + } + + @Override + public String getName() { + return name; + } + + @Override + public List getPath() { + return ImmutableList.of(name); + } + + @Override + public InputStream open() throws IOException { + throw new IOException("I never expected to have to open a file!"); + } + } } diff --git a/engine-tests/src/test/java/org/terasology/input/InputSystemTests.java b/engine-tests/src/test/java/org/terasology/input/InputSystemTests.java index 51ffac78d5a..fe30e1c0fb9 100644 --- a/engine-tests/src/test/java/org/terasology/input/InputSystemTests.java +++ b/engine-tests/src/test/java/org/terasology/input/InputSystemTests.java @@ -1,4 +1,4 @@ -// Copyright 2020 The Terasology Foundation +// Copyright 2021 The Terasology Foundation // SPDX-License-Identifier: Apache-2.0 package org.terasology.input; @@ -16,17 +16,13 @@ import org.terasology.engine.core.subsystem.headless.device.TimeSystem; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.event.Event; +import org.terasology.engine.entitySystem.systems.internal.DoNotAutoRegister; import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.BindableButton; import org.terasology.engine.input.DefaultBinding; import org.terasology.engine.input.InputSystem; import org.terasology.engine.input.RegisterBindButton; -import org.terasology.input.Keyboard.Key; -import org.terasology.input.Keyboard.KeyId; import org.terasology.engine.input.cameraTarget.CameraTargetSystem; -import org.terasology.input.device.CharKeyboardAction; -import org.terasology.input.device.KeyboardDevice; -import org.terasology.input.device.RawKeyboardAction; import org.terasology.engine.input.events.KeyEvent; import org.terasology.engine.input.internal.BindableButtonImpl; import org.terasology.engine.logic.players.LocalPlayer; @@ -34,6 +30,11 @@ import org.terasology.engine.recording.DirectionAndOriginPosRecorderList; import org.terasology.engine.recording.RecordAndReplayCurrentStatus; import org.terasology.engine.registry.InjectionHelper; +import org.terasology.input.Keyboard.Key; +import org.terasology.input.Keyboard.KeyId; +import org.terasology.input.device.CharKeyboardAction; +import org.terasology.input.device.KeyboardDevice; +import org.terasology.input.device.RawKeyboardAction; import java.util.ArrayList; import java.util.HashMap; @@ -272,6 +273,7 @@ public void add(RawKeyboardAction action) { } + @DoNotAutoRegister @RegisterBindButton(id = "testEvent", description = "${engine-tests:menu#theTestEvent}", category = "tests") @DefaultBinding(type = InputType.KEY, id = Keyboard.KeyId.T) public class TestEventButton extends BindButtonEvent { diff --git a/engine-tests/src/test/java/org/terasology/persistence/typeHandling/event/VectorEventSerializer.java b/engine-tests/src/test/java/org/terasology/persistence/typeHandling/event/VectorEventSerializer.java index 313157610e8..15da6a8694a 100644 --- a/engine-tests/src/test/java/org/terasology/persistence/typeHandling/event/VectorEventSerializer.java +++ b/engine-tests/src/test/java/org/terasology/persistence/typeHandling/event/VectorEventSerializer.java @@ -11,9 +11,9 @@ import org.joml.Vector4fc; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.terasology.assets.ResourceUrn; -import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.core.module.ModuleManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.entitySystem.event.Event; import org.terasology.engine.entitySystem.metadata.EntitySystemLibrary; import org.terasology.engine.entitySystem.metadata.EventMetadata; diff --git a/engine-tests/src/test/java/org/terasology/persistence/typeHandling/extensionTypes/factories/AssetTypeHandlerFactoryTest.java b/engine-tests/src/test/java/org/terasology/persistence/typeHandling/extensionTypes/factories/AssetTypeHandlerFactoryTest.java index 33106aa3f7d..a841fe1a532 100644 --- a/engine-tests/src/test/java/org/terasology/persistence/typeHandling/extensionTypes/factories/AssetTypeHandlerFactoryTest.java +++ b/engine-tests/src/test/java/org/terasology/persistence/typeHandling/extensionTypes/factories/AssetTypeHandlerFactoryTest.java @@ -4,7 +4,7 @@ import com.google.common.collect.Lists; import org.junit.jupiter.api.Test; -import org.terasology.assets.Asset; +import org.terasology.gestalt.assets.Asset; import org.terasology.engine.audio.StaticSound; import org.terasology.engine.audio.StreamingSound; import org.terasology.engine.persistence.typeHandling.extensionTypes.AssetTypeHandler; diff --git a/engine-tests/src/test/java/org/terasology/recording/EventSystemReplayImplTest.java b/engine-tests/src/test/java/org/terasology/recording/EventSystemReplayImplTest.java index 7c1d710ca2e..b976690a33b 100644 --- a/engine-tests/src/test/java/org/terasology/recording/EventSystemReplayImplTest.java +++ b/engine-tests/src/test/java/org/terasology/recording/EventSystemReplayImplTest.java @@ -25,7 +25,7 @@ import org.terasology.engine.network.NetworkSystem; import org.terasology.engine.persistence.typeHandling.TypeHandlerLibraryImpl; import org.terasology.engine.registry.CoreRegistry; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; import org.terasology.reflection.TypeRegistry; diff --git a/engine-tests/src/test/java/org/terasology/reflection/TypeRegistryTest.java b/engine-tests/src/test/java/org/terasology/reflection/TypeRegistryTest.java index dacf0b15cb0..483fe2bc890 100644 --- a/engine-tests/src/test/java/org/terasology/reflection/TypeRegistryTest.java +++ b/engine-tests/src/test/java/org/terasology/reflection/TypeRegistryTest.java @@ -8,7 +8,7 @@ import org.terasology.engine.ModuleEnvironmentTest; import org.terasology.engine.core.module.ExternalApiWhitelist; import org.terasology.engine.entitySystem.Component; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import java.util.Collection; import java.util.LinkedHashMap; diff --git a/engine-tests/src/test/java/org/terasology/reflection/reflect/ByteCodeReflectFactoryTest.java b/engine-tests/src/test/java/org/terasology/reflection/reflect/ByteCodeReflectFactoryTest.java index 6a2d7b7790b..124b28f7a54 100644 --- a/engine-tests/src/test/java/org/terasology/reflection/reflect/ByteCodeReflectFactoryTest.java +++ b/engine-tests/src/test/java/org/terasology/reflection/reflect/ByteCodeReflectFactoryTest.java @@ -1,25 +1,12 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.reflection.reflect; import org.joml.Vector3f; import org.junit.jupiter.api.Test; -import org.terasology.engine.entitySystem.stubs.GetterSetterComponent; -import org.terasology.engine.entitySystem.stubs.IntegerComponent; -import org.terasology.engine.entitySystem.stubs.StringComponent; +import org.terasology.unittest.stubs.GetterSetterComponent; +import org.terasology.unittest.stubs.IntegerComponent; +import org.terasology.unittest.stubs.StringComponent; import org.terasology.engine.reflection.reflect.ByteCodeReflectFactory; import org.terasology.engine.logic.characters.events.AttackRequest; import org.terasology.engine.logic.location.LocationComponent; diff --git a/engine-tests/src/test/java/org/terasology/rendering/assets/texture/TextureAssetResolverTest.java b/engine-tests/src/test/java/org/terasology/rendering/assets/texture/TextureAssetResolverTest.java index 9d1030743e7..0ed59087e5b 100644 --- a/engine-tests/src/test/java/org/terasology/rendering/assets/texture/TextureAssetResolverTest.java +++ b/engine-tests/src/test/java/org/terasology/rendering/assets/texture/TextureAssetResolverTest.java @@ -19,7 +19,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.terasology.engine.TerasologyTestingEnvironment; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.texture.Texture; import org.terasology.engine.rendering.assets.texture.TextureUtil; import org.terasology.nui.Color; diff --git a/engine-tests/src/test/java/org/terasology/rendering/assets/texture/TextureUtilTest.java b/engine-tests/src/test/java/org/terasology/rendering/assets/texture/TextureUtilTest.java index 2c49034dfe6..70e4bc823f5 100644 --- a/engine-tests/src/test/java/org/terasology/rendering/assets/texture/TextureUtilTest.java +++ b/engine-tests/src/test/java/org/terasology/rendering/assets/texture/TextureUtilTest.java @@ -3,9 +3,9 @@ package org.terasology.engine.rendering.assets.texture; import org.junit.jupiter.api.Test; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.TerasologyConstants; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.Color; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/engine-tests/src/test/java/org/terasology/rendering/dag/RenderTaskListGeneratorTest.java b/engine-tests/src/test/java/org/terasology/rendering/dag/RenderTaskListGeneratorTest.java index 4cde9e7a78d..bf5ad44307d 100644 --- a/engine-tests/src/test/java/org/terasology/rendering/dag/RenderTaskListGeneratorTest.java +++ b/engine-tests/src/test/java/org/terasology/rendering/dag/RenderTaskListGeneratorTest.java @@ -27,7 +27,7 @@ import org.terasology.engine.rendering.dag.RenderPipelineTask; import org.terasology.engine.rendering.dag.RenderTaskListGenerator; import org.terasology.engine.rendering.dag.StateChange; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.rendering.dag.dependencyConnections.BufferPairConnection; import org.terasology.engine.rendering.dag.dependencyConnections.BufferPair; import org.terasology.engine.rendering.dag.dependencyConnections.DependencyConnection; diff --git a/engine-tests/src/test/java/org/terasology/rendering/nui/editor/ContextMenuUtilsTest.java b/engine-tests/src/test/java/org/terasology/rendering/nui/editor/ContextMenuUtilsTest.java index a1d14072784..65685ed8507 100644 --- a/engine-tests/src/test/java/org/terasology/rendering/nui/editor/ContextMenuUtilsTest.java +++ b/engine-tests/src/test/java/org/terasology/rendering/nui/editor/ContextMenuUtilsTest.java @@ -1,18 +1,5 @@ -/* - * Copyright 2016 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.rendering.nui.editor; import com.google.common.base.Charsets; @@ -29,8 +16,9 @@ import org.terasology.engine.rendering.nui.NUIManager; import org.terasology.engine.rendering.nui.editor.layers.PlaceholderScreen; import org.terasology.engine.rendering.nui.editor.utils.NUIEditorNodeUtils; -import org.terasology.nui.canvas.CanvasRenderer; import org.terasology.engine.rendering.nui.internal.NUIManagerInternal; +import org.terasology.engine.rendering.nui.internal.TerasologyCanvasRenderer; +import org.terasology.nui.canvas.CanvasRenderer; import org.terasology.nui.layouts.RowLayout; import org.terasology.nui.layouts.RowLayoutHint; import org.terasology.nui.layouts.relative.HorizontalInfo; @@ -41,7 +29,6 @@ import org.terasology.nui.widgets.UILabel; import org.terasology.nui.widgets.treeView.JsonTree; import org.terasology.nui.widgets.treeView.JsonTreeConverter; -import org.terasology.engine.rendering.nui.internal.TerasologyCanvasRenderer; import java.io.File; import java.io.IOException; @@ -63,9 +50,9 @@ public static void setupInput() { File file = new File(ContextMenuUtilsTest.class.getClassLoader().getResource("contextMenuBuilderInput.ui").getFile()); String content = null; try { - content = Files.toString(file, Charsets.UTF_8); + content = Files.asCharSource(file, Charsets.UTF_8).read(); } catch (IOException e) { - fail("Could not load input file"); + fail("Could not load input file", e); } inputTree = JsonTreeConverter.serialize(new JsonParser().parse(content)); } @@ -92,7 +79,7 @@ public void testNodeTypes() { assertEquals(RowLayoutHint.class, getNodeType(currentNode.getChildWithKey("layoutInfo"))); } - private Class getNodeType(JsonTree node) { + private Class getNodeType(JsonTree node) { return NUIEditorNodeUtils.getNodeInfo(node, context.get(NUIManager.class)).getNodeClass(); } } diff --git a/engine-tests/src/test/java/org/terasology/world/ChunkTest.java b/engine-tests/src/test/java/org/terasology/world/ChunkTest.java index 03701eadd19..a665fd6f921 100644 --- a/engine-tests/src/test/java/org/terasology/world/ChunkTest.java +++ b/engine-tests/src/test/java/org/terasology/world/ChunkTest.java @@ -21,8 +21,8 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.terasology.engine.TerasologyTestingEnvironment; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.joml.geom.AABBfc; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.world.block.Block; diff --git a/engine-tests/src/test/java/org/terasology/world/ChunkViewTest.java b/engine-tests/src/test/java/org/terasology/world/ChunkViewTest.java index c9419ddab35..aad98eebd79 100644 --- a/engine-tests/src/test/java/org/terasology/world/ChunkViewTest.java +++ b/engine-tests/src/test/java/org/terasology/world/ChunkViewTest.java @@ -7,8 +7,8 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.terasology.engine.TerasologyTestingEnvironment; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.world.block.Block; import org.terasology.engine.world.block.BlockManager; diff --git a/engine-tests/src/test/java/org/terasology/world/block/shape/BlockShapeTest.java b/engine-tests/src/test/java/org/terasology/world/block/shape/BlockShapeTest.java index 065bfb02afa..136408f9607 100644 --- a/engine-tests/src/test/java/org/terasology/world/block/shape/BlockShapeTest.java +++ b/engine-tests/src/test/java/org/terasology/world/block/shape/BlockShapeTest.java @@ -21,7 +21,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.terasology.engine.TerasologyTestingEnvironment; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.math.Rotation; import org.terasology.engine.math.Yaw; import org.terasology.engine.physics.bullet.shapes.BulletConvexHullShape; diff --git a/engine-tests/src/test/java/org/terasology/world/chunks/pipeline/ChunkProcessingPipelineTest.java b/engine-tests/src/test/java/org/terasology/world/chunks/pipeline/ChunkProcessingPipelineTest.java index 17677b7c129..6b02bda3fea 100644 --- a/engine-tests/src/test/java/org/terasology/world/chunks/pipeline/ChunkProcessingPipelineTest.java +++ b/engine-tests/src/test/java/org/terasology/world/chunks/pipeline/ChunkProcessingPipelineTest.java @@ -12,7 +12,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.TerasologyTestingEnvironment; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.world.block.BlockManager; diff --git a/engine-tests/src/test/java/org/terasology/world/generator/InternalLightGeneratorTest.java b/engine-tests/src/test/java/org/terasology/world/generator/InternalLightGeneratorTest.java index 3b763fffaac..a638a23a895 100644 --- a/engine-tests/src/test/java/org/terasology/world/generator/InternalLightGeneratorTest.java +++ b/engine-tests/src/test/java/org/terasology/world/generator/InternalLightGeneratorTest.java @@ -8,8 +8,8 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.terasology.engine.TerasologyTestingEnvironment; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.math.Diamond3iIterable; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.world.block.Block; diff --git a/engine-tests/src/test/java/org/terasology/world/propagation/BetweenChunkPropagationTest.java b/engine-tests/src/test/java/org/terasology/world/propagation/BetweenChunkPropagationTest.java index 116b9472485..40275f82d54 100644 --- a/engine-tests/src/test/java/org/terasology/world/propagation/BetweenChunkPropagationTest.java +++ b/engine-tests/src/test/java/org/terasology/world/propagation/BetweenChunkPropagationTest.java @@ -9,8 +9,8 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.terasology.engine.TerasologyTestingEnvironment; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.math.Side; import org.terasology.engine.registry.CoreRegistry; diff --git a/engine-tests/src/test/java/org/terasology/world/propagation/BulkLightPropagationTest.java b/engine-tests/src/test/java/org/terasology/world/propagation/BulkLightPropagationTest.java index e520bb2ca4a..5156843e31f 100644 --- a/engine-tests/src/test/java/org/terasology/world/propagation/BulkLightPropagationTest.java +++ b/engine-tests/src/test/java/org/terasology/world/propagation/BulkLightPropagationTest.java @@ -20,8 +20,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.TerasologyTestingEnvironment; import org.terasology.engine.math.Diamond3iIterable; import org.terasology.engine.registry.CoreRegistry; diff --git a/engine-tests/src/test/java/org/terasology/world/propagation/BulkSunlightPropagationTest.java b/engine-tests/src/test/java/org/terasology/world/propagation/BulkSunlightPropagationTest.java index 44f0a56c3c5..2673dec6e6b 100644 --- a/engine-tests/src/test/java/org/terasology/world/propagation/BulkSunlightPropagationTest.java +++ b/engine-tests/src/test/java/org/terasology/world/propagation/BulkSunlightPropagationTest.java @@ -22,8 +22,8 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.terasology.engine.TerasologyTestingEnvironment; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.world.block.Block; import org.terasology.engine.world.block.BlockManager; diff --git a/engine/build.gradle b/engine/build.gradle index 6fa117f920c..6a84ff63d41 100644 --- a/engine/build.gradle +++ b/engine/build.gradle @@ -11,10 +11,8 @@ plugins { // Grab all the common stuff like plugins to use, artifact repositories, code analysis config, etc apply from: "$rootDir/config/gradle/publish.gradle" + import groovy.json.JsonSlurper -import org.reflections.Reflections -import org.reflections.scanners.SubTypesScanner -import org.reflections.scanners.TypeAnnotationsScanner import java.text.SimpleDateFormat @@ -105,16 +103,19 @@ dependencies { implementation group: 'net.logstash.logback', name: 'logstash-logback-encoder', version: '4.10' // Our developed libs - api group: 'org.terasology', name: 'gestalt-module', version: '5.1.5' - api group: 'org.terasology', name: 'gestalt-util', version: '5.1.5' - api group: 'org.terasology', name: 'gestalt-asset-core', version: '5.1.5' + api group: 'org.terasology.gestalt', name: 'gestalt-asset-core', version: '7.1.0-SNAPSHOT' + api group: 'org.terasology.gestalt', name: 'gestalt-module', version: '7.1.0-SNAPSHOT' + api group: 'org.terasology.gestalt', name: 'gestalt-util', version: '7.1.0-SNAPSHOT' + api "com.github.zafarkhaja:java-semver:0.10.0" // ASAP: Remove after https://github.com/MovingBlocks/gestalt/pull/110 + api group: 'org.terasology', name: 'TeraMath', version: '1.5.0' api group: 'org.terasology', name: 'splash-screen', version: '1.1.1' api group: 'org.terasology.jnlua', name: 'JNLua', version: '0.1.0-SNAPSHOT' api group: 'org.terasology.jnbullet', name: 'JNBullet', version: '1.0.2' api group: 'org.terasology.nui', name: 'nui', version: '3.0.0-SNAPSHOT' api group: 'org.terasology.nui', name: 'nui-reflect', version: '3.0.0-SNAPSHOT' - api group: 'org.terasology.nui', name: 'nui-gestalt5', version: '3.0.0-SNAPSHOT' + api group: 'org.terasology.nui', name: 'nui-gestalt7', version: '3.0.0-SNAPSHOT' + // Wildcard dependency to catch any libs provided with the project (remote repo preferred instead) api fileTree(dir: 'libs', include: '*.jar') @@ -125,26 +126,7 @@ dependencies { // TODO: Consider moving this back to the PC Facade instead of having the engine rely on it? implementation group: 'org.terasology.crashreporter', name: 'cr-terasology', version: '4.1.0' - api(project(":subsystems:TypeHandlerLibrary")) -} - -task cacheReflections { - description = 'Caches reflection output to make regular startup faster. May go stale and need cleanup at times.' - inputs.files sourceSets.main.output.classesDirs, - // getClassesDir from all sourceSets (for any jvm (seems) language) - configurations."${sourceSets.main.runtimeClasspathConfigurationName}" - - outputs.upToDateWhen {classes.state.upToDate} - outputs.file("$buildDir/resources/main/reflections.cache") - dependsOn classes - - doLast { - // Without the .mkdirs() we might hit a scenario where the classes dir doesn't exist yet - Reflections reflections = new org.reflections.Reflections(new org.reflections.util.ConfigurationBuilder() - .addUrls(inputs.files.collect { it.toURI().toURL() }) - .setScanners(new TypeAnnotationsScanner(), new SubTypesScanner())) - reflections.save("$buildDir/classes/reflections.cache") - } + api(project(":subsystems:TypeHandlerLibrary")) } // Instructions for packaging a jar file for the engine @@ -152,8 +134,6 @@ jar { // Unlike the content modules Gradle grabs the assets as they're in a resources directory. Need to avoid dupes tho duplicatesStrategy = "EXCLUDE" - from(tasks.getByName("cacheReflections").outputs) - doFirst { manifest { def manifestClasspath = "$subDirLibs/" + configurations."${sourceSets.main.runtimeClasspathConfigurationName}".collect { @@ -164,11 +144,6 @@ jar { } } -task cleanReflections(type: Delete) { - description = 'Cleans the reflection cache. Useful in cases where it has gone stale and needs regeneration.' - delete cacheReflections.outputs.files -} - // JMH related tasks sourceSets { @@ -195,7 +170,7 @@ dependencies { /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // First read the internal version out of the engine's engine-module.txt -def moduleFile = file('src/main/resources/engine-module.txt') +def moduleFile = file('src/main/resources/org/terasology/engine/engine-module.txt') if (!moduleFile.exists()) { println "Failed to find engine-module.txt for engine" @@ -255,10 +230,11 @@ task copyResourcesToClasses(type: Copy) { dependsOn processResources mustRunAfter compileJava - classes.dependsOn copyResourcesToClasses } -jar.dependsOn cacheReflections +tasks.named("classes") { + dependsOn(tasks.named("copyResourcesToClasses")) +} /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // General IDE customization // diff --git a/engine/src/main/java/org/terasology/engine/audio/AudioManager.java b/engine/src/main/java/org/terasology/engine/audio/AudioManager.java index a915891d47a..ac9e70d9b7d 100644 --- a/engine/src/main/java/org/terasology/engine/audio/AudioManager.java +++ b/engine/src/main/java/org/terasology/engine/audio/AudioManager.java @@ -17,7 +17,7 @@ import org.joml.Quaternionfc; import org.joml.Vector3fc; -import org.terasology.assets.AssetFactory; +import org.terasology.gestalt.assets.AssetFactory; /** * Manages the playing of sounds and music as well as muting and updating listeners diff --git a/engine/src/main/java/org/terasology/engine/audio/Sound.java b/engine/src/main/java/org/terasology/engine/audio/Sound.java index 3801fcf0039..4becf5526ae 100644 --- a/engine/src/main/java/org/terasology/engine/audio/Sound.java +++ b/engine/src/main/java/org/terasology/engine/audio/Sound.java @@ -15,10 +15,11 @@ */ package org.terasology.engine.audio; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetData; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetData; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; /** * An abstract class @@ -26,6 +27,16 @@ */ public abstract class Sound extends Asset implements org.terasology.nui.asset.Sound { + /** + * The constructor for an asset. It is suggested that implementing classes provide a constructor taking both the urn, and an initial AssetData to load. + * + * @param urn The urn identifying the asset. + * @param assetType The asset type this asset belongs to. + */ + protected Sound(ResourceUrn urn, AssetType assetType, DisposableResource resource) { + super(urn, assetType,resource); + } + /** * The constructor for an asset. It is suggested that implementing classes provide a constructor taking both the urn, and an initial AssetData to load. * diff --git a/engine/src/main/java/org/terasology/engine/audio/StaticSound.java b/engine/src/main/java/org/terasology/engine/audio/StaticSound.java index fdeb9dfd3a5..5d0eb4ef7e2 100644 --- a/engine/src/main/java/org/terasology/engine/audio/StaticSound.java +++ b/engine/src/main/java/org/terasology/engine/audio/StaticSound.java @@ -16,14 +16,25 @@ package org.terasology.engine.audio; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; /** * Interface for a non-streamed sound - these sounds are loaded entirely into memory. */ public abstract class StaticSound extends Sound { + /** + * The constructor for an asset. It is suggested that implementing classes provide a constructor taking both the urn, and an initial AssetData to load. + * + * @param urn The urn identifying the asset. + * @param assetType The asset type this asset belongs to. + */ + protected StaticSound(ResourceUrn urn, AssetType assetType, DisposableResource resource) { + super(urn, assetType, resource); + } + /** * The constructor for an asset. It is suggested that implementing classes provide a constructor taking both the urn, and an initial AssetData to load. * diff --git a/engine/src/main/java/org/terasology/engine/audio/StaticSoundData.java b/engine/src/main/java/org/terasology/engine/audio/StaticSoundData.java index 45d058c229d..f410f7193a1 100644 --- a/engine/src/main/java/org/terasology/engine/audio/StaticSoundData.java +++ b/engine/src/main/java/org/terasology/engine/audio/StaticSoundData.java @@ -16,7 +16,7 @@ package org.terasology.engine.audio; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import java.nio.ByteBuffer; diff --git a/engine/src/main/java/org/terasology/engine/audio/StreamingSound.java b/engine/src/main/java/org/terasology/engine/audio/StreamingSound.java index 467b6f36d56..f51ca0463d9 100644 --- a/engine/src/main/java/org/terasology/engine/audio/StreamingSound.java +++ b/engine/src/main/java/org/terasology/engine/audio/StreamingSound.java @@ -16,14 +16,25 @@ package org.terasology.engine.audio; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; /** * Interface for a sound that is streamed from storage. The entire sound is not loaded into memory */ public abstract class StreamingSound extends Sound { + /** + * The constructor for an asset. It is suggested that implementing classes provide a constructor taking both the urn, and an initial AssetData to load. + * + * @param urn The urn identifying the asset. + * @param assetType The asset type this asset belongs to. + */ + protected StreamingSound(ResourceUrn urn, AssetType assetType, DisposableResource resource) { + super(urn, assetType, resource); + } + /** * The constructor for an asset. It is suggested that implementing classes provide a constructor taking both the urn, and an initial AssetData to load. * diff --git a/engine/src/main/java/org/terasology/engine/audio/StreamingSoundData.java b/engine/src/main/java/org/terasology/engine/audio/StreamingSoundData.java index 8bcd8bf8f49..6245993ff4a 100644 --- a/engine/src/main/java/org/terasology/engine/audio/StreamingSoundData.java +++ b/engine/src/main/java/org/terasology/engine/audio/StreamingSoundData.java @@ -16,7 +16,7 @@ package org.terasology.engine.audio; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import java.nio.ByteBuffer; diff --git a/engine/src/main/java/org/terasology/engine/audio/events/package-info.java b/engine/src/main/java/org/terasology/engine/audio/events/package-info.java index 128dcc0d358..bccae5c27e7 100644 --- a/engine/src/main/java/org/terasology/engine/audio/events/package-info.java +++ b/engine/src/main/java/org/terasology/engine/audio/events/package-info.java @@ -29,4 +29,4 @@ */ @API package org.terasology.engine.audio.events; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/audio/formats/OggSoundFormat.java b/engine/src/main/java/org/terasology/engine/audio/formats/OggSoundFormat.java index 22d24503776..98f3e9eaeb1 100644 --- a/engine/src/main/java/org/terasology/engine/audio/formats/OggSoundFormat.java +++ b/engine/src/main/java/org/terasology/engine/audio/formats/OggSoundFormat.java @@ -18,11 +18,11 @@ import com.google.common.io.ByteStreams; import org.lwjgl.BufferUtils; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; import org.terasology.engine.audio.StaticSoundData; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/engine/src/main/java/org/terasology/engine/audio/formats/OggStreamingSoundData.java b/engine/src/main/java/org/terasology/engine/audio/formats/OggStreamingSoundData.java index e43ee3bd5a9..8ac3a85602b 100644 --- a/engine/src/main/java/org/terasology/engine/audio/formats/OggStreamingSoundData.java +++ b/engine/src/main/java/org/terasology/engine/audio/formats/OggStreamingSoundData.java @@ -18,8 +18,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.format.AssetDataFile; import org.terasology.engine.audio.StreamingSoundData; +import org.terasology.gestalt.assets.format.AssetDataFile; import java.io.IOException; import java.nio.ByteBuffer; diff --git a/engine/src/main/java/org/terasology/engine/audio/formats/OggStreamingSoundFormat.java b/engine/src/main/java/org/terasology/engine/audio/formats/OggStreamingSoundFormat.java index 515e27fd560..b735d8634aa 100644 --- a/engine/src/main/java/org/terasology/engine/audio/formats/OggStreamingSoundFormat.java +++ b/engine/src/main/java/org/terasology/engine/audio/formats/OggStreamingSoundFormat.java @@ -16,11 +16,11 @@ package org.terasology.engine.audio.formats; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; import org.terasology.engine.audio.StreamingSoundData; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import java.io.IOException; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/audio/nullAudio/NullAudioManager.java b/engine/src/main/java/org/terasology/engine/audio/nullAudio/NullAudioManager.java index 79c4480b690..6c0c1b52467 100644 --- a/engine/src/main/java/org/terasology/engine/audio/nullAudio/NullAudioManager.java +++ b/engine/src/main/java/org/terasology/engine/audio/nullAudio/NullAudioManager.java @@ -18,13 +18,13 @@ import org.joml.Quaternionfc; import org.joml.Vector3fc; -import org.terasology.assets.AssetFactory; import org.terasology.engine.audio.AudioEndListener; import org.terasology.engine.audio.AudioManager; import org.terasology.engine.audio.StaticSound; import org.terasology.engine.audio.StaticSoundData; import org.terasology.engine.audio.StreamingSound; import org.terasology.engine.audio.StreamingSoundData; +import org.terasology.gestalt.assets.AssetFactory; /** * Null implementation of the AudioManager diff --git a/engine/src/main/java/org/terasology/engine/audio/nullAudio/NullSound.java b/engine/src/main/java/org/terasology/engine/audio/nullAudio/NullSound.java index c2c92bd2bb7..895d5987f0e 100644 --- a/engine/src/main/java/org/terasology/engine/audio/nullAudio/NullSound.java +++ b/engine/src/main/java/org/terasology/engine/audio/nullAudio/NullSound.java @@ -15,11 +15,11 @@ */ package org.terasology.engine.audio.nullAudio; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.audio.StaticSound; import org.terasology.engine.audio.StaticSoundData; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import java.util.Optional; diff --git a/engine/src/main/java/org/terasology/engine/audio/nullAudio/NullStreamingSound.java b/engine/src/main/java/org/terasology/engine/audio/nullAudio/NullStreamingSound.java index 559370f3c03..60539317a8c 100644 --- a/engine/src/main/java/org/terasology/engine/audio/nullAudio/NullStreamingSound.java +++ b/engine/src/main/java/org/terasology/engine/audio/nullAudio/NullStreamingSound.java @@ -16,11 +16,11 @@ package org.terasology.engine.audio.nullAudio; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.audio.StreamingSound; import org.terasology.engine.audio.StreamingSoundData; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import java.util.Optional; diff --git a/engine/src/main/java/org/terasology/engine/audio/openAL/OpenALManager.java b/engine/src/main/java/org/terasology/engine/audio/openAL/OpenALManager.java index b19775f9a1a..62db963a4ec 100644 --- a/engine/src/main/java/org/terasology/engine/audio/openAL/OpenALManager.java +++ b/engine/src/main/java/org/terasology/engine/audio/openAL/OpenALManager.java @@ -29,7 +29,6 @@ import org.lwjgl.openal.ALCapabilities; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.AssetFactory; import org.terasology.engine.audio.AudioEndListener; import org.terasology.engine.audio.AudioManager; import org.terasology.engine.audio.Sound; @@ -43,6 +42,7 @@ import org.terasology.engine.audio.openAL.streamingSound.OpenALStreamingSoundPool; import org.terasology.engine.config.AudioConfig; import org.terasology.engine.math.Direction; +import org.terasology.gestalt.assets.AssetFactory; import java.nio.FloatBuffer; import java.util.Iterator; @@ -289,12 +289,12 @@ protected boolean checkDistance(Vector3fc soundPosition) { @Override public AssetFactory getStaticSoundFactory() { - return (urn, assetType, data) -> new OpenALSound(urn, assetType, data, OpenALManager.this); + return (urn, assetType, data) -> new OpenALSound(urn, assetType, data, OpenALManager.this, new OpenALSound.DisposalAction(urn)); } @Override public AssetFactory getStreamingSoundFactory() { - return (urn, assetType, data) -> new OpenALStreamingSound(urn, assetType, data, OpenALManager.this); + return (urn, assetType, data) -> new OpenALStreamingSound(urn, assetType, data, OpenALManager.this, new OpenALStreamingSound.DisposalAction(urn)); } public void purgeSound(Sound sound) { diff --git a/engine/src/main/java/org/terasology/engine/audio/openAL/staticSound/OpenALSound.java b/engine/src/main/java/org/terasology/engine/audio/openAL/staticSound/OpenALSound.java index 423c0bb1cf3..71ab5321d55 100644 --- a/engine/src/main/java/org/terasology/engine/audio/openAL/staticSound/OpenALSound.java +++ b/engine/src/main/java/org/terasology/engine/audio/openAL/staticSound/OpenALSound.java @@ -18,13 +18,14 @@ import org.lwjgl.openal.AL10; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.audio.StaticSound; import org.terasology.engine.audio.StaticSoundData; import org.terasology.engine.audio.openAL.OpenALException; import org.terasology.engine.audio.openAL.OpenALManager; import org.terasology.engine.core.GameThread; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import java.lang.ref.WeakReference; @@ -42,17 +43,16 @@ public final class OpenALSound extends StaticSound { protected float length; private final OpenALManager audioManager; - - private DisposalAction disposalAction; + private final DisposalAction disposalAction; // TODO: Do we have proper support for unloading sounds (as mods are changed?) private int bufferId; - public OpenALSound(ResourceUrn urn, AssetType assetType, StaticSoundData data, OpenALManager audioManager) { - super(urn, assetType); + public OpenALSound(ResourceUrn urn, AssetType assetType, StaticSoundData data, OpenALManager audioManager, OpenALSound.DisposalAction disposalAction) { + super(urn, assetType, disposalAction); + disposalAction.setAsset(this); this.audioManager = audioManager; - disposalAction = new DisposalAction(urn, this); - getDisposalHook().setDisposeAction(disposalAction); + this.disposalAction = disposalAction; reload(data); } @@ -119,18 +119,25 @@ protected void doReload(StaticSoundData newData) { } } - private static class DisposalAction implements Runnable { + public static class DisposalAction implements DisposableResource { private final ResourceUrn urn; private int bufferId; - private final WeakReference asset; + private WeakReference asset; - DisposalAction(ResourceUrn urn, OpenALSound openALSound) { + public DisposalAction(ResourceUrn urn) { this.urn = urn; - asset = new WeakReference<>(openALSound); + } + + public OpenALSound getAsset() { + return asset.get(); + } + + public void setAsset(OpenALSound asset) { + this.asset = new WeakReference<>(asset); } @Override - public void run() { + public void close() { try { GameThread.synch(() -> { OpenALSound sound = asset.get(); diff --git a/engine/src/main/java/org/terasology/engine/audio/openAL/streamingSound/OpenALStreamingSound.java b/engine/src/main/java/org/terasology/engine/audio/openAL/streamingSound/OpenALStreamingSound.java index 86302af787f..e12b75dbe95 100644 --- a/engine/src/main/java/org/terasology/engine/audio/openAL/streamingSound/OpenALStreamingSound.java +++ b/engine/src/main/java/org/terasology/engine/audio/openAL/streamingSound/OpenALStreamingSound.java @@ -1,31 +1,19 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.audio.openAL.streamingSound; import org.lwjgl.openal.AL10; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.audio.StreamingSound; import org.terasology.engine.audio.StreamingSoundData; import org.terasology.engine.audio.openAL.OpenALException; import org.terasology.engine.audio.openAL.OpenALManager; import org.terasology.engine.core.GameThread; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import java.lang.ref.WeakReference; import java.nio.ByteBuffer; @@ -44,14 +32,14 @@ public final class OpenALStreamingSound extends StreamingSound { private StreamingSoundData stream; private ByteBuffer dataBuffer = ByteBuffer.allocateDirect(BUFFER_SIZE); - private InternalResources internalResources; + private OpenALStreamingSound.DisposalAction internalResources; private int lastUpdatedBuffer; - public OpenALStreamingSound(ResourceUrn urn, AssetType assetType, StreamingSoundData data, OpenALManager audioManager) { - super(urn, assetType); - this.internalResources = new InternalResources(urn, this); + public OpenALStreamingSound(ResourceUrn urn, AssetType assetType, StreamingSoundData data, OpenALManager audioManager, OpenALStreamingSound.DisposalAction disposableAction) { + super(urn, assetType, disposableAction); + this.internalResources = disposableAction; + this.internalResources.setAsset(this); this.audioManager = audioManager; - getDisposalHook().setDisposeAction(internalResources); reload(data); } @@ -139,24 +127,30 @@ protected void doReload(StreamingSoundData data) { } @Override - protected Optional> doCreateCopy(ResourceUrn copyUrn, AssetType parentAssetType) { - return Optional.of(new OpenALStreamingSound(copyUrn, parentAssetType, stream, audioManager)); + protected Optional> doCreateCopy(ResourceUrn copyUrn, AssetType parentAssetType) { + return Optional.of(new OpenALStreamingSound(copyUrn, parentAssetType, stream, audioManager, + new DisposalAction(copyUrn))); } - private static class InternalResources implements Runnable { - protected int[] buffers = new int[0]; + public static class DisposalAction implements DisposableResource { private final ResourceUrn urn; - private final WeakReference asset; + protected int[] buffers = new int[0]; + private WeakReference asset; - InternalResources(ResourceUrn urn, OpenALStreamingSound asset) { + public DisposalAction(ResourceUrn urn) { this.urn = urn; + } + + public void setAsset(OpenALStreamingSound asset) { this.asset = new WeakReference<>(asset); } + @Override - public void run() { + public void close() { try { GameThread.synch(() -> { OpenALStreamingSound sound = asset.get(); diff --git a/engine/src/main/java/org/terasology/engine/audio/package-info.java b/engine/src/main/java/org/terasology/engine/audio/package-info.java index f4b4bee9031..63b3ef3f995 100644 --- a/engine/src/main/java/org/terasology/engine/audio/package-info.java +++ b/engine/src/main/java/org/terasology/engine/audio/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.audio; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/audio/system/AudioSystem.java b/engine/src/main/java/org/terasology/engine/audio/system/AudioSystem.java index 272885c2845..ea09323a802 100644 --- a/engine/src/main/java/org/terasology/engine/audio/system/AudioSystem.java +++ b/engine/src/main/java/org/terasology/engine/audio/system/AudioSystem.java @@ -18,7 +18,6 @@ import org.joml.Quaternionf; import org.joml.Vector3f; -import org.terasology.engine.utilities.Assets; import org.terasology.engine.audio.AudioManager; import org.terasology.engine.audio.events.PlaySoundEvent; import org.terasology.engine.audio.events.PlaySoundForOwnerEvent; @@ -36,6 +35,7 @@ import org.terasology.engine.network.ClientComponent; import org.terasology.engine.network.NetworkSystem; import org.terasology.engine.registry.In; +import org.terasology.engine.utilities.Assets; /** * This system handles receiving the PlaySound events and activating the AudioManager to play them diff --git a/engine/src/main/java/org/terasology/engine/config/BindsConfig.java b/engine/src/main/java/org/terasology/engine/config/BindsConfig.java index b4b264820fd..08de3103e94 100644 --- a/engine/src/main/java/org/terasology/engine/config/BindsConfig.java +++ b/engine/src/main/java/org/terasology/engine/config/BindsConfig.java @@ -34,7 +34,7 @@ import org.terasology.input.Keyboard.KeyId; import org.terasology.engine.input.RegisterBindButton; import org.terasology.engine.input.binds.movement.ForwardsButton; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import java.lang.reflect.Type; import java.util.Arrays; diff --git a/engine/src/main/java/org/terasology/engine/config/Config.java b/engine/src/main/java/org/terasology/engine/config/Config.java index a0f58880c60..3a1891171fd 100644 --- a/engine/src/main/java/org/terasology/engine/config/Config.java +++ b/engine/src/main/java/org/terasology/engine/config/Config.java @@ -18,17 +18,17 @@ import org.terasology.engine.core.paths.PathManager; import org.terasology.engine.core.subsystem.Resolution; import org.terasology.engine.entitySystem.Component; +import org.terasology.gestalt.naming.Version; +import org.terasology.gestalt.naming.gson.NameTypeAdapter; +import org.terasology.gestalt.naming.gson.VersionTypeAdapter; +import org.terasology.input.Input; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.utilities.gson.CaseInsensitiveEnumTypeAdapterFactory; import org.terasology.engine.utilities.gson.InputHandler; import org.terasology.engine.utilities.gson.ResolutionHandler; import org.terasology.engine.utilities.gson.SetMultimapTypeAdapter; import org.terasology.engine.utilities.gson.UriTypeAdapterFactory; -import org.terasology.input.Input; -import org.terasology.module.sandbox.API; -import org.terasology.naming.Name; -import org.terasology.naming.Version; -import org.terasology.naming.gson.NameTypeAdapter; -import org.terasology.naming.gson.VersionTypeAdapter; import java.io.BufferedReader; import java.io.BufferedWriter; diff --git a/engine/src/main/java/org/terasology/engine/config/ModuleConfig.java b/engine/src/main/java/org/terasology/engine/config/ModuleConfig.java index deda8500a20..e328665be68 100644 --- a/engine/src/main/java/org/terasology/engine/config/ModuleConfig.java +++ b/engine/src/main/java/org/terasology/engine/config/ModuleConfig.java @@ -17,7 +17,7 @@ package org.terasology.engine.config; import com.google.common.collect.Lists; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/config/RenderingConfig.java b/engine/src/main/java/org/terasology/engine/config/RenderingConfig.java index 68383bc9b83..caa5daab62c 100644 --- a/engine/src/main/java/org/terasology/engine/config/RenderingConfig.java +++ b/engine/src/main/java/org/terasology/engine/config/RenderingConfig.java @@ -17,7 +17,7 @@ package org.terasology.engine.config; import org.terasology.engine.core.subsystem.Resolution; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.rendering.cameras.PerspectiveCameraSettings; import org.terasology.engine.rendering.nui.layers.mainMenu.videoSettings.DisplayModeSetting; import org.terasology.engine.rendering.nui.layers.mainMenu.videoSettings.ScreenshotSize; @@ -465,7 +465,7 @@ public void setVrSupport(boolean vrSupport) { boolean oldValue = this.vrSupport; this.vrSupport = vrSupport; propertyChangeSupport.firePropertyChange(VR_SUPPORT, oldValue, this.vrSupport); - } + } public int getMaxTextureAtlasResolution() { return maxTextureAtlasResolution; @@ -505,7 +505,7 @@ public void setNormalMapping(boolean normalMapping) { this.normalMapping = normalMapping; propertyChangeSupport.firePropertyChange(NORMAL_MAPPING, oldValue, this.normalMapping); } - + public boolean isParallaxMapping() { return parallaxMapping; } @@ -680,7 +680,7 @@ public void setDumpShaders(boolean dumpShaders) { this.dumpShaders = dumpShaders; propertyChangeSupport.firePropertyChange(DUMP_SHADERS, oldValue, this.dumpShaders); } - + public boolean isVolumetricFog() { return volumetricFog; } diff --git a/engine/src/main/java/org/terasology/engine/config/RenderingDebugConfig.java b/engine/src/main/java/org/terasology/engine/config/RenderingDebugConfig.java index 1354b986670..a740008ec88 100644 --- a/engine/src/main/java/org/terasology/engine/config/RenderingDebugConfig.java +++ b/engine/src/main/java/org/terasology/engine/config/RenderingDebugConfig.java @@ -19,7 +19,7 @@ import java.beans.PropertyChangeListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.rendering.world.WorldRendererImpl; import org.terasology.engine.utilities.subscribables.AbstractSubscribable; diff --git a/engine/src/main/java/org/terasology/engine/config/facade/TelemetryConfiguration.java b/engine/src/main/java/org/terasology/engine/config/facade/TelemetryConfiguration.java index bd7d469fa13..ca3bd1ae44a 100644 --- a/engine/src/main/java/org/terasology/engine/config/facade/TelemetryConfiguration.java +++ b/engine/src/main/java/org/terasology/engine/config/facade/TelemetryConfiguration.java @@ -15,7 +15,7 @@ */ package org.terasology.engine.config.facade; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * TelemetryConfiguration is a wrapper for {@link org.terasology.engine.config.TelemetryConfig}. diff --git a/engine/src/main/java/org/terasology/engine/config/flexible/AutoConfigManager.java b/engine/src/main/java/org/terasology/engine/config/flexible/AutoConfigManager.java index 3f64f67bc54..ffdd42ecd02 100644 --- a/engine/src/main/java/org/terasology/engine/config/flexible/AutoConfigManager.java +++ b/engine/src/main/java/org/terasology/engine/config/flexible/AutoConfigManager.java @@ -11,7 +11,7 @@ import org.terasology.engine.core.paths.PathManager; import org.terasology.engine.registry.InjectionHelper; import org.terasology.engine.utilities.ReflectionUtil; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.persistence.serializers.Serializer; import org.terasology.reflection.TypeInfo; @@ -26,6 +26,8 @@ import java.util.Optional; import java.util.Set; +import static com.google.common.base.Verify.verifyNotNull; + /** * Loads, Saves and Stores {@link AutoConfig}s */ @@ -48,7 +50,9 @@ public void loadConfigsIn(Context context) { continue; } - SimpleUri configId = ReflectionUtil.getFullyQualifiedSimpleUriFor(configClass, environment); + SimpleUri configId = verifyNotNull(ReflectionUtil.getFullyQualifiedSimpleUriFor(configClass, environment), + "Could not find ID for %s", configClass.getSimpleName() + ); loadConfig(configClass, configId, context); } } diff --git a/engine/src/main/java/org/terasology/engine/config/flexible/Setting.java b/engine/src/main/java/org/terasology/engine/config/flexible/Setting.java index dd9b9f2743e..4e1e7258ac1 100644 --- a/engine/src/main/java/org/terasology/engine/config/flexible/Setting.java +++ b/engine/src/main/java/org/terasology/engine/config/flexible/Setting.java @@ -16,7 +16,7 @@ package org.terasology.engine.config.flexible; import org.terasology.engine.config.flexible.constraints.SettingConstraint; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.reflection.TypeInfo; /** diff --git a/engine/src/main/java/org/terasology/engine/config/flexible/constraints/package-info.java b/engine/src/main/java/org/terasology/engine/config/flexible/constraints/package-info.java index cc32e3dd075..2462ccdd1ec 100644 --- a/engine/src/main/java/org/terasology/engine/config/flexible/constraints/package-info.java +++ b/engine/src/main/java/org/terasology/engine/config/flexible/constraints/package-info.java @@ -15,4 +15,4 @@ */ @API package org.terasology.engine.config.flexible.constraints; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/config/flexible/ui/AssetBackedConstraintWidgetFactory.java b/engine/src/main/java/org/terasology/engine/config/flexible/ui/AssetBackedConstraintWidgetFactory.java index 6523ced1782..d0fcc593b65 100644 --- a/engine/src/main/java/org/terasology/engine/config/flexible/ui/AssetBackedConstraintWidgetFactory.java +++ b/engine/src/main/java/org/terasology/engine/config/flexible/ui/AssetBackedConstraintWidgetFactory.java @@ -4,7 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.config.flexible.Setting; import org.terasology.engine.config.flexible.constraints.SettingConstraint; import org.terasology.nui.UIWidget; diff --git a/engine/src/main/java/org/terasology/engine/config/flexible/ui/AutoConfigScreen.java b/engine/src/main/java/org/terasology/engine/config/flexible/ui/AutoConfigScreen.java index 21ae81b5936..363c1bce4af 100644 --- a/engine/src/main/java/org/terasology/engine/config/flexible/ui/AutoConfigScreen.java +++ b/engine/src/main/java/org/terasology/engine/config/flexible/ui/AutoConfigScreen.java @@ -4,8 +4,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.config.flexible.AutoConfig; import org.terasology.engine.config.flexible.AutoConfigManager; import org.terasology.engine.core.module.ModuleManager; diff --git a/engine/src/main/java/org/terasology/engine/config/flexible/ui/AutoConfigWidgetFactory.java b/engine/src/main/java/org/terasology/engine/config/flexible/ui/AutoConfigWidgetFactory.java index 57bf68e7481..c9fa7641b43 100644 --- a/engine/src/main/java/org/terasology/engine/config/flexible/ui/AutoConfigWidgetFactory.java +++ b/engine/src/main/java/org/terasology/engine/config/flexible/ui/AutoConfigWidgetFactory.java @@ -4,13 +4,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.management.AssetManager; import org.terasology.engine.config.flexible.AutoConfig; import org.terasology.engine.config.flexible.Setting; import org.terasology.engine.context.Context; import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.i18n.TranslationSystem; import org.terasology.engine.registry.In; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.nui.UIWidget; import org.terasology.nui.layouts.PropertyLayout; import org.terasology.nui.properties.Property; diff --git a/engine/src/main/java/org/terasology/engine/config/flexible/ui/ColorConstraintWidgetFactory.java b/engine/src/main/java/org/terasology/engine/config/flexible/ui/ColorConstraintWidgetFactory.java index 9a3a9eef051..7970641891d 100644 --- a/engine/src/main/java/org/terasology/engine/config/flexible/ui/ColorConstraintWidgetFactory.java +++ b/engine/src/main/java/org/terasology/engine/config/flexible/ui/ColorConstraintWidgetFactory.java @@ -6,8 +6,8 @@ import com.google.common.base.Function; import com.google.common.base.Functions; import com.google.common.math.DoubleMath; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.config.flexible.bindings.MappingBinding; import org.terasology.engine.config.flexible.bindings.SettingBinding; import org.terasology.engine.config.flexible.constraints.ColorConstraint; diff --git a/engine/src/main/java/org/terasology/engine/config/flexible/ui/SettingWidgetFactory.java b/engine/src/main/java/org/terasology/engine/config/flexible/ui/SettingWidgetFactory.java index a1e437ef8e1..e059e40fc7b 100644 --- a/engine/src/main/java/org/terasology/engine/config/flexible/ui/SettingWidgetFactory.java +++ b/engine/src/main/java/org/terasology/engine/config/flexible/ui/SettingWidgetFactory.java @@ -3,14 +3,14 @@ package org.terasology.engine.config.flexible.ui; import com.google.common.collect.ImmutableMap; -import org.terasology.assets.management.AssetManager; import org.terasology.engine.config.flexible.Setting; import org.terasology.engine.config.flexible.constraints.SettingConstraint; import org.terasology.engine.context.Context; import org.terasology.engine.registry.In; import org.terasology.engine.registry.InjectionHelper; import org.terasology.engine.utilities.ReflectionUtil; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.nui.UIWidget; import java.lang.reflect.Type; diff --git a/engine/src/main/java/org/terasology/engine/context/Context.java b/engine/src/main/java/org/terasology/engine/context/Context.java index 0cc268bf3c6..390c7f9baa7 100644 --- a/engine/src/main/java/org/terasology/engine/context/Context.java +++ b/engine/src/main/java/org/terasology/engine/context/Context.java @@ -15,7 +15,7 @@ */ package org.terasology.engine.context; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Provides classes with the utility objects that belong to the context they are running in. diff --git a/engine/src/main/java/org/terasology/engine/core/ComponentFieldUri.java b/engine/src/main/java/org/terasology/engine/core/ComponentFieldUri.java index f6f0381c3d4..98ac34e66ce 100644 --- a/engine/src/main/java/org/terasology/engine/core/ComponentFieldUri.java +++ b/engine/src/main/java/org/terasology/engine/core/ComponentFieldUri.java @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.core; -import org.terasology.module.sandbox.API; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; import java.util.Objects; diff --git a/engine/src/main/java/org/terasology/engine/core/ComponentSystemManager.java b/engine/src/main/java/org/terasology/engine/core/ComponentSystemManager.java index 63c391a3fb3..5c75d6b630f 100644 --- a/engine/src/main/java/org/terasology/engine/core/ComponentSystemManager.java +++ b/engine/src/main/java/org/terasology/engine/core/ComponentSystemManager.java @@ -17,12 +17,12 @@ import org.terasology.engine.entitySystem.systems.UpdateSubscriberSystem; import org.terasology.engine.logic.console.Console; import org.terasology.engine.logic.console.commandSystem.MethodCommand; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.sandbox.API; -import org.terasology.naming.Name; import org.terasology.engine.network.NetworkMode; import org.terasology.engine.registry.InjectionHelper; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; import java.util.List; import java.util.Map; @@ -148,6 +148,7 @@ private void initialiseSystem(ComponentSystem system) { } try { + logger.debug("Initialising {}", system); system.initialise(); } catch (RuntimeException e) { logger.error("Failed to initialise system {}", system, e); diff --git a/engine/src/main/java/org/terasology/engine/core/NonNativeJVMDetector.java b/engine/src/main/java/org/terasology/engine/core/NonNativeJVMDetector.java index d5c2c0ab6d0..a4cea69a6ff 100644 --- a/engine/src/main/java/org/terasology/engine/core/NonNativeJVMDetector.java +++ b/engine/src/main/java/org/terasology/engine/core/NonNativeJVMDetector.java @@ -3,8 +3,8 @@ package org.terasology.engine.core; import java.io.BufferedReader; -import java.io.InputStreamReader; import java.io.IOException; +import java.io.InputStreamReader; public final class NonNativeJVMDetector { diff --git a/engine/src/main/java/org/terasology/engine/core/Observer.java b/engine/src/main/java/org/terasology/engine/core/Observer.java index 292956a359d..21aff61dd48 100644 --- a/engine/src/main/java/org/terasology/engine/core/Observer.java +++ b/engine/src/main/java/org/terasology/engine/core/Observer.java @@ -3,7 +3,7 @@ package org.terasology.engine.core; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * A general interface for observers diff --git a/engine/src/main/java/org/terasology/engine/core/SimpleUri.java b/engine/src/main/java/org/terasology/engine/core/SimpleUri.java index 678296ae9b9..2179bb550e1 100644 --- a/engine/src/main/java/org/terasology/engine/core/SimpleUri.java +++ b/engine/src/main/java/org/terasology/engine/core/SimpleUri.java @@ -4,8 +4,8 @@ import com.google.common.base.Objects; import com.google.common.base.Preconditions; -import org.terasology.module.sandbox.API; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; /** * A URI to identify standard objects in Terasology - components, events, etc. diff --git a/engine/src/main/java/org/terasology/engine/core/TerasologyConstants.java b/engine/src/main/java/org/terasology/engine/core/TerasologyConstants.java index 78618158500..3d52795895e 100644 --- a/engine/src/main/java/org/terasology/engine/core/TerasologyConstants.java +++ b/engine/src/main/java/org/terasology/engine/core/TerasologyConstants.java @@ -4,7 +4,7 @@ package org.terasology.engine.core; import com.google.common.base.Charsets; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import java.nio.charset.Charset; import java.nio.file.Path; diff --git a/engine/src/main/java/org/terasology/engine/core/TerasologyEngine.java b/engine/src/main/java/org/terasology/engine/core/TerasologyEngine.java index f5640c8a91c..65f6d940f5b 100644 --- a/engine/src/main/java/org/terasology/engine/core/TerasologyEngine.java +++ b/engine/src/main/java/org/terasology/engine/core/TerasologyEngine.java @@ -9,9 +9,6 @@ import com.google.common.collect.Sets; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.AssetFactory; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.config.Config; import org.terasology.engine.context.Context; import org.terasology.engine.context.internal.ContextImpl; @@ -35,12 +32,10 @@ import org.terasology.engine.core.subsystem.common.WorldGenerationSubsystem; import org.terasology.engine.core.subsystem.rendering.ModuleRenderingSubsystem; import org.terasology.engine.entitySystem.prefab.Prefab; -import org.terasology.engine.entitySystem.prefab.PrefabData; import org.terasology.engine.entitySystem.prefab.internal.PojoPrefab; import org.terasology.engine.i18n.I18nSubsystem; import org.terasology.engine.input.InputSystem; import org.terasology.engine.logic.behavior.asset.BehaviorTree; -import org.terasology.engine.logic.behavior.asset.BehaviorTreeData; import org.terasology.engine.monitoring.Activity; import org.terasology.engine.monitoring.PerformanceMonitor; import org.terasology.engine.network.NetworkSystem; @@ -51,22 +46,22 @@ import org.terasology.engine.recording.RecordAndReplayUtils; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.rendering.gltf.ByteBufferAsset; -import org.terasology.engine.rendering.gltf.ByteBufferData; import org.terasology.engine.version.TerasologyVersion; import org.terasology.engine.world.block.loader.BlockFamilyDefinition; import org.terasology.engine.world.block.loader.BlockFamilyDefinitionData; import org.terasology.engine.world.block.loader.BlockFamilyDefinitionFormat; import org.terasology.engine.world.block.shapes.BlockShape; -import org.terasology.engine.world.block.shapes.BlockShapeData; import org.terasology.engine.world.block.shapes.BlockShapeImpl; import org.terasology.engine.world.block.sounds.BlockSounds; -import org.terasology.engine.world.block.sounds.BlockSoundsData; import org.terasology.engine.world.block.tiles.BlockTile; -import org.terasology.engine.world.block.tiles.TileData; -import org.terasology.nui.asset.UIData; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.gestalt.assets.module.autoreload.AutoReloadAssetTypeManager; +import org.terasology.nui.UIWidget; import org.terasology.nui.asset.UIElement; import org.terasology.nui.skin.UISkinAsset; -import org.terasology.nui.skin.UISkinData; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; import org.terasology.reflection.ModuleTypeRegistry; import org.terasology.reflection.TypeRegistry; @@ -188,6 +183,10 @@ public TerasologyEngine(TimeSubsystem timeSubsystem, Collection // add all subsystem as engine module part. (needs for ECS classes loaded from external subsystems) allSubsystems.stream().map(Object::getClass).forEach(this::addToClassesOnClasspathsToAddToEngine); + + // register NUI classes with engine module + addToClassesOnClasspathsToAddToEngine(UIWidget.class); + addToClassesOnClasspathsToAddToEngine(ResourceUrn.class); } /** @@ -312,13 +311,14 @@ private void verifyRequiredSystemIsRegistered(Class clazz) { private void initManagers() { changeStatus(TerasologyEngineStatus.INITIALIZING_MODULE_MANAGER); - ModuleTypeRegistry typeRegistry = new ModuleTypeRegistry(); TypeRegistry.WHITELISTED_CLASSES = ExternalApiWhitelist.CLASSES.stream().map(Class::getName).collect(Collectors.toSet()); TypeRegistry.WHITELISTED_PACKAGES = ExternalApiWhitelist.PACKAGES; - rootContext.put(ModuleTypeRegistry.class, typeRegistry); - rootContext.put(TypeRegistry.class, typeRegistry); ModuleManager moduleManager = new ModuleManager(rootContext.get(Config.class), classesOnClasspathsToAddToEngine); + ModuleTypeRegistry typeRegistry = new ModuleTypeRegistry(moduleManager.getEnvironment()); + + rootContext.put(ModuleTypeRegistry.class, typeRegistry); + rootContext.put(TypeRegistry.class, typeRegistry); rootContext.put(ModuleManager.class, moduleManager); changeStatus(TerasologyEngineStatus.INITIALIZING_LOWLEVEL_OBJECT_MANIPULATION); @@ -331,7 +331,7 @@ private void initManagers() { rootContext.put(TypeHandlerLibrary.class, TypeHandlerLibraryImpl.forModuleEnvironment(moduleManager, typeRegistry)); changeStatus(TerasologyEngineStatus.INITIALIZING_ASSET_TYPES); - assetTypeManager = new ModuleAwareAssetTypeManager(); + assetTypeManager = new AutoReloadAssetTypeManager(); rootContext.put(ModuleAwareAssetTypeManager.class, assetTypeManager); rootContext.put(AssetManager.class, assetTypeManager.getAssetManager()); } @@ -340,25 +340,21 @@ private void initAssets() { // cast lambdas explicitly to avoid inconsistent compiler behavior wrt. type inference - assetTypeManager.registerCoreAssetType(Prefab.class, - (AssetFactory) PojoPrefab::new, false, "prefabs"); - assetTypeManager.registerCoreAssetType(BlockShape.class, - (AssetFactory) BlockShapeImpl::new, "shapes"); - assetTypeManager.registerCoreAssetType(BlockSounds.class, - (AssetFactory) BlockSounds::new, "blockSounds"); - assetTypeManager.registerCoreAssetType(BlockTile.class, - (AssetFactory) BlockTile::new, "blockTiles"); - assetTypeManager.registerCoreAssetType(BlockFamilyDefinition.class, - (AssetFactory) BlockFamilyDefinition::new, "blocks"); - assetTypeManager.registerCoreFormat(BlockFamilyDefinition.class, + assetTypeManager.createAssetType(Prefab.class, PojoPrefab::new, "prefabs"); + + assetTypeManager.createAssetType(BlockShape.class, BlockShapeImpl::new, "shapes"); + assetTypeManager.createAssetType(BlockSounds.class, BlockSounds::new, "blockSounds"); + assetTypeManager.createAssetType(BlockTile.class, BlockTile::new, "blockTiles"); + + AssetType blockFamilyDefinitionAssetType = assetTypeManager.createAssetType(BlockFamilyDefinition.class, BlockFamilyDefinition::new, "blocks"); + + assetTypeManager.getAssetFileDataProducer(blockFamilyDefinitionAssetType).addAssetFormat( new BlockFamilyDefinitionFormat(assetTypeManager.getAssetManager())); - assetTypeManager.registerCoreAssetType(UISkinAsset.class, - (AssetFactory) UISkinAsset::new, "skins"); - assetTypeManager.registerCoreAssetType(BehaviorTree.class, - (AssetFactory) BehaviorTree::new, false, "behaviors"); - assetTypeManager.registerCoreAssetType(UIElement.class, - (AssetFactory) UIElement::new, "ui"); - assetTypeManager.registerCoreAssetType(ByteBufferAsset.class, (AssetFactory) ByteBufferAsset::new, "mesh"); + assetTypeManager.createAssetType(UISkinAsset.class, UISkinAsset::new, "skins"); + assetTypeManager.createAssetType(BehaviorTree.class, BehaviorTree::new, "behaviors"); + assetTypeManager.createAssetType(UIElement.class, UIElement::new, "ui"); + + assetTypeManager.createAssetType(ByteBufferAsset.class, ByteBufferAsset::new, "mesh"); for (EngineSubsystem subsystem : allSubsystems) { subsystem.registerCoreAssetTypes(assetTypeManager); @@ -472,7 +468,9 @@ public boolean tick() { return false; } - assetTypeManager.reloadChangedOnDisk(); + if (assetTypeManager instanceof AutoReloadAssetTypeManager) { + ((AutoReloadAssetTypeManager) assetTypeManager).reloadChangedAssets(); + } processPendingState(); diff --git a/engine/src/main/java/org/terasology/engine/core/Time.java b/engine/src/main/java/org/terasology/engine/core/Time.java index 19ec4b4d80f..229492359cd 100644 --- a/engine/src/main/java/org/terasology/engine/core/Time.java +++ b/engine/src/main/java/org/terasology/engine/core/Time.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.core; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * The timer manages all time in the game. diff --git a/engine/src/main/java/org/terasology/engine/core/Uri.java b/engine/src/main/java/org/terasology/engine/core/Uri.java index 0472d97261d..ff2b9c5e071 100644 --- a/engine/src/main/java/org/terasology/engine/core/Uri.java +++ b/engine/src/main/java/org/terasology/engine/core/Uri.java @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.core; -import org.terasology.module.sandbox.API; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; /** * Uris are used to identify resources, like assets and systems introduced by mods. Uris can then be serialized/deserialized to and from Strings. diff --git a/engine/src/main/java/org/terasology/engine/core/bootstrap/ClassMetaLibrary.java b/engine/src/main/java/org/terasology/engine/core/bootstrap/ClassMetaLibrary.java index 4de2e05e4f6..fb4e6e81a70 100644 --- a/engine/src/main/java/org/terasology/engine/core/bootstrap/ClassMetaLibrary.java +++ b/engine/src/main/java/org/terasology/engine/core/bootstrap/ClassMetaLibrary.java @@ -16,10 +16,10 @@ package org.terasology.engine.core.bootstrap; -import java.lang.annotation.Annotation; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; -import org.terasology.module.sandbox.API; -import org.terasology.naming.Name; +import java.lang.annotation.Annotation; /** * Provides information on available classes. diff --git a/engine/src/main/java/org/terasology/engine/core/bootstrap/ClassMetaLibraryImpl.java b/engine/src/main/java/org/terasology/engine/core/bootstrap/ClassMetaLibraryImpl.java index 71d9541a268..fec9684c468 100644 --- a/engine/src/main/java/org/terasology/engine/core/bootstrap/ClassMetaLibraryImpl.java +++ b/engine/src/main/java/org/terasology/engine/core/bootstrap/ClassMetaLibraryImpl.java @@ -16,11 +16,11 @@ package org.terasology.engine.core.bootstrap; -import java.lang.annotation.Annotation; - import org.terasology.engine.context.Context; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; + +import java.lang.annotation.Annotation; public class ClassMetaLibraryImpl implements ClassMetaLibrary { diff --git a/engine/src/main/java/org/terasology/engine/core/bootstrap/EntitySystemSetupUtil.java b/engine/src/main/java/org/terasology/engine/core/bootstrap/EntitySystemSetupUtil.java index 25880649bf8..8fb7592fd5b 100644 --- a/engine/src/main/java/org/terasology/engine/core/bootstrap/EntitySystemSetupUtil.java +++ b/engine/src/main/java/org/terasology/engine/core/bootstrap/EntitySystemSetupUtil.java @@ -3,7 +3,6 @@ package org.terasology.engine.core.bootstrap; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.audio.events.PlaySoundEvent; import org.terasology.engine.context.Context; import org.terasology.engine.core.module.ModuleManager; @@ -39,8 +38,9 @@ import org.terasology.engine.recording.RecordAndReplayUtils; import org.terasology.engine.recording.RecordedEventStore; import org.terasology.engine.recording.RecordingEventSystemDecorator; -import org.terasology.module.ModuleEnvironment; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.properties.OneOfProviderFactory; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; import org.terasology.reflection.TypeRegistry; @@ -175,7 +175,9 @@ private static void registerComponents(ComponentLibrary library, ModuleEnvironme private static void registerEvents(EventSystem eventSystem, ModuleEnvironment environment) { for (Class type : environment.getSubtypesOf(Event.class)) { if (type.getAnnotation(DoNotAutoRegister.class) == null) { - eventSystem.registerEvent(new ResourceUrn(environment.getModuleProviding(type).toString(), type.getSimpleName()), type); + Name module = verifyNotNull(environment.getModuleProviding(type), + "Environment has no module for %s", type.getSimpleName()); + eventSystem.registerEvent(new ResourceUrn(module.toString(), type.getSimpleName()), type); } } } diff --git a/engine/src/main/java/org/terasology/engine/core/bootstrap/EnvironmentSwitchHandler.java b/engine/src/main/java/org/terasology/engine/core/bootstrap/EnvironmentSwitchHandler.java index c322fbf8512..962caed0c0f 100644 --- a/engine/src/main/java/org/terasology/engine/core/bootstrap/EnvironmentSwitchHandler.java +++ b/engine/src/main/java/org/terasology/engine/core/bootstrap/EnvironmentSwitchHandler.java @@ -2,10 +2,16 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.core.bootstrap; +import com.google.common.collect.ImmutableList; +import org.joml.Quaternionf; +import org.joml.Vector2f; +import org.joml.Vector2i; +import org.joml.Vector3f; +import org.joml.Vector3i; +import org.joml.Vector4f; +import org.joml.Vector4i; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.config.flexible.AutoConfigManager; import org.terasology.engine.context.Context; import org.terasology.engine.core.module.ModuleManager; @@ -25,9 +31,11 @@ import org.terasology.engine.physics.CollisionGroup; import org.terasology.engine.physics.CollisionGroupManager; import org.terasology.engine.registry.InjectionHelper; -import org.terasology.engine.utilities.ReflectionUtil; -import org.terasology.module.ModuleEnvironment; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.naming.Name; +import org.terasology.gestalt.util.reflection.GenericsUtil; import org.terasology.persistence.typeHandling.TypeHandler; import org.terasology.persistence.typeHandling.TypeHandlerFactory; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; @@ -35,11 +43,10 @@ import org.terasology.reflection.TypeInfo; import org.terasology.reflection.copy.CopyStrategy; import org.terasology.reflection.copy.CopyStrategyLibrary; -import org.terasology.reflection.copy.RegisterCopyStrategy; import org.terasology.reflection.reflect.ReflectFactory; -import org.terasology.util.reflection.GenericsUtil; import java.lang.reflect.Type; +import java.util.Collection; import java.util.Optional; import static com.google.common.base.Verify.verifyNotNull; @@ -53,10 +60,19 @@ public final class EnvironmentSwitchHandler { private PrefabFormat registeredPrefabFormat; private PrefabDeltaFormat registeredPrefabDeltaFormat; + private final Collection> typesWithCopyConstructors = ImmutableList.of( + new CopyStrategyEntry<>(Quaternionf.class, Quaternionf::new), + new CopyStrategyEntry<>(Vector2f.class, Vector2f::new), + new CopyStrategyEntry<>(Vector2i.class, Vector2i::new), + new CopyStrategyEntry<>(Vector3f.class, Vector3f::new), + new CopyStrategyEntry<>(Vector3i.class, Vector3i::new), + new CopyStrategyEntry<>(Vector4f.class, Vector4f::new), + new CopyStrategyEntry<>(Vector4i.class, Vector4i::new) + ); + public EnvironmentSwitchHandler() { } - @SuppressWarnings("unchecked") public void handleSwitchToGameEnvironment(Context context) { ModuleManager moduleManager = context.get(ModuleManager.class); ModuleEnvironment environment = moduleManager.getEnvironment(); @@ -66,16 +82,9 @@ public void handleSwitchToGameEnvironment(Context context) { CopyStrategyLibrary copyStrategyLibrary = context.get(CopyStrategyLibrary.class); copyStrategyLibrary.clear(); - for (Class copyStrategy : environment.getSubtypesOf(CopyStrategy.class)) { - if (copyStrategy.getAnnotation(RegisterCopyStrategy.class) == null) { - continue; - } - Type targetType = ReflectionUtil.getTypeParameterForSuper(copyStrategy, CopyStrategy.class, 0); - if (targetType instanceof Class) { - registerCopyStrategy(copyStrategyLibrary, (Class) targetType, copyStrategy); - } else { - logger.error("Cannot register CopyStrategy '{}' - unable to determine target type", copyStrategy); - } + + for (CopyStrategyEntry entry : typesWithCopyConstructors) { + entry.registerWith(copyStrategyLibrary); } //TODO: find a permanent fix over just creating a new typehandler @@ -113,22 +122,21 @@ public void handleSwitchToGameEnvironment(Context context) { */ unregisterPrefabFormats(assetTypeManager); registeredPrefabFormat = new PrefabFormat(componentLibrary, typeHandlerLibrary); - assetTypeManager.registerCoreFormat(Prefab.class, registeredPrefabFormat); + assetTypeManager.getAssetFileDataProducer(assetTypeManager + .getAssetType(Prefab.class) + .orElseThrow(() -> new RuntimeException("Cannot get Prefab Asset typee"))) + .addAssetFormat(registeredPrefabFormat); registeredPrefabDeltaFormat = new PrefabDeltaFormat(componentLibrary, typeHandlerLibrary); - assetTypeManager.registerCoreDeltaFormat(Prefab.class, registeredPrefabDeltaFormat); + assetTypeManager.getAssetFileDataProducer(assetTypeManager + .getAssetType(Prefab.class) + .orElseThrow(() -> new RuntimeException("Cannot get Prefab Asset type"))) + .addDeltaFormat(registeredPrefabDeltaFormat); assetTypeManager.switchEnvironment(environment); + assetTypeManager.reloadAssets(); } - private > void registerCopyStrategy(CopyStrategyLibrary copyStrategyLibrary, Class type, Class strategy) { - try { - copyStrategyLibrary.register(type, strategy.newInstance()); - } catch (InstantiationException | IllegalAccessException e) { - logger.error("Cannot register CopyStrategy '{}' - failed to instantiate", strategy, e); - } - } - /** * Switches the environment of the asset manager to the specified one. It does not register the prefab formats * as they require a proper ComponentLibrary. @@ -166,11 +174,17 @@ public void handleSwitchToEmptyEnvironment(Context context) { private void unregisterPrefabFormats(ModuleAwareAssetTypeManager assetTypeManager) { if (registeredPrefabFormat != null) { - assetTypeManager.removeCoreFormat(Prefab.class, registeredPrefabFormat); + assetTypeManager.getAssetFileDataProducer(assetTypeManager + .getAssetType(Prefab.class) + .orElseThrow(() -> new RuntimeException("Cannot get Prefab Asset type"))) + .removeAssetFormat(registeredPrefabFormat); registeredPrefabFormat = null; } if (registeredPrefabDeltaFormat != null) { - assetTypeManager.removeCoreDeltaFormat(Prefab.class, registeredPrefabDeltaFormat); + assetTypeManager.getAssetFileDataProducer(assetTypeManager + .getAssetType(Prefab.class) + .orElseThrow(() -> new RuntimeException("Cannot get Prefab Asset type"))) + .removeDeltaFormat(registeredPrefabDeltaFormat); registeredPrefabDeltaFormat = null; } } @@ -210,4 +224,21 @@ private static void registerTypeHandlers(Context context, TypeHandlerLibrary lib library.addTypeHandlerFactory(instance); } } + + // FIXME: Move this class to a more appropriate package. + static class CopyStrategyEntry { + final Class type; + final CopyStrategy copyStrategy; + + CopyStrategyEntry(Class type, CopyStrategy copyStrategy) { + this.type = type; + this.copyStrategy = copyStrategy; + } + + void registerWith(CopyStrategyLibrary copyStrategyLibrary) { + // I tried to inline this at the call site, but Java didn't seem to want to believe + // these were compatible types unless I put this in a method of this generic class. + copyStrategyLibrary.register(type, copyStrategy); + } + } } diff --git a/engine/src/main/java/org/terasology/engine/core/bootstrap/eventSystem/AbstractEventSystemDecorator.java b/engine/src/main/java/org/terasology/engine/core/bootstrap/eventSystem/AbstractEventSystemDecorator.java index eed54dbc545..d9ce888d9ba 100644 --- a/engine/src/main/java/org/terasology/engine/core/bootstrap/eventSystem/AbstractEventSystemDecorator.java +++ b/engine/src/main/java/org/terasology/engine/core/bootstrap/eventSystem/AbstractEventSystemDecorator.java @@ -3,13 +3,13 @@ package org.terasology.engine.core.bootstrap.eventSystem; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.event.Event; import org.terasology.engine.entitySystem.event.internal.EventReceiver; import org.terasology.engine.entitySystem.event.internal.EventSystem; import org.terasology.engine.entitySystem.systems.ComponentSystem; +import org.terasology.gestalt.assets.ResourceUrn; public abstract class AbstractEventSystemDecorator implements EventSystem { private final EventSystem eventSystem; diff --git a/engine/src/main/java/org/terasology/engine/core/modes/StateIngame.java b/engine/src/main/java/org/terasology/engine/core/modes/StateIngame.java index cf0c17cdeea..a6212837bb6 100644 --- a/engine/src/main/java/org/terasology/engine/core/modes/StateIngame.java +++ b/engine/src/main/java/org/terasology/engine/core/modes/StateIngame.java @@ -32,12 +32,9 @@ import org.terasology.engine.input.InputSystem; import org.terasology.engine.input.cameraTarget.CameraTargetSystem; import org.terasology.engine.logic.console.Console; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; import org.terasology.engine.monitoring.PerformanceMonitor; import org.terasology.engine.network.NetworkMode; import org.terasology.engine.network.NetworkSystem; -import org.terasology.nui.databinding.ReadOnlyBinding; import org.terasology.engine.persistence.StorageManager; import org.terasology.engine.physics.engine.PhysicsEngine; import org.terasology.engine.rendering.nui.NUIManager; @@ -45,6 +42,9 @@ import org.terasology.engine.rendering.world.WorldRenderer; import org.terasology.engine.rendering.world.WorldRenderer.RenderingStage; import org.terasology.engine.world.chunks.ChunkProvider; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.nui.databinding.ReadOnlyBinding; import java.util.Collections; diff --git a/engine/src/main/java/org/terasology/engine/core/modes/StateLoading.java b/engine/src/main/java/org/terasology/engine/core/modes/StateLoading.java index 5763c8b971e..986e85d3f97 100644 --- a/engine/src/main/java/org/terasology/engine/core/modes/StateLoading.java +++ b/engine/src/main/java/org/terasology/engine/core/modes/StateLoading.java @@ -7,10 +7,10 @@ import com.google.common.collect.Queues; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.terasology.crashreporter.CrashReporter; import org.terasology.engine.config.Config; import org.terasology.engine.config.SystemConfig; import org.terasology.engine.context.Context; -import org.terasology.crashreporter.CrashReporter; import org.terasology.engine.core.EngineTime; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.LoggingContext; @@ -53,11 +53,11 @@ import org.terasology.engine.network.NetworkMode; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.rendering.nui.NUIManager; -import org.terasology.nui.canvas.CanvasRenderer; import org.terasology.engine.rendering.nui.internal.NUIManagerInternal; import org.terasology.engine.rendering.nui.internal.TerasologyCanvasRenderer; import org.terasology.engine.rendering.nui.layers.mainMenu.loadingScreen.LoadingScreen; import org.terasology.engine.world.chunks.event.OnChunkLoaded; +import org.terasology.nui.canvas.CanvasRenderer; import java.util.Queue; diff --git a/engine/src/main/java/org/terasology/engine/core/modes/StateMainMenu.java b/engine/src/main/java/org/terasology/engine/core/modes/StateMainMenu.java index f210fcb58e2..0a61fd6124b 100644 --- a/engine/src/main/java/org/terasology/engine/core/modes/StateMainMenu.java +++ b/engine/src/main/java/org/terasology/engine/core/modes/StateMainMenu.java @@ -30,7 +30,6 @@ import org.terasology.engine.rendering.nui.NUIManager; import org.terasology.engine.rendering.nui.editor.systems.NUIEditorSystem; import org.terasology.engine.rendering.nui.editor.systems.NUISkinEditorSystem; -import org.terasology.nui.canvas.CanvasRenderer; import org.terasology.engine.rendering.nui.internal.NUIManagerInternal; import org.terasology.engine.rendering.nui.internal.TerasologyCanvasRenderer; import org.terasology.engine.rendering.nui.layers.mainMenu.LaunchPopup; @@ -39,6 +38,7 @@ import org.terasology.engine.telemetry.TelemetryUtils; import org.terasology.engine.telemetry.logstash.TelemetryLogstashAppender; import org.terasology.engine.utilities.Assets; +import org.terasology.nui.canvas.CanvasRenderer; /** * The class implements the main game menu. diff --git a/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/AwaitedLocalCharacterSpawnEvent.java b/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/AwaitedLocalCharacterSpawnEvent.java index a03b770bfee..fe641205bae 100644 --- a/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/AwaitedLocalCharacterSpawnEvent.java +++ b/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/AwaitedLocalCharacterSpawnEvent.java @@ -17,7 +17,7 @@ import org.terasology.engine.entitySystem.event.Event; import org.terasology.engine.entitySystem.systems.BaseComponentSystem; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Event which is triggered when LocalPlayer is setup with a character entity. Allows for detection of when LocalPlayer is diff --git a/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/InitialiseWorld.java b/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/InitialiseWorld.java index d5bf84f494d..d0a074a66a2 100644 --- a/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/InitialiseWorld.java +++ b/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/InitialiseWorld.java @@ -20,7 +20,6 @@ import org.terasology.engine.entitySystem.entity.internal.EngineEntityManager; import org.terasology.engine.game.GameManifest; import org.terasology.engine.logic.players.LocalPlayer; -import org.terasology.module.ModuleEnvironment; import org.terasology.engine.persistence.StorageManager; import org.terasology.engine.persistence.internal.ReadOnlyStorageManager; import org.terasology.engine.persistence.internal.ReadWriteStorageManager; @@ -54,6 +53,7 @@ import org.terasology.engine.world.sun.BasicCelestialModel; import org.terasology.engine.world.sun.CelestialSystem; import org.terasology.engine.world.sun.DefaultCelestialSystem; +import org.terasology.gestalt.module.ModuleEnvironment; import java.io.IOException; import java.nio.file.Path; diff --git a/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/JoinServer.java b/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/JoinServer.java index fea2a5b93ce..19b47b07259 100644 --- a/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/JoinServer.java +++ b/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/JoinServer.java @@ -28,14 +28,14 @@ import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.game.Game; import org.terasology.engine.game.GameManifest; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; -import org.terasology.naming.NameVersion; import org.terasology.engine.network.JoinStatus; import org.terasology.engine.network.NetworkSystem; import org.terasology.engine.network.Server; import org.terasology.engine.network.ServerInfoMessage; import org.terasology.engine.world.internal.WorldInfo; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.naming.NameVersion; import java.util.Map; import java.util.Map.Entry; diff --git a/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/LoadPrefabs.java b/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/LoadPrefabs.java index 74e02fa2d43..823568dbef4 100644 --- a/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/LoadPrefabs.java +++ b/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/LoadPrefabs.java @@ -16,11 +16,11 @@ package org.terasology.engine.core.modes.loadProcesses; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; import org.terasology.engine.context.Context; import org.terasology.engine.core.modes.StepBasedLoadProcess; import org.terasology.engine.entitySystem.prefab.Prefab; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import java.util.Iterator; diff --git a/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/RegisterBlocks.java b/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/RegisterBlocks.java index a029b7f082a..9a37a1e7786 100644 --- a/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/RegisterBlocks.java +++ b/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/RegisterBlocks.java @@ -3,7 +3,6 @@ package org.terasology.engine.core.modes.loadProcesses; -import org.terasology.assets.management.AssetManager; import org.terasology.engine.config.Config; import org.terasology.engine.context.Context; import org.terasology.engine.core.modes.SingleStepLoadProcess; @@ -19,7 +18,8 @@ import org.terasology.engine.world.block.internal.BlockManagerImpl; import org.terasology.engine.world.block.tiles.WorldAtlas; import org.terasology.engine.world.block.tiles.WorldAtlasImpl; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; /** diff --git a/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/RegisterMods.java b/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/RegisterMods.java index e8cdac9b07c..83fef13f4cc 100644 --- a/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/RegisterMods.java +++ b/engine/src/main/java/org/terasology/engine/core/modes/loadProcesses/RegisterMods.java @@ -25,12 +25,12 @@ import org.terasology.engine.core.modes.StateMainMenu; import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.game.GameManifest; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.ResolutionResult; -import org.terasology.naming.Name; -import org.terasology.naming.NameVersion; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; +import org.terasology.gestalt.naming.Name; +import org.terasology.gestalt.naming.NameVersion; import java.util.ArrayList; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/core/module/APIScannerTolerantOfAssetOnlyModules.java b/engine/src/main/java/org/terasology/engine/core/module/APIScannerTolerantOfAssetOnlyModules.java deleted file mode 100644 index 6ba5966cda1..00000000000 --- a/engine/src/main/java/org/terasology/engine/core/module/APIScannerTolerantOfAssetOnlyModules.java +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2021 The Terasology Foundation -// SPDX-License-Identifier: Apache-2.0 - -package org.terasology.engine.core.module; - -import org.reflections.ReflectionsException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.terasology.module.Module; -import org.terasology.module.ModuleRegistry; -import org.terasology.module.sandbox.APIScanner; -import org.terasology.module.sandbox.StandardPermissionProviderFactory; - -import static org.terasology.engine.core.module.StandardModuleExtension.IS_ASSET; - -/** - * APIScanner that doesn't crash on asset-only modules. - *

- * The APIScanner in gestalt-module v5 crashes when it encounters a module that does have a - * reflections.cache but its TypeAnnotationsScanner element is empty - * on account of there being no classes in there. - *

- * {@inheritDoc} - */ -class APIScannerTolerantOfAssetOnlyModules extends APIScanner { - private static final Logger logger = LoggerFactory.getLogger(APIScannerTolerantOfAssetOnlyModules.class); - - APIScannerTolerantOfAssetOnlyModules(StandardPermissionProviderFactory permissionProviderFactory) { - super(permissionProviderFactory); - } - - @Override - public void scan(ModuleRegistry registry) { - for (Module module : registry) { - if (module.isOnClasspath() && !IS_ASSET.isProvidedBy(module)) { - try { - scan(module); - } catch (ReflectionsException e) { - // {@link org.terasology.cities} is an example of a module that fails here. - // It is not asset-only, but it also doesn't have any of its classes annotated, - // and it gets an error about TypeAnnotationScanner configuration here. - logger.warn("Scanning module {} failed:", module, e); - } - } - } - } -} diff --git a/engine/src/main/java/org/terasology/engine/core/module/ClasspathCompromisingModuleFactory.java b/engine/src/main/java/org/terasology/engine/core/module/ClasspathCompromisingModuleFactory.java new file mode 100644 index 00000000000..2c268541299 --- /dev/null +++ b/engine/src/main/java/org/terasology/engine/core/module/ClasspathCompromisingModuleFactory.java @@ -0,0 +1,91 @@ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 + +package org.terasology.engine.core.module; + +import com.google.common.base.MoreObjects; +import com.google.common.collect.ImmutableSet; +import org.reflections.util.ClasspathHelper; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleFactory; +import org.terasology.gestalt.module.ModuleMetadata; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Set; +import java.util.function.Predicate; + +/** + * Creates modules that can own classes that were loaded without a ModuleClassLoader. + *

+ * When {@link ModuleEnvironment#getModuleProviding(Class)} checks modules built using the default + * ModuleFactory, it will only acknowledge the class as belonging to that module if it was loaded + * using the module's ModuleClassLoader. + *

+ * This factory will recognize classes as belonging to the module as long as that class's source + * location is within the module's directory or archive. + *

+ * ⚠ Usually checking the classloader is sufficient and thus you + * should not find the need to use this in production code. It's useful in cases where + * the module cannot be loaded using a ModuleClassLoader (e.g. a test runner) and it's + * acceptable to run without the protections ModuleClassLoader provides. + */ +class ClasspathCompromisingModuleFactory extends ModuleFactory { + @Override + public Module createDirectoryModule(ModuleMetadata metadata, File directory) { + Module module = super.createDirectoryModule(metadata, directory); + return new Module( + module.getMetadata(), module.getResources(), + module.getClasspaths(), module.getModuleManifest(), + new ClassesInModule(module)); + } + + @Override + public Module createArchiveModule(ModuleMetadata metadata, File archive) throws IOException { + Module module = super.createArchiveModule(metadata, archive); + return new Module( + module.getMetadata(), module.getResources(), + module.getClasspaths(), module.getModuleManifest(), + new ClassesInModule(module)); + } + + static class ClassesInModule implements Predicate> { + + private final Set classpaths; + private final ClassLoader[] classLoaders; + private final String name; + + ClassesInModule(Module module) { + classpaths = module.getClasspaths().stream().map(f -> { + try { + URL url = f.toURI().toURL(); + if (f.getName().endsWith(".jar")) { + // Code from jars has a `jar:` URL. + return new URL("jar", null, url.toString() + "!/"); + } + return url; + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + }).collect(ImmutableSet.toImmutableSet()); + classLoaders = module.getModuleManifest().getConfiguration().getClassLoaders(); + name = module.getId().toString(); + } + + @Override + public boolean test(Class aClass) { + URL classUrl = ClasspathHelper.forClass(aClass, classLoaders); + return classpaths.contains(classUrl); + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("name", name) + .toString(); + } + } +} diff --git a/engine/src/main/java/org/terasology/engine/core/module/ClasspathSupportingModuleLoader.java b/engine/src/main/java/org/terasology/engine/core/module/ClasspathSupportingModuleLoader.java deleted file mode 100644 index 650182f2584..00000000000 --- a/engine/src/main/java/org/terasology/engine/core/module/ClasspathSupportingModuleLoader.java +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2021 The Terasology Foundation -// SPDX-License-Identifier: Apache-2.0 - -package org.terasology.engine.core.module; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.terasology.module.ClasspathModule; -import org.terasology.module.Module; -import org.terasology.module.ModuleLoader; -import org.terasology.module.ModuleMetadata; -import org.terasology.module.ModuleMetadataJsonAdapter; - -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.MalformedURLException; -import java.net.URISyntaxException; -import java.net.URL; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.security.CodeSource; -import java.security.cert.Certificate; - - -public class ClasspathSupportingModuleLoader extends ModuleLoader { - private static final Logger logger = LoggerFactory.getLogger(ClasspathSupportingModuleLoader.class); - - boolean makeClasspathModules; - boolean lenient; - private final ModuleMetadataJsonAdapter metadataReader; - - public ClasspathSupportingModuleLoader(boolean makeClasspathModules, boolean lenient) { - this(new ModuleMetadataJsonAdapter(), makeClasspathModules, lenient); - } - - public ClasspathSupportingModuleLoader( - ModuleMetadataJsonAdapter metadataReader, - boolean makeClasspathModules, - boolean lenient) { - super(metadataReader); - this.metadataReader = metadataReader; - this.makeClasspathModules = makeClasspathModules; - this.lenient = lenient; - } - - @Override - public Module load(Path modulePath) throws IOException { - if (makeClasspathModules) { - return loadFromClasspath(modulePath); - } else { - return super.load(modulePath); - } - } - - private Module loadFromClasspath(Path modulePath) throws IOException { - Module module; - URL url = modulePath.toUri().toURL(); - ModuleMetadata metadata = readMetadata(url); - if (metadata == null) { - return null; // no metadata file at all, ModuleLoader skips without comment - } else if (null == metadata.getId() || metadata.getDisplayName().toString().isEmpty()) { - logger.warn("Found an archive with {} but missing id or display name. Skipping {}", - getModuleInfoPath(), url); - return null; - } - - CodeSource codeSource = new CodeSource(url, (Certificate[]) null); - try { - logger.debug("Creating module for {}", codeSource); - module = ClasspathModule.create(metadata, false, codeSource); - } catch (URISyntaxException e) { - throw new RuntimeException("URI syntax problems for: " + modulePath.toString(), e); - } - return module; - } - - ModuleMetadata readMetadata(URL moduleUrl) throws IOException { - URL metadataUrl; - ModuleMetadata metadata = null; - try { - if (moduleUrl.getProtocol().equals("jar")) { - metadataUrl = new URL(moduleUrl, "!/" + getModuleInfoPath()); - } else { - File file = Paths.get(moduleUrl.toURI()).toFile(); - if (lenient && !file.exists()) { - return null; - } else if (file.isDirectory()) { - metadataUrl = new URL(moduleUrl, getModuleInfoPath().toString()); - } else { - metadataUrl = new URL("jar", null, moduleUrl + "!/" + getModuleInfoPath()); - } - } - } catch (MalformedURLException | URISyntaxException e) { - throw new RuntimeException("Error making metadata URL for " + moduleUrl.toString(), e); - } - - try (InputStreamReader readme = new InputStreamReader(metadataUrl.openStream())) { - metadata = metadataReader.read(readme); - } catch (java.io.FileNotFoundException e) { - if (!lenient) { - throw e; - } - } - if (metadata == null && !lenient) { - throw new RuntimeException("Empty metadata from " + moduleUrl.toString()); - } - return metadata; - } - - public Module load(Class clazz) throws IOException { - URL url = clazz.getProtectionDomain().getCodeSource().getLocation(); - ModuleMetadata metadata = readMetadata(url); - try { - return ClasspathModule.create(metadata, false, clazz); - } catch (URISyntaxException e) { - throw new RuntimeException("while loading " + clazz, e); - } - } -} diff --git a/engine/src/main/java/org/terasology/engine/core/module/ExternalApiWhitelist.java b/engine/src/main/java/org/terasology/engine/core/module/ExternalApiWhitelist.java index 3cff4c6adfa..ee2d56547f6 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/ExternalApiWhitelist.java +++ b/engine/src/main/java/org/terasology/engine/core/module/ExternalApiWhitelist.java @@ -1,18 +1,5 @@ -/* - * Copyright 2016 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.core.module; @@ -175,6 +162,13 @@ public final class ExternalApiWhitelist { .add(java.io.DataOutputStream.class) .add(java.io.FilterOutputStream.class) .add(java.io.PipedOutputStream.class) + // terasology math + .add(org.terasology.math.TeraMath.class) + // gestalt module + .add(org.terasology.gestalt.naming.Name.class) + .add(org.terasology.persistence.typeHandling.StringRepresentationTypeHandler.class) + .add(org.terasology.persistence.typeHandling.SpecificTypeHandlerFactory.class) + .add(org.terasology.reflection.metadata.FieldMetadata.class) .build(); private ExternalApiWhitelist() { diff --git a/engine/src/main/java/org/terasology/engine/core/module/ExtraDataModuleExtension.java b/engine/src/main/java/org/terasology/engine/core/module/ExtraDataModuleExtension.java index 27b42e9e448..9a9349976ad 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/ExtraDataModuleExtension.java +++ b/engine/src/main/java/org/terasology/engine/core/module/ExtraDataModuleExtension.java @@ -15,7 +15,7 @@ */ package org.terasology.engine.core.module; -import org.terasology.module.Module; +import org.terasology.gestalt.module.Module; /** * A set of extra module extensions. diff --git a/engine/src/main/java/org/terasology/engine/core/module/ModuleContext.java b/engine/src/main/java/org/terasology/engine/core/module/ModuleContext.java index 07eec077c06..095d91aa1c2 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/ModuleContext.java +++ b/engine/src/main/java/org/terasology/engine/core/module/ModuleContext.java @@ -15,9 +15,9 @@ */ package org.terasology.engine.core.module; -import org.terasology.module.Module; -import org.terasology.naming.Name; import org.terasology.engine.registry.CoreRegistry; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.naming.Name; /** */ diff --git a/engine/src/main/java/org/terasology/engine/core/module/ModuleDownloadListGenerator.java b/engine/src/main/java/org/terasology/engine/core/module/ModuleDownloadListGenerator.java index 0083bd0a831..46d92ea92b5 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/ModuleDownloadListGenerator.java +++ b/engine/src/main/java/org/terasology/engine/core/module/ModuleDownloadListGenerator.java @@ -16,13 +16,13 @@ package org.terasology.engine.core.module; import org.terasology.engine.core.TerasologyConstants; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.module.ModuleRegistry; -import org.terasology.module.PathModule; -import org.terasology.module.ResolutionResult; -import org.terasology.naming.Name; -import org.terasology.naming.Version; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleRegistry; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; +import org.terasology.gestalt.module.resources.DirectoryFileSource; +import org.terasology.gestalt.naming.Name; +import org.terasology.gestalt.naming.Version; import java.util.Set; import java.util.stream.Collectors; @@ -63,7 +63,7 @@ private Set processResolutionResult(ResolutionResult resolutionResult) t * source. */ private boolean isSourceModule(Module module) { - return module instanceof PathModule; + return module.getResources() instanceof DirectoryFileSource; } private boolean isOnlineVersionNewer(Module localVersion, Module onlineVersion) { diff --git a/engine/src/main/java/org/terasology/engine/core/module/ModuleInputStream.java b/engine/src/main/java/org/terasology/engine/core/module/ModuleInputStream.java index d7dca353b3c..ebf08c196c3 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/ModuleInputStream.java +++ b/engine/src/main/java/org/terasology/engine/core/module/ModuleInputStream.java @@ -15,7 +15,7 @@ */ package org.terasology.engine.core.module; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.io.IOException; import java.io.InputStream; diff --git a/engine/src/main/java/org/terasology/engine/core/module/ModuleInstallManager.java b/engine/src/main/java/org/terasology/engine/core/module/ModuleInstallManager.java index 4e5a27aa174..a6a14b75508 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/ModuleInstallManager.java +++ b/engine/src/main/java/org/terasology/engine/core/module/ModuleInstallManager.java @@ -15,11 +15,11 @@ */ package org.terasology.engine.core.module; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.module.ModuleRegistry; -import org.terasology.naming.Name; import org.terasology.engine.utilities.download.MultiFileTransferProgressListener; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleRegistry; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.naming.Name; import java.util.Collection; import java.util.Collections; diff --git a/engine/src/main/java/org/terasology/engine/core/module/ModuleInstaller.java b/engine/src/main/java/org/terasology/engine/core/module/ModuleInstaller.java index c99d6e21df2..c0ff0396db6 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/ModuleInstaller.java +++ b/engine/src/main/java/org/terasology/engine/core/module/ModuleInstaller.java @@ -1,29 +1,14 @@ -/* - * Copyright 2017 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.core.module; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.engine.core.TerasologyConstants; import org.terasology.engine.core.paths.PathManager; -import org.terasology.module.Module; -import org.terasology.module.ModuleLoader; -import org.terasology.module.ModuleMetadata; import org.terasology.engine.utilities.download.MultiFileDownloader; import org.terasology.engine.utilities.download.MultiFileTransferProgressListener; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleMetadata; import java.io.IOException; import java.net.URI; @@ -58,12 +43,9 @@ public List call() throws Exception { List downloadedModulesPaths = downloader.call(); logger.info("Module download completed, loading the new modules..."); List newInstalledModules = new ArrayList<>(downloadedModulesPaths.size()); - ModuleLoader loader = new ModuleLoader(moduleManager.getModuleMetadataReader()); - loader.setModuleInfoPath(TerasologyConstants.MODULE_INFO_FILENAME); for (Path filePath : downloadedModulesPaths) { try { - Module module = loader.load(filePath); - moduleManager.getRegistry().add(module); + Module module = moduleManager.registerArchiveModule(filePath); newInstalledModules.add(module); } catch (IOException e) { logger.warn("Could not load module {}", filePath.getFileName(), e); @@ -75,7 +57,7 @@ public List call() throws Exception { private Map getDownloadUrls(Iterable modules) { Map result = new HashMap<>(); - for (Module module: modules) { + for (Module module : modules) { ModuleMetadata metadata = module.getMetadata(); String version = metadata.getVersion().toString(); String id = metadata.getId().toString(); diff --git a/engine/src/main/java/org/terasology/engine/core/module/ModuleListDownloader.java b/engine/src/main/java/org/terasology/engine/core/module/ModuleListDownloader.java index 9c3039000d6..7bf974fcd59 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/ModuleListDownloader.java +++ b/engine/src/main/java/org/terasology/engine/core/module/ModuleListDownloader.java @@ -16,18 +16,25 @@ package org.terasology.engine.core.module; -import com.google.gson.stream.JsonReader; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import org.reflections.Reflections; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.terasology.engine.core.TerasologyConstants; -import org.terasology.module.ModuleMetadata; -import org.terasology.module.ModuleMetadataJsonAdapter; -import org.terasology.module.ModuleRegistry; -import org.terasology.module.TableModuleRegistry; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleMetadata; +import org.terasology.gestalt.module.ModuleMetadataJsonAdapter; +import org.terasology.gestalt.module.ModuleRegistry; +import org.terasology.gestalt.module.TableModuleRegistry; +import org.terasology.gestalt.module.resources.EmptyFileSource; import java.io.IOException; import java.io.InputStreamReader; +import java.io.StringReader; import java.net.URL; +import java.util.Collections; import java.util.concurrent.Callable; /** @@ -40,6 +47,7 @@ public class ModuleListDownloader implements Callable { private final ModuleMetadataJsonAdapter metaReader = new ModuleMetadataJsonAdapter(); private final String serverAddress; + private final Gson gson = new Gson(); ModuleListDownloader(String serverAddress) { this.serverAddress = serverAddress; @@ -55,21 +63,20 @@ public ModuleRegistry call() throws IOException { TableModuleRegistry modules = new TableModuleRegistry(); URL url = new URL("http", serverAddress, "/modules/list/latest"); - try (JsonReader reader = new JsonReader(new InputStreamReader(url.openStream(), TerasologyConstants.CHARSET))) { + try (InputStreamReader reader = new InputStreamReader(url.openStream(), TerasologyConstants.CHARSET)) { logger.info("Parsing content .."); - reader.beginArray(); + JsonArray jsonArray = gson.fromJson(reader, JsonArray.class); + for (JsonElement jObject : jsonArray) { + String json = gson.toJson(jObject); - while (reader.hasNext()) { - ModuleMetadata meta = metaReader.read(reader); + ModuleMetadata meta = metaReader.read(new StringReader(json)); logger.debug("Read module {} - {}", meta.getId(), meta.getVersion()); - RemoteModule remoteModule = new RemoteModule(meta); - modules.add(remoteModule); + modules.add(new Module(meta, new EmptyFileSource(), Collections.emptyList(), new Reflections(), + (c) -> false)); } - reader.endArray(); - int count = modules.size(); logger.info(String.format("Retrieved %d %s", count, (count == 1) ? "entry" : "entries")); } diff --git a/engine/src/main/java/org/terasology/engine/core/module/ModuleManager.java b/engine/src/main/java/org/terasology/engine/core/module/ModuleManager.java index a4a7044557f..a026ab3a2f2 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/ModuleManager.java +++ b/engine/src/main/java/org/terasology/engine/core/module/ModuleManager.java @@ -4,99 +4,92 @@ import com.google.common.collect.Sets; import org.reflections.Reflections; -import org.reflections.serializers.Serializer; -import org.reflections.serializers.XmlSerializer; +import org.reflections.scanners.Scanner; +import org.reflections.util.ClasspathHelper; +import org.reflections.util.ConfigurationBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.Asset; import org.terasology.engine.config.Config; import org.terasology.engine.config.SystemConfig; import org.terasology.engine.core.TerasologyConstants; import org.terasology.engine.core.paths.PathManager; -import org.terasology.engine.utilities.Jvm; -import org.terasology.input.device.KeyboardDevice; -import org.terasology.module.ClasspathModule; -import org.terasology.module.DependencyInfo; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.ModuleLoader; -import org.terasology.module.ModuleMetadata; -import org.terasology.module.ModuleMetadataJsonAdapter; -import org.terasology.module.ModulePathScanner; -import org.terasology.module.ModuleRegistry; -import org.terasology.module.TableModuleRegistry; -import org.terasology.module.sandbox.APIScanner; -import org.terasology.module.sandbox.ModuleSecurityManager; -import org.terasology.module.sandbox.ModuleSecurityPolicy; -import org.terasology.module.sandbox.PermissionProvider; -import org.terasology.module.sandbox.PermissionProviderFactory; -import org.terasology.module.sandbox.StandardPermissionProviderFactory; -import org.terasology.module.sandbox.WarnOnlyProviderFactory; -import org.terasology.nui.UIWidget; -import org.terasology.reflection.ModuleTypeRegistry; -import org.terasology.reflection.TypeRegistry; - +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleFactory; +import org.terasology.gestalt.module.ModuleMetadataJsonAdapter; +import org.terasology.gestalt.module.ModuleMetadataLoader; +import org.terasology.gestalt.module.ModulePathScanner; +import org.terasology.gestalt.module.ModuleRegistry; +import org.terasology.gestalt.module.TableModuleRegistry; +import org.terasology.gestalt.module.dependencyresolution.DependencyInfo; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; +import org.terasology.gestalt.module.sandbox.APIScanner; +import org.terasology.gestalt.module.sandbox.ModuleSecurityManager; +import org.terasology.gestalt.module.sandbox.ModuleSecurityPolicy; +import org.terasology.gestalt.module.sandbox.PermissionProvider; +import org.terasology.gestalt.module.sandbox.PermissionProviderFactory; +import org.terasology.gestalt.module.sandbox.StandardPermissionProviderFactory; +import org.terasology.gestalt.module.sandbox.WarnOnlyProviderFactory; +import org.terasology.gestalt.naming.Name; + +import java.io.File; import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; import java.lang.reflect.ReflectPermission; -import java.net.URISyntaxException; -import java.net.URL; import java.nio.file.Path; -import java.nio.file.Paths; import java.security.Policy; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.Enumeration; +import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -import static com.google.common.base.Verify.verifyNotNull; - public class ModuleManager { - /** Set this environment variable to "true" to load all modules in the classpath by default. */ - public final static String LOAD_CLASSPATH_MODULES_ENV = "TERASOLOGY_LOAD_CLASSPATH_MODULES"; + /** Set this property to "true" to allow modules on the classpath. */ public final static String LOAD_CLASSPATH_MODULES_PROPERTY = "org.terasology.load_classpath_modules"; private static final Logger logger = LoggerFactory.getLogger(ModuleManager.class); private final StandardPermissionProviderFactory permissionProviderFactory = new StandardPermissionProviderFactory(); - private final PermissionProviderFactory wrappingPermissionProviderFactory = new WarnOnlyProviderFactory(permissionProviderFactory); + private final PermissionProviderFactory wrappingPermissionProviderFactory = + new WarnOnlyProviderFactory(permissionProviderFactory); private final ModuleRegistry registry; private ModuleEnvironment environment; private final ModuleMetadataJsonAdapter metadataReader; + private final ModuleFactory moduleFactory; private final ModuleInstallManager installManager; - private Module engineModule; + private final Module engineModule; public ModuleManager(String masterServerAddress) { this(masterServerAddress, Collections.emptyList()); } public ModuleManager(String masterServerAddress, List> classesOnClasspathsToAddToEngine) { - this(masterServerAddress, classesOnClasspathsToAddToEngine, null); - } - - public ModuleManager(String masterServerAddress, List> classesOnClasspathsToAddToEngine, Boolean loadModulesFromClasspath) { PathManager pathManager = PathManager.getInstance(); // get early so if it needs to initialize, it does it now metadataReader = newMetadataReader(); - engineModule = loadEngineModule(classesOnClasspathsToAddToEngine); + if (Boolean.getBoolean(LOAD_CLASSPATH_MODULES_PROPERTY)) { + moduleFactory = new ClasspathCompromisingModuleFactory(); + } else { + moduleFactory = new ModuleFactory(); + } + moduleFactory.setDefaultLibsSubpath("build/libs"); + + Map mmlm = moduleFactory.getModuleMetadataLoaderMap(); + mmlm.put(TerasologyConstants.MODULE_INFO_FILENAME.toString(), metadataReader); + mmlm.put("engine-module.txt", metadataReader); // FIXME: this should be *only* for engine-module. + // FIXME: …or maybe engine-module doesn't need a special filename anymore? registry = new TableModuleRegistry(); - registry.add(engineModule); - if (doLoadModulesFromClasspath(loadModulesFromClasspath)) { - loadModulesFromClassPath(); - } else { - logger.info("Not loading classpath modules."); - } + engineModule = loadEngineModule(classesOnClasspathsToAddToEngine); loadModulesFromApplicationPath(pathManager); - ensureModulesDependOnEngine(engineModule); + ensureModulesDependOnEngine(); setupSandbox(); loadEnvironment(Sets.newHashSet(engineModule), true); @@ -105,49 +98,60 @@ public ModuleManager(String masterServerAddress, List> classesOnClasspa /** * I wondered why this is important, and found MovingBlocks/Terasology#1450. - * It's not a worry that the engine module wouldn't be loaded without it. - * It's about ordering: some things run in an order derived from the dependency + * It's not a worry that the engine module wouldn't be loaded without it. + * It's about ordering: some things run in an order derived from the dependency * tree, and we want to make sure engine is at the root of it. - */ - private void ensureModulesDependOnEngine(Module engineModule) { + */ + private void ensureModulesDependOnEngine() { DependencyInfo engineDep = new DependencyInfo(); engineDep.setId(engineModule.getId()); engineDep.setMinVersion(engineModule.getVersion()); - engineDep.setMaxVersion(engineModule.getVersion().getNextPatchVersion()); - registry.stream().filter(mod -> mod != engineModule).forEach(mod -> mod.getMetadata().getDependencies().add(engineDep)); + HashSet engineModules = Sets.newHashSet(engineModule.getId()); + engineModules.addAll(engineModule.getMetadata().getDependencies().stream().map(DependencyInfo::getId).collect(Collectors.toList())); + + registry.stream() + .filter(mod -> !engineModules.contains(mod.getId())) + .forEach(mod -> mod.getMetadata().getDependencies().add(engineDep)); } private void loadModulesFromApplicationPath(PathManager pathManager) { - ModulePathScanner scanner = new ModulePathScanner(new ModuleLoader(metadataReader)); - scanner.getModuleLoader().setModuleInfoPath(TerasologyConstants.MODULE_INFO_FILENAME); - scanner.scan(registry, pathManager.getModulePaths()); + ModulePathScanner scanner = new ModulePathScanner(moduleFactory); + List paths = pathManager.getModulePaths().stream().map(Path::toFile).collect(Collectors.toList()); + scanner.scan(registry, paths); } private Module loadEngineModule(List> classesOnClasspathsToAddToEngine) { - Module engineModule; - try (Reader reader = new InputStreamReader(getClass().getResourceAsStream("/engine-module.txt"), TerasologyConstants.CHARSET)) { - ModuleMetadata metadata = metadataReader.read(reader); - List> additionalClassesList = new ArrayList<>(classesOnClasspathsToAddToEngine.size() + 2); - additionalClassesList.add(Module.class); // provide access to gestalt-module.jar - additionalClassesList.add(Asset.class); // provide access to gestalt-asset-core.jar - additionalClassesList.add(UIWidget.class); // provide access to nui.jar - additionalClassesList.add(TypeRegistry.class); // provide access to nui-reflect.jar - additionalClassesList.add(KeyboardDevice.class); // provide access to nui-input.jar - additionalClassesList.add(ModuleTypeRegistry.class); // provide access to nui-gestalt7.jar - additionalClassesList.addAll(classesOnClasspathsToAddToEngine); // provide access to any facade-provided classes - Class[] additionalClassesArray = new Class[additionalClassesList.size()]; - additionalClassesArray = additionalClassesList.toArray(additionalClassesArray); - engineModule = ClasspathModule.create(metadata, getClass(), additionalClassesArray); - } catch (IOException e) { - throw new RuntimeException("Failed to read engine metadata", e); - } catch (URISyntaxException e) { - throw new RuntimeException("Failed to convert engine library location to path", e); - } + Module packageModule = moduleFactory.createPackageModule("org.terasology.engine"); + + // We need to add reflections from our subsystems and other classes. + ConfigurationBuilder config = new ConfigurationBuilder(); + Reflections packageReflections = packageModule.getModuleManifest(); + Set scanners = packageReflections.getConfiguration().getScanners(); + config.setScanners(scanners.toArray(new Scanner[0])); - enrichReflectionsWithSubsystems(engineModule); + for (Class aClass : classesOnClasspathsToAddToEngine) { + config.addUrls(ClasspathHelper.forClass(aClass)); + } - return engineModule; + // TODO: is this using reflections.cache? + Reflections reflectionsWithSubsystems = new Reflections(config); + packageReflections.merge(reflectionsWithSubsystems); + + // We need the class predicate to include classes in subsystems and whatnot. We can't change it in an + // existing module, so make a new one based on the one from the moduleFactory. + Module engine = new Module( + packageModule.getMetadata(), + packageModule.getResources(), + Collections.emptyList(), + packageReflections, + packageModule.getClassPredicate().or(clazz -> + reflectionsWithSubsystems.getConfiguration() + .getUrls().contains(ClasspathHelper.forClass(clazz))) + ); + + registry.add(engine); + return engine; } public ModuleManager(Config config) { @@ -169,114 +173,14 @@ private ModuleMetadataJsonAdapter newMetadataReader() { return metadataJsonAdapter; } - boolean doLoadModulesFromClasspath(Boolean loadModulesFromClasspath) { - boolean env = Boolean.parseBoolean(System.getenv(LOAD_CLASSPATH_MODULES_ENV)); - boolean prop = Boolean.getBoolean(LOAD_CLASSPATH_MODULES_PROPERTY); - boolean useClasspath; - if (loadModulesFromClasspath != null) { - useClasspath = loadModulesFromClasspath; - } else { - useClasspath = env || prop; - } - logger.debug("Load modules from classpath? {} [arg: {}, env: {}, property: {}]", - useClasspath, - loadModulesFromClasspath, - System.getenv(LOAD_CLASSPATH_MODULES_ENV), - System.getProperty(LOAD_CLASSPATH_MODULES_PROPERTY)); - return useClasspath; - } - - /** - * Overrides modules in modules/ with those specified via -classpath in the JVM - */ - void loadModulesFromClassPath() { - logger.debug("loadModulesFromClassPath with classpath:"); - Jvm.logClasspath(logger); - - ModuleLoader loader = new ClasspathSupportingModuleLoader(metadataReader, true, true); - loader.setModuleInfoPath(TerasologyConstants.MODULE_INFO_FILENAME); - - List classPaths = Arrays.stream( - System.getProperty("java.class.path").split(System.getProperty("path.separator", ":")) - ).map(Paths::get).collect(Collectors.toList()); - - // I thought I'd make the ClasspathSupporting stuff in the shape of a ModuleLoader - // so I could use it with the existing ModulePathScanner, but no. The inputs to that - // are the _parent directories_ of what we have. - for (Path path : classPaths) { - attemptToLoadAsClasspathModule(loader, path); - } - } - - /** - * Attempt to load a module from the given path. - * - * Assumes that the path may or may not contain a Terasology module. Will add the module to - * {@link #registry} if successful. - * - * For troubleshooting failure cases, check for log messages from this package and from {@link ModuleLoader}. - * - * @param loader the module loader to use - * @param path the path to the jar or directory - */ - public void attemptToLoadAsClasspathModule(ModuleLoader loader, Path path) { - // The conditions here mirror those of org.terasology.module.ModulePathScanner.loadModule - Module module; - try { - module = loader.load(path); - } catch (IOException e) { - logger.warn("Failed to load module from classpath at {}", path, e); - return; - } - - if (module == null) { - return; - } - - boolean isNew = registry.add(module); - if (isNew) { - logger.info("Added new module: {} from {} on classpath", module, path.getFileName()); - } else { - logger.warn("Skipped duplicate module: {}-{} from {} on classpath", - module.getId(), module.getVersion(), path.getFileName()); - } - } - - /** - * Load a module from the location containing a class. - * - * Assumes that the location should contain a Terasology module. Will add the module to - * {@link #registry} and return the resulting module if successful. - * - * May throw IOException or RuntimeExceptions on failure. - * - * For troubleshooting failure cases, check for log messages from this package and from {@link ModuleLoader}. - * - * @param clazz a class in the module, see {@link ClasspathModule#create} - */ - public Module loadClasspathModule(Class clazz) throws IOException { - ClasspathSupportingModuleLoader loader = new ClasspathSupportingModuleLoader(metadataReader, true, false); - loader.setModuleInfoPath(TerasologyConstants.MODULE_INFO_FILENAME); - - Module module = verifyNotNull(loader.load(clazz), "Failed to load module from %s", clazz); - boolean isNew = registry.add(module); - if (isNew) { - logger.info("Added new module: {} from {} on classpath", module, module.getClasspaths()); - } else { - logger.warn("Skipped duplicate module: {}-{} from {} on classpath", - module.getId(), module.getVersion(), module.getClasspaths()); - } - return module; - } - private void setupSandbox() { ExternalApiWhitelist.CLASSES.stream().forEach(clazz -> permissionProviderFactory.getBasePermissionSet().addAPIClass(clazz)); ExternalApiWhitelist.PACKAGES.stream().forEach(packagee -> permissionProviderFactory.getBasePermissionSet().addAPIPackage(packagee)); - APIScanner apiScanner = new APIScannerTolerantOfAssetOnlyModules(permissionProviderFactory); - apiScanner.scan(registry); + APIScanner apiScanner = new APIScanner(permissionProviderFactory); + registry.stream().map(Module::getModuleManifest).forEach(apiScanner::scan); permissionProviderFactory.getBasePermissionSet().grantPermission("com.google.gson", ReflectPermission.class); permissionProviderFactory.getBasePermissionSet().grantPermission("com.google.gson.internal", ReflectPermission.class); @@ -285,6 +189,12 @@ private void setupSandbox() { System.setSecurityManager(new ModuleSecurityManager()); } + /** + * the registry this ModuleManager uses internally + * + * @deprecated Use {@link #resolveAndLoadEnvironment} if you need module dependency resolution. + */ + @Deprecated(/*since="4.4.0"*/) public ModuleRegistry getRegistry() { return registry; } @@ -297,15 +207,48 @@ public ModuleEnvironment getEnvironment() { return environment; } + /** Create and register a new module for this package. */ + public Module registerPackageModule(String packageName) { + Module module = moduleFactory.createPackageModule(packageName); + registry.add(module); + ensureModulesDependOnEngine(); + return module; + } + + /** Load and register a new module for this file. */ + @SuppressWarnings("UnusedReturnValue") + public Module registerArchiveModule(Path path) throws IOException { + Module module = moduleFactory.createArchiveModule(path.toFile()); + registry.add(module); + ensureModulesDependOnEngine(); + return module; + } + + public void resolveAndLoadEnvironment(Name... modules) { + resolveAndLoadEnvironment(Arrays.asList(modules)); + } + + public void resolveAndLoadEnvironment(Iterable modules) { + DependencyResolver resolver = new DependencyResolver(registry); + ResolutionResult result = resolver.resolve(modules); + + if (!result.isSuccess()) { + // TODO: worth its own exception class? + throw new RuntimeException("Failed to resolve dependencies for " + modules); + } + + loadEnvironment(result.getModules(), true); + } + public ModuleEnvironment loadEnvironment(Set modules, boolean asPrimary) { Set finalModules = Sets.newLinkedHashSet(modules); finalModules.add(engineModule); ModuleEnvironment newEnvironment; boolean permissiveSecurityEnabled = Boolean.parseBoolean(System.getProperty(SystemConfig.PERMISSIVE_SECURITY_ENABLED_PROPERTY)); if (permissiveSecurityEnabled) { - newEnvironment = new ModuleEnvironment(finalModules, wrappingPermissionProviderFactory, Collections.emptyList()); + newEnvironment = new ModuleEnvironment(finalModules, wrappingPermissionProviderFactory); } else { - newEnvironment = new ModuleEnvironment(finalModules, permissionProviderFactory, Collections.emptyList()); + newEnvironment = new ModuleEnvironment(finalModules, permissionProviderFactory); } if (asPrimary) { environment = newEnvironment; @@ -314,26 +257,15 @@ public ModuleEnvironment loadEnvironment(Set modules, boolean asPrimary) } public ModuleMetadataJsonAdapter getModuleMetadataReader() { + // FIXME: is this used anywhere? (MTE?) return metadataReader; } - private void enrichReflectionsWithSubsystems(Module engineModule) { - Serializer serializer = new XmlSerializer(); - try { - Enumeration urls = ModuleManager.class.getClassLoader().getResources("reflections.cache"); - while (urls.hasMoreElements()) { - URL url = urls.nextElement(); - if (url.getPath().contains("subsystem")) { - Reflections subsystemReflections = serializer.read(url.openStream()); - engineModule.getReflectionsFragment().merge(subsystemReflections); - } - } - } catch (IOException e) { - logger.error("Cannot enrich engine's reflections with subsystems"); - } + public ModuleFactory getModuleFactory() { + return moduleFactory; } public PermissionProvider getPermissionProvider(Module module) { - return permissionProviderFactory.createPermissionProviderFor(module); + return permissionProviderFactory.createPermissionProviderFor(module, module.getClassPredicate()); } } diff --git a/engine/src/main/java/org/terasology/engine/core/module/ModuleOutputStream.java b/engine/src/main/java/org/terasology/engine/core/module/ModuleOutputStream.java index 32647aa6194..a6354466850 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/ModuleOutputStream.java +++ b/engine/src/main/java/org/terasology/engine/core/module/ModuleOutputStream.java @@ -15,7 +15,7 @@ */ package org.terasology.engine.core.module; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.io.IOException; import java.io.OutputStream; diff --git a/engine/src/main/java/org/terasology/engine/core/module/RemoteModule.java b/engine/src/main/java/org/terasology/engine/core/module/RemoteModule.java deleted file mode 100644 index c57b6d3938d..00000000000 --- a/engine/src/main/java/org/terasology/engine/core/module/RemoteModule.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2017 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.terasology.engine.core.module; - -import java.net.URL; -import java.util.Collections; - -import org.terasology.module.BaseModule; -import org.terasology.module.ModuleMetadata; -import com.google.common.collect.ImmutableList; - -/** - * A module that lives in a remote location. - */ -public class RemoteModule extends BaseModule { - - RemoteModule(ModuleMetadata meta) { - super(Collections.emptyList(), meta); - } - - @Override - public ImmutableList getClasspaths() { - return ImmutableList.of(); - } - - @Override - public boolean isOnClasspath() { - return false; - } - - @Override - public boolean isCodeModule() { - return true; - } - -} diff --git a/engine/src/main/java/org/terasology/engine/core/module/RemoteModuleExtension.java b/engine/src/main/java/org/terasology/engine/core/module/RemoteModuleExtension.java index 956acf85e39..a53d55b82bd 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/RemoteModuleExtension.java +++ b/engine/src/main/java/org/terasology/engine/core/module/RemoteModuleExtension.java @@ -16,11 +16,10 @@ package org.terasology.engine.core.module; +import org.terasology.gestalt.module.ModuleMetadata; + import java.net.URL; import java.util.Date; - -import org.terasology.module.ModuleMetadata; - /** * A set of module extensions for remote modules. * NOTE: this is copy&paste from meta-server. diff --git a/engine/src/main/java/org/terasology/engine/core/module/SandboxFileManager.java b/engine/src/main/java/org/terasology/engine/core/module/SandboxFileManager.java index e2c666eb877..9652968dcfd 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/SandboxFileManager.java +++ b/engine/src/main/java/org/terasology/engine/core/module/SandboxFileManager.java @@ -18,7 +18,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.terasology.engine.core.paths.PathManager; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.io.FileInputStream; import java.io.FileOutputStream; diff --git a/engine/src/main/java/org/terasology/engine/core/module/StandardModuleExtension.java b/engine/src/main/java/org/terasology/engine/core/module/StandardModuleExtension.java index f52e4fb8672..be4f1c9a7d8 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/StandardModuleExtension.java +++ b/engine/src/main/java/org/terasology/engine/core/module/StandardModuleExtension.java @@ -16,13 +16,13 @@ package org.terasology.engine.core.module; -import java.util.EnumSet; -import java.util.Set; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.terasology.engine.core.SimpleUri; -import org.terasology.module.Module; +import org.terasology.gestalt.module.Module; + +import java.util.EnumSet; +import java.util.Set; /** * A set of standard module extensions. diff --git a/engine/src/main/java/org/terasology/engine/core/module/rendering/RenderingModuleRegistry.java b/engine/src/main/java/org/terasology/engine/core/module/rendering/RenderingModuleRegistry.java index ba8acab739d..5045c94c31f 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/rendering/RenderingModuleRegistry.java +++ b/engine/src/main/java/org/terasology/engine/core/module/rendering/RenderingModuleRegistry.java @@ -16,10 +16,10 @@ package org.terasology.engine.core.module.rendering; import org.terasology.engine.context.Context; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.sandbox.API; -import org.terasology.naming.Name; import org.terasology.engine.rendering.dag.ModuleRendering; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; import javax.annotation.Nullable; import java.lang.reflect.Constructor; diff --git a/engine/src/main/java/org/terasology/engine/core/module/rendering/package-info.java b/engine/src/main/java/org/terasology/engine/core/module/rendering/package-info.java index 4cd4204a215..7dfcd1db390 100644 --- a/engine/src/main/java/org/terasology/engine/core/module/rendering/package-info.java +++ b/engine/src/main/java/org/terasology/engine/core/module/rendering/package-info.java @@ -17,4 +17,4 @@ @API package org.terasology.engine.core.module.rendering; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/DisplayDevice.java b/engine/src/main/java/org/terasology/engine/core/subsystem/DisplayDevice.java index 3f267b7d14a..b4522d5abf7 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/DisplayDevice.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/DisplayDevice.java @@ -15,9 +15,9 @@ */ package org.terasology.engine.core.subsystem; -import org.terasology.module.sandbox.API; import org.terasology.engine.rendering.nui.layers.mainMenu.videoSettings.DisplayModeSetting; import org.terasology.engine.utilities.subscribables.Subscribable; +import org.terasology.gestalt.module.sandbox.API; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/EngineSubsystem.java b/engine/src/main/java/org/terasology/engine/core/subsystem/EngineSubsystem.java index a7ae6061ebf..5c4aaade469 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/EngineSubsystem.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/EngineSubsystem.java @@ -15,11 +15,11 @@ */ package org.terasology.engine.core.subsystem; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.context.Context; import org.terasology.engine.core.ComponentSystemManager; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.modes.GameState; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; public interface EngineSubsystem { diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/common/ConfigurationSubsystem.java b/engine/src/main/java/org/terasology/engine/core/subsystem/common/ConfigurationSubsystem.java index 3e30bee0672..292571a5a46 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/common/ConfigurationSubsystem.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/common/ConfigurationSubsystem.java @@ -7,13 +7,13 @@ import com.google.gson.GsonBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.engine.config.flexible.AutoConfigTypeHandlerFactory; import org.terasology.engine.config.Config; import org.terasology.engine.config.facade.BindsConfiguration; import org.terasology.engine.config.facade.BindsConfigurationImpl; import org.terasology.engine.config.facade.InputDeviceConfiguration; import org.terasology.engine.config.facade.InputDeviceConfigurationImpl; import org.terasology.engine.config.flexible.AutoConfigManager; +import org.terasology.engine.config.flexible.AutoConfigTypeHandlerFactory; import org.terasology.engine.context.Context; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.TerasologyConstants; diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/common/ThreadManager.java b/engine/src/main/java/org/terasology/engine/core/subsystem/common/ThreadManager.java index 381fdf40789..842a5a725c4 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/common/ThreadManager.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/common/ThreadManager.java @@ -15,7 +15,7 @@ */ package org.terasology.engine.core.subsystem.common; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; @API @FunctionalInterface diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/common/hibernation/HibernationManager.java b/engine/src/main/java/org/terasology/engine/core/subsystem/common/hibernation/HibernationManager.java index ef0bd9bcb10..7feacafb514 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/common/hibernation/HibernationManager.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/common/hibernation/HibernationManager.java @@ -15,7 +15,7 @@ */ package org.terasology.engine.core.subsystem.common.hibernation; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/config/BindsManager.java b/engine/src/main/java/org/terasology/engine/core/subsystem/config/BindsManager.java index 92317260581..85dd911115a 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/config/BindsManager.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/config/BindsManager.java @@ -7,24 +7,24 @@ import org.terasology.engine.input.BindAxisEvent; import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.BindableButton; -import org.terasology.input.ControllerInput; import org.terasology.engine.input.DefaultBinding; -import org.terasology.input.Input; -import org.terasology.input.Keyboard.KeyId; -import org.terasology.input.MouseInput; import org.terasology.engine.input.RegisterBindAxis; import org.terasology.engine.input.RegisterBindButton; import org.terasology.engine.input.RegisterRealBindAxis; import org.terasology.engine.input.internal.AbstractBindableAxis; import org.terasology.engine.input.internal.BindableRealAxis; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.input.ControllerInput; +import org.terasology.input.Input; +import org.terasology.input.Keyboard.KeyId; +import org.terasology.input.MouseInput; import java.util.List; import java.util.Map; /** * Manages all input bindings from the {@link ModuleEnvironment}. - * The manager handles: + * The manager handles: *

    *
  • Subclasses of {@link BindButtonEvent}, annotated with {@link RegisterBindButton}.
  • *
  • Subclasses of {@link BindAxisEvent}, annotated with {@link RegisterBindAxis} or {@link RegisterRealBindAxis}.
  • @@ -33,7 +33,7 @@ public interface BindsManager { /** - * The actual binds config. This reflects the current status from {@link #updateDefaultBinds(Context)} + * The actual binds config. This reflects the current status from {@link #updateDefaultBinds(Context)} * and all further modifications like modifications in the user input settings. * @return */ @@ -41,18 +41,18 @@ public interface BindsManager { /** * The default bindings. This reflects the current status from {@link #updateDefaultBinds(Context)}. - * @return Returns the default bindings. Changes to this config modify the actual instance + * @return Returns the default bindings. Changes to this config modify the actual instance * but become invalid the next time {@link #updateConfigWithDefaultBinds()} is called. */ BindsConfig getDefaultBindsConfig(); /** * Updates the bindings with their defaults from the current {@link ModuleEnvironment}. - * After this call {@link #getDefaultBindsConfig()} contains all values for events with + * After this call {@link #getDefaultBindsConfig()} contains all values for events with * {@link RegisterBindButton}, {@link RegisterBindAxis} and {@link RegisterRealBindAxis} which contain one ore more {@link DefaultBinding}. - * + * * {@link #getBindsConfig()} will only be enhanced with missing values. - * + * */ void updateConfigWithDefaultBinds(); diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/config/BindsSubsystem.java b/engine/src/main/java/org/terasology/engine/core/subsystem/config/BindsSubsystem.java index 9891d153314..1b73eba8515 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/config/BindsSubsystem.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/config/BindsSubsystem.java @@ -30,11 +30,7 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.BindableAxis; import org.terasology.engine.input.BindableButton; -import org.terasology.input.ControllerInput; import org.terasology.engine.input.DefaultBinding; -import org.terasology.input.Input; -import org.terasology.input.InputType; -import org.terasology.input.MouseInput; import org.terasology.engine.input.RegisterBindAxis; import org.terasology.engine.input.RegisterBindButton; import org.terasology.engine.input.RegisterRealBindAxis; @@ -44,11 +40,15 @@ import org.terasology.engine.input.internal.BindableAxisImpl; import org.terasology.engine.input.internal.BindableButtonImpl; import org.terasology.engine.input.internal.BindableRealAxis; -import org.terasology.module.DependencyResolver; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.ResolutionResult; -import org.terasology.module.predicates.FromModule; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; +import org.terasology.gestalt.module.predicates.FromModule; +import org.terasology.gestalt.naming.Name; +import org.terasology.input.ControllerInput; +import org.terasology.input.Input; +import org.terasology.input.InputType; +import org.terasology.input.MouseInput; import java.lang.annotation.Annotation; import java.util.Collection; @@ -149,16 +149,14 @@ private void updateDefaultBinds(Context passedContext, BindsConfiguration config ModuleManager moduleManager = passedContext.get(ModuleManager.class); DependencyResolver resolver = new DependencyResolver(moduleManager.getRegistry()); for (Name moduleId : moduleManager.getRegistry().getModuleIds()) { - if (moduleManager.getRegistry().getLatestModuleVersion(moduleId).isCodeModule()) { - ResolutionResult result = resolver.resolve(moduleId); - if (result.isSuccess()) { - try (ModuleEnvironment environment = moduleManager.loadEnvironment(result.getModules(), false)) { - FromModule filter = new FromModule(environment, moduleId); - Iterable> buttons = environment.getTypesAnnotatedWith(RegisterBindButton.class, filter); - Iterable> axes = environment.getTypesAnnotatedWith(RegisterRealBindAxis.class, filter); - addButtonDefaultsFor(moduleId, buttons, config); - addAxisDefaultsFor(moduleId, axes, config); - } + ResolutionResult result = resolver.resolve(moduleId); + if (result.isSuccess()) { + try (ModuleEnvironment environment = moduleManager.loadEnvironment(result.getModules(), false)) { + FromModule filter = new FromModule(environment, moduleId); + Iterable> buttons = environment.getTypesAnnotatedWith(RegisterBindButton.class, filter); + Iterable> axes = environment.getTypesAnnotatedWith(RegisterRealBindAxis.class, filter); + addButtonDefaultsFor(moduleId, buttons, config); + addAxisDefaultsFor(moduleId, axes, config); } } } diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/HeadlessAudio.java b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/HeadlessAudio.java index 335cf097f7a..4896bbf7153 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/HeadlessAudio.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/HeadlessAudio.java @@ -1,21 +1,7 @@ -/* - * Copyright 2014 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.core.subsystem.headless; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.audio.AudioManager; import org.terasology.engine.audio.StaticSound; import org.terasology.engine.audio.StreamingSound; @@ -24,6 +10,7 @@ import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.modes.GameState; import org.terasology.engine.core.subsystem.EngineSubsystem; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; public class HeadlessAudio implements EngineSubsystem { @@ -41,8 +28,8 @@ public void initialise(GameEngine engine, Context context) { @Override public void registerCoreAssetTypes(ModuleAwareAssetTypeManager assetTypeManager) { - assetTypeManager.registerCoreAssetType(StaticSound.class, audioManager.getStaticSoundFactory(), "sounds"); - assetTypeManager.registerCoreAssetType(StreamingSound.class, audioManager.getStreamingSoundFactory(), "music"); + assetTypeManager.createAssetType(StaticSound.class, audioManager.getStaticSoundFactory(), "sounds"); + assetTypeManager.createAssetType(StreamingSound.class, audioManager.getStreamingSoundFactory(), "music"); } @Override diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/HeadlessGraphics.java b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/HeadlessGraphics.java index dcaea342919..f410b900085 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/HeadlessGraphics.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/HeadlessGraphics.java @@ -15,8 +15,6 @@ */ package org.terasology.engine.core.subsystem.headless; -import org.terasology.assets.AssetFactory; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.context.Context; import org.terasology.engine.core.subsystem.DisplayDevice; import org.terasology.engine.core.subsystem.EngineSubsystem; @@ -32,28 +30,20 @@ import org.terasology.engine.core.subsystem.headless.renderer.ShaderManagerHeadless; import org.terasology.engine.rendering.ShaderManager; import org.terasology.engine.rendering.assets.animation.MeshAnimation; -import org.terasology.engine.rendering.assets.animation.MeshAnimationBundle; -import org.terasology.engine.rendering.assets.animation.MeshAnimationBundleData; -import org.terasology.engine.rendering.assets.animation.MeshAnimationData; import org.terasology.engine.rendering.assets.animation.MeshAnimationImpl; import org.terasology.engine.rendering.assets.atlas.Atlas; -import org.terasology.engine.rendering.assets.atlas.AtlasData; import org.terasology.engine.rendering.assets.font.Font; -import org.terasology.engine.rendering.assets.font.FontData; import org.terasology.engine.rendering.assets.font.FontImpl; import org.terasology.engine.rendering.assets.material.Material; -import org.terasology.engine.rendering.assets.material.MaterialData; import org.terasology.engine.rendering.assets.mesh.Mesh; -import org.terasology.engine.rendering.assets.mesh.MeshData; import org.terasology.engine.rendering.assets.shader.Shader; -import org.terasology.engine.rendering.assets.shader.ShaderData; import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMesh; -import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMeshData; import org.terasology.engine.rendering.assets.texture.PNGTextureFormat; import org.terasology.engine.rendering.assets.texture.Texture; import org.terasology.engine.rendering.assets.texture.TextureData; import org.terasology.engine.rendering.assets.texture.subtexture.Subtexture; -import org.terasology.engine.rendering.assets.texture.subtexture.SubtextureData; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; import org.terasology.nui.canvas.CanvasRenderer; public class HeadlessGraphics implements EngineSubsystem { @@ -65,18 +55,23 @@ public String getName() { @Override public void registerCoreAssetTypes(ModuleAwareAssetTypeManager assetTypeManager) { - assetTypeManager.registerCoreAssetType(Font.class, (AssetFactory) FontImpl::new, "fonts"); - assetTypeManager.registerCoreAssetType(Texture.class, (AssetFactory) HeadlessTexture::new, "textures", "fonts"); - assetTypeManager.registerCoreFormat(Texture.class, new PNGTextureFormat(Texture.FilterMode.NEAREST, path -> path.getName(2).toString().equals("textures"))); - assetTypeManager.registerCoreFormat(Texture.class, new PNGTextureFormat(Texture.FilterMode.LINEAR, path -> path.getName(2).toString().equals("fonts"))); - assetTypeManager.registerCoreAssetType(Shader.class, (AssetFactory) HeadlessShader::new, "shaders"); - assetTypeManager.registerCoreAssetType(Material.class, (AssetFactory) HeadlessMaterial::new, "materials"); - assetTypeManager.registerCoreAssetType(Mesh.class, (AssetFactory) HeadlessMesh::new, "mesh"); - assetTypeManager.registerCoreAssetType(SkeletalMesh.class, (AssetFactory) HeadlessSkeletalMesh::new, "skeletalMesh"); - assetTypeManager.registerCoreAssetType(MeshAnimation.class, (AssetFactory) MeshAnimationImpl::new, "animations", "skeletalMesh"); - assetTypeManager.registerCoreAssetType(MeshAnimationBundle.class, (AssetFactory) MeshAnimationBundle::new, "skeletalMesh", "animations"); - assetTypeManager.registerCoreAssetType(Atlas.class, (AssetFactory) Atlas::new, "atlas"); - assetTypeManager.registerCoreAssetType(Subtexture.class, (AssetFactory) Subtexture::new); + assetTypeManager.createAssetType(Font.class, FontImpl::new, "fonts"); + AssetType texture = assetTypeManager.createAssetType(Texture.class, + (urn, assetType, data) -> new HeadlessTexture(urn, assetType, data, new HeadlessTexture.DisposalAction()), "textures", "fonts"); + assetTypeManager.getAssetFileDataProducer(texture) + .addAssetFormat(new PNGTextureFormat(Texture.FilterMode.NEAREST, + path -> path.getPath().get(1).equals("textures"))); + assetTypeManager.getAssetFileDataProducer(texture) + .addAssetFormat(new PNGTextureFormat(Texture.FilterMode.LINEAR, path -> path.getPath().get(1).equals( + "fonts"))); + assetTypeManager.createAssetType(Shader.class, HeadlessShader::new, "shaders"); + assetTypeManager.createAssetType(Material.class, HeadlessMaterial::new, "materials"); + assetTypeManager.createAssetType(Mesh.class, HeadlessMesh::new, "mesh"); + assetTypeManager.createAssetType(SkeletalMesh.class, HeadlessSkeletalMesh::new, "skeletalMesh"); + assetTypeManager.createAssetType(MeshAnimation.class, MeshAnimationImpl::new, "animations"); + assetTypeManager.createAssetType(Atlas.class, Atlas::new, "atlas"); + assetTypeManager.createAssetType(Subtexture.class, Subtexture::new); + } @Override diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessMaterial.java b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessMaterial.java index cd5fa975393..af5bcc529c9 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessMaterial.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessMaterial.java @@ -17,12 +17,12 @@ import org.joml.Matrix3fc; import org.joml.Matrix4fc; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.rendering.assets.material.BaseMaterial; import org.terasology.engine.rendering.assets.material.MaterialData; import org.terasology.engine.rendering.assets.shader.ShaderProgramFeature; import org.terasology.engine.rendering.assets.texture.Texture; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import java.nio.FloatBuffer; diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessMesh.java b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessMesh.java index 70ea03fae65..cb4029ea6c9 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessMesh.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessMesh.java @@ -16,12 +16,12 @@ package org.terasology.engine.core.subsystem.headless.assets; import gnu.trove.list.TFloatList; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; -import org.terasology.joml.geom.AABBf; -import org.terasology.joml.geom.AABBfc; import org.terasology.engine.rendering.assets.mesh.Mesh; import org.terasology.engine.rendering.assets.mesh.MeshData; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.joml.geom.AABBf; +import org.terasology.joml.geom.AABBfc; public class HeadlessMesh extends Mesh { diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessShader.java b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessShader.java index 85a286b785d..805de17da67 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessShader.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessShader.java @@ -15,11 +15,11 @@ */ package org.terasology.engine.core.subsystem.headless.assets; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.rendering.assets.shader.Shader; import org.terasology.engine.rendering.assets.shader.ShaderData; import org.terasology.engine.rendering.assets.shader.ShaderParameterMetadata; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import java.util.Collections; diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessSkeletalMesh.java b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessSkeletalMesh.java index e86a4d22524..f6588359421 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessSkeletalMesh.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessSkeletalMesh.java @@ -15,13 +15,13 @@ */ package org.terasology.engine.core.subsystem.headless.assets; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; -import org.terasology.joml.geom.AABBf; import org.terasology.engine.rendering.assets.skeletalmesh.Bone; import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMesh; import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMeshData; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.joml.geom.AABBf; import java.util.Collection; import java.util.Optional; diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessTexture.java b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessTexture.java index 1ca4d69110f..455d4ce3631 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessTexture.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/assets/HeadlessTexture.java @@ -17,12 +17,13 @@ import com.google.common.collect.Lists; import org.joml.Vector2i; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; -import org.terasology.joml.geom.Rectanglef; -import org.terasology.joml.geom.Rectanglei; import org.terasology.engine.rendering.assets.texture.Texture; import org.terasology.engine.rendering.assets.texture.TextureData; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.joml.geom.Rectanglef; +import org.terasology.joml.geom.Rectanglei; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; @@ -35,14 +36,18 @@ public class HeadlessTexture extends Texture { private int id; private final DisposalAction disposalAction; - public HeadlessTexture(ResourceUrn urn, AssetType assetType, TextureData data) { - super(urn, assetType); - disposalAction = new DisposalAction(); - getDisposalHook().setDisposeAction(disposalAction); + public HeadlessTexture(ResourceUrn urn, AssetType assetType, TextureData data, + DisposalAction disposableResource) { + super(urn, assetType, disposableResource); + disposalAction = disposableResource; reload(data); id = ID_COUNTER.getAndIncrement(); } + public static HeadlessTexture create(ResourceUrn urn, AssetType assetType, TextureData data) { + return new HeadlessTexture(urn, assetType, data, new DisposalAction()); + } + @Override public int getId() { return id; @@ -123,22 +128,22 @@ public Rectanglei getPixelRegion() { } @Override - public synchronized void subscribeToDisposal(Runnable subscriber) { + public synchronized void subscribeToDisposal(DisposableResource subscriber) { disposalAction.disposalListeners.add(subscriber); } @Override - public synchronized void unsubscribeToDisposal(Runnable subscriber) { + public synchronized void unsubscribeToDisposal(DisposableResource subscriber) { disposalAction.disposalListeners.remove(subscriber); } - private static class DisposalAction implements Runnable { + public static class DisposalAction implements DisposableResource { - private final List disposalListeners = Lists.newArrayList(); + private final List disposalListeners = Lists.newArrayList(); @Override - public void run() { - disposalListeners.forEach(java.lang.Runnable::run); + public void close() { + disposalListeners.forEach(DisposableResource::close); } } } diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/mode/StateHeadlessSetup.java b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/mode/StateHeadlessSetup.java index 8039191d184..5d96deac32e 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/mode/StateHeadlessSetup.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/mode/StateHeadlessSetup.java @@ -40,21 +40,21 @@ import org.terasology.engine.logic.console.ConsoleSystem; import org.terasology.engine.logic.console.commands.CoreCommands; import org.terasology.engine.logic.players.LocalPlayer; -import org.terasology.module.Module; -import org.terasology.naming.Name; import org.terasology.engine.network.ClientComponent; import org.terasology.engine.network.NetworkMode; import org.terasology.engine.recording.DirectionAndOriginPosRecorderList; import org.terasology.engine.recording.RecordAndReplayCurrentStatus; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.rendering.nui.NUIManager; -import org.terasology.nui.canvas.CanvasRenderer; import org.terasology.engine.rendering.nui.internal.NUIManagerInternal; import org.terasology.engine.rendering.nui.internal.TerasologyCanvasRenderer; import org.terasology.engine.rendering.nui.layers.mainMenu.savedGames.GameInfo; import org.terasology.engine.rendering.nui.layers.mainMenu.savedGames.GameProvider; import org.terasology.engine.world.internal.WorldInfo; import org.terasology.engine.world.time.WorldTime; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.naming.Name; +import org.terasology.nui.canvas.CanvasRenderer; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/renderer/HeadlessCanvasRenderer.java b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/renderer/HeadlessCanvasRenderer.java index 2c3d6d2c919..fe712cd6ba4 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/headless/renderer/HeadlessCanvasRenderer.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/headless/renderer/HeadlessCanvasRenderer.java @@ -4,11 +4,15 @@ package org.terasology.engine.core.subsystem.headless.renderer; import org.joml.Quaternionfc; -import org.terasology.joml.geom.Rectanglei; import org.joml.Vector2i; import org.joml.Vector2ic; import org.joml.Vector3fc; -import org.terasology.assets.ResourceUrn; +import org.terasology.engine.rendering.assets.material.Material; +import org.terasology.engine.rendering.assets.mesh.Mesh; +import org.terasology.engine.rendering.nui.internal.TerasologyCanvasRenderer; +import org.terasology.engine.rendering.opengl.FrameBufferObject; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.joml.geom.Rectanglei; import org.terasology.nui.Border; import org.terasology.nui.Colorc; import org.terasology.nui.HorizontalAlign; @@ -16,10 +20,6 @@ import org.terasology.nui.UITextureRegion; import org.terasology.nui.VerticalAlign; import org.terasology.nui.asset.font.Font; -import org.terasology.engine.rendering.assets.material.Material; -import org.terasology.engine.rendering.assets.mesh.Mesh; -import org.terasology.engine.rendering.nui.internal.TerasologyCanvasRenderer; -import org.terasology.engine.rendering.opengl.FrameBufferObject; public class HeadlessCanvasRenderer implements TerasologyCanvasRenderer { diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglAudio.java b/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglAudio.java index 2d4750dec92..1fc95ad64bb 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglAudio.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglAudio.java @@ -1,23 +1,9 @@ -/* - * Copyright 2014 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.core.subsystem.lwjgl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.audio.AudioManager; import org.terasology.engine.audio.StaticSound; import org.terasology.engine.audio.StreamingSound; @@ -28,6 +14,7 @@ import org.terasology.engine.context.Context; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.modes.GameState; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; public class LwjglAudio extends BaseLwjglSubsystem { @@ -53,8 +40,8 @@ public void initialise(GameEngine engine, Context rootContext) { @Override public void registerCoreAssetTypes(ModuleAwareAssetTypeManager assetTypeManager) { - assetTypeManager.registerCoreAssetType(StaticSound.class, audioManager.getStaticSoundFactory(), "sounds"); - assetTypeManager.registerCoreAssetType(StreamingSound.class, audioManager.getStreamingSoundFactory(), "music"); + assetTypeManager.createAssetType(StaticSound.class, audioManager.getStaticSoundFactory(), "sounds"); + assetTypeManager.createAssetType(StreamingSound.class, audioManager.getStreamingSoundFactory(), "music"); } @Override diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglGraphics.java b/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglGraphics.java index 1f1237f9a22..fe3f64d51db 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglGraphics.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglGraphics.java @@ -1,18 +1,5 @@ -/* - * Copyright 2017 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.core.subsystem.lwjgl; import org.lwjgl.glfw.GLFW; @@ -22,17 +9,17 @@ import org.lwjgl.system.MemoryUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.config.Config; import org.terasology.engine.config.RenderingConfig; import org.terasology.engine.context.Context; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.modes.GameState; import org.terasology.engine.core.subsystem.DisplayDevice; -import org.terasology.nui.canvas.CanvasRenderer; import org.terasology.engine.rendering.ShaderManager; import org.terasology.engine.rendering.ShaderManagerLwjgl; import org.terasology.engine.rendering.nui.internal.LwjglCanvasRenderer; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.nui.canvas.CanvasRenderer; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; @@ -158,7 +145,7 @@ private void initWindow() { } try { - String root = "org/terasology/icons/"; + String root = "org/terasology/engine/icons/"; ClassLoader classLoader = getClass().getClassLoader(); BufferedImage icon16 = ImageIO.read(classLoader.getResourceAsStream(root + "gooey_sweet_16.png")); diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglGraphicsManager.java b/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglGraphicsManager.java index 423c799c2f7..062a96d2b77 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglGraphicsManager.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglGraphicsManager.java @@ -19,39 +19,32 @@ import com.google.common.collect.Queues; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; -import org.terasology.assets.AssetFactory; -import org.terasology.assets.module.ModuleAssetDataProducer; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.context.Context; import org.terasology.engine.core.GameThread; import org.terasology.engine.core.subsystem.DisplayDeviceInfo; import org.terasology.engine.core.subsystem.RenderingSubsystemFactory; import org.terasology.engine.rendering.assets.animation.MeshAnimation; import org.terasology.engine.rendering.assets.animation.MeshAnimationBundle; -import org.terasology.engine.rendering.assets.animation.MeshAnimationBundleData; import org.terasology.engine.rendering.assets.animation.MeshAnimationImpl; import org.terasology.engine.rendering.assets.atlas.Atlas; import org.terasology.engine.rendering.assets.font.Font; -import org.terasology.engine.rendering.assets.font.FontData; import org.terasology.engine.rendering.assets.font.FontImpl; import org.terasology.engine.rendering.assets.material.Material; -import org.terasology.engine.rendering.assets.material.MaterialData; import org.terasology.engine.rendering.assets.mesh.Mesh; -import org.terasology.engine.rendering.assets.mesh.MeshData; import org.terasology.engine.rendering.assets.shader.Shader; -import org.terasology.engine.rendering.assets.shader.ShaderData; import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMesh; -import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMeshData; import org.terasology.engine.rendering.assets.texture.PNGTextureFormat; import org.terasology.engine.rendering.assets.texture.Texture; import org.terasology.engine.rendering.assets.texture.TextureData; import org.terasology.engine.rendering.assets.texture.subtexture.Subtexture; -import org.terasology.engine.rendering.assets.texture.subtexture.SubtextureData; import org.terasology.engine.rendering.opengl.GLSLMaterial; import org.terasology.engine.rendering.opengl.GLSLShader; import org.terasology.engine.rendering.opengl.OpenGLMesh; import org.terasology.engine.rendering.opengl.OpenGLSkeletalMesh; import org.terasology.engine.rendering.opengl.OpenGLTexture; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.module.ModuleAssetScanner; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; import java.nio.ByteBuffer; import java.util.List; @@ -81,50 +74,43 @@ public void setThreadMode(ThreadMode threadMode) { public void registerCoreAssetTypes(ModuleAwareAssetTypeManager assetTypeManager) { // cast lambdas explicitly to avoid inconsistent compiler behavior wrt. type inference - assetTypeManager.registerCoreAssetType(Font.class, - (AssetFactory) FontImpl::new, "fonts"); - assetTypeManager.registerCoreAssetType(Texture.class, (AssetFactory) - (urn, assetType, data) -> (new OpenGLTexture(urn, assetType, data, this)), "textures", "fonts"); - assetTypeManager.registerCoreFormat(Texture.class, + assetTypeManager.createAssetType(Font.class, + FontImpl::new, "fonts"); + AssetType texture = assetTypeManager.createAssetType(Texture.class, + (urn, assetType, data) -> (OpenGLTexture.create(urn, assetType, data, this)), "textures", "fonts"); + + assetTypeManager.getAssetFileDataProducer(texture).addAssetFormat( new PNGTextureFormat(Texture.FilterMode.NEAREST, path -> { - if (path.getName(1).toString().equals(ModuleAssetDataProducer.OVERRIDE_FOLDER)) { - return path.getName(3).toString().equals("textures"); + if (path.getPath().get(0).equals(ModuleAssetScanner.OVERRIDE_FOLDER)) { + return path.getPath().get(2).equals("textures"); } else { - return path.getName(2).toString().equals("textures"); + return path.getPath().get(1).equals("textures"); } })); - assetTypeManager.registerCoreFormat(Texture.class, + assetTypeManager.getAssetFileDataProducer(texture).addAssetFormat( new PNGTextureFormat(Texture.FilterMode.LINEAR, path -> { - if (path.getName(1).toString().equals(ModuleAssetDataProducer.OVERRIDE_FOLDER)) { - return path.getName(3).toString().equals("fonts"); + if (path.getPath().get(0).equals(ModuleAssetScanner.OVERRIDE_FOLDER)) { + return path.getPath().get(2).equals("fonts"); } else { - return path.getName(2).toString().equals("fonts"); + return path.getPath().get(1).equals("fonts"); } })); - assetTypeManager.registerCoreAssetType(Shader.class, - (AssetFactory) (urn, assetType, data) -> - new GLSLShader(urn, assetType, data, this), - "shaders"); - assetTypeManager.registerCoreAssetType(Material.class, - (AssetFactory) (urn, assetType, data) -> - new GLSLMaterial(urn, assetType, data, this), + assetTypeManager.createAssetType(Shader.class, (urn, assetType, data) -> GLSLShader.create(urn, assetType, data, this), "shaders"); + assetTypeManager.createAssetType(Material.class, (urn, assetType, data) -> + GLSLMaterial.create(urn, this, assetType, data), "materials"); - assetTypeManager.registerCoreAssetType(Mesh.class, (AssetFactory) - (urn, assetType, data) -> - new OpenGLMesh(urn, assetType, data, this), + assetTypeManager.createAssetType(Mesh.class, (urn, assetType, data) -> OpenGLMesh.create(urn, assetType, data, this), "mesh"); - assetTypeManager.registerCoreAssetType(SkeletalMesh.class, (AssetFactory) - (urn, assetType, data) -> - new OpenGLSkeletalMesh(urn, assetType, data, this), + assetTypeManager.createAssetType(SkeletalMesh.class, + (urn, assetType, data) -> + OpenGLSkeletalMesh.create(urn, assetType, data, this), "skeletalMesh"); - assetTypeManager.registerCoreAssetType(MeshAnimation.class, MeshAnimationImpl::new, + assetTypeManager.createAssetType(MeshAnimation.class, MeshAnimationImpl::new, "animations", "skeletalMesh"); - assetTypeManager.registerCoreAssetType(Atlas.class, Atlas::new, "atlas"); - assetTypeManager.registerCoreAssetType(MeshAnimationBundle.class, - (AssetFactory) MeshAnimationBundle::new, + assetTypeManager.createAssetType(Atlas.class, Atlas::new, "atlas"); + assetTypeManager.createAssetType(MeshAnimationBundle.class, MeshAnimationBundle::new, "skeletalMesh", "animations"); - assetTypeManager.registerCoreAssetType(Subtexture.class, - (AssetFactory) Subtexture::new); + assetTypeManager.createAssetType(Subtexture.class, Subtexture::new); } public void registerRenderingSubsystem(Context context) { diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglInput.java b/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglInput.java index 59da82e9d75..2829bcbaf4a 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglInput.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/lwjgl/LwjglInput.java @@ -3,7 +3,6 @@ package org.terasology.engine.core.subsystem.lwjgl; import org.lwjgl.glfw.GLFW; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.config.Config; import org.terasology.engine.config.ControllerConfig; import org.terasology.engine.context.Context; @@ -13,6 +12,7 @@ import org.terasology.engine.input.lwjgl.LwjglControllerDevice; import org.terasology.engine.input.lwjgl.LwjglKeyboardDevice; import org.terasology.engine.input.lwjgl.LwjglMouseDevice; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; public class LwjglInput extends BaseLwjglSubsystem { diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/openvr/OpenVRControllers.java b/engine/src/main/java/org/terasology/engine/core/subsystem/openvr/OpenVRControllers.java index 1b8ae7a29f0..8d7abcccb36 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/openvr/OpenVRControllers.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/openvr/OpenVRControllers.java @@ -17,13 +17,13 @@ import jopenvr.VRControllerState_t; import org.joml.Matrix4f; +import org.terasology.engine.rendering.openvrprovider.ControllerListener; +import org.terasology.engine.rendering.openvrprovider.OpenVRUtil; import org.terasology.input.ButtonState; import org.terasology.input.ControllerDevice; +import org.terasology.input.ControllerId; import org.terasology.input.InputType; import org.terasology.input.device.ControllerAction; -import org.terasology.engine.rendering.openvrprovider.ControllerListener; -import org.terasology.engine.rendering.openvrprovider.OpenVRUtil; -import org.terasology.input.ControllerId; import java.util.ArrayDeque; import java.util.ArrayList; diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/openvr/OpenVRInput.java b/engine/src/main/java/org/terasology/engine/core/subsystem/openvr/OpenVRInput.java index 54556bb8e7a..ed0a20b57bd 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/openvr/OpenVRInput.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/openvr/OpenVRInput.java @@ -14,8 +14,8 @@ * limitations under the License. */ package org.terasology.engine.core.subsystem.openvr; + import org.lwjgl.glfw.GLFW; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.config.Config; import org.terasology.engine.context.Context; import org.terasology.engine.core.modes.GameState; @@ -24,6 +24,7 @@ import org.terasology.engine.input.lwjgl.LwjglKeyboardDevice; import org.terasology.engine.input.lwjgl.LwjglMouseDevice; import org.terasology.engine.rendering.openvrprovider.OpenVRProvider; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; public class OpenVRInput implements EngineSubsystem { diff --git a/engine/src/main/java/org/terasology/engine/core/subsystem/rendering/ModuleRenderingSubsystem.java b/engine/src/main/java/org/terasology/engine/core/subsystem/rendering/ModuleRenderingSubsystem.java index 66ee32b10d2..236a405b254 100644 --- a/engine/src/main/java/org/terasology/engine/core/subsystem/rendering/ModuleRenderingSubsystem.java +++ b/engine/src/main/java/org/terasology/engine/core/subsystem/rendering/ModuleRenderingSubsystem.java @@ -17,13 +17,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.context.Context; import org.terasology.engine.core.ComponentSystemManager; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.modes.GameState; import org.terasology.engine.core.module.rendering.RenderingModuleRegistry; import org.terasology.engine.core.subsystem.EngineSubsystem; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; public class ModuleRenderingSubsystem implements EngineSubsystem { private static final Logger logger = LoggerFactory.getLogger(ModuleRenderingSubsystem.class); diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/entity/internal/EntityScope.java b/engine/src/main/java/org/terasology/engine/entitySystem/entity/internal/EntityScope.java index 284a91e4d83..5a70c7c4f96 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/entity/internal/EntityScope.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/entity/internal/EntityScope.java @@ -15,7 +15,7 @@ */ package org.terasology.engine.entitySystem.entity.internal; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; @API public enum EntityScope { diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/entity/lifecycleEvents/package-info.java b/engine/src/main/java/org/terasology/engine/entitySystem/entity/lifecycleEvents/package-info.java index 009557bc593..73cbf571b2e 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/entity/lifecycleEvents/package-info.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/entity/lifecycleEvents/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.entitySystem.entity.lifecycleEvents; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/entity/package-info.java b/engine/src/main/java/org/terasology/engine/entitySystem/entity/package-info.java index 2ea6266c808..7e64f69c7d4 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/entity/package-info.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/entity/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.entitySystem.entity; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/event/internal/EventSystem.java b/engine/src/main/java/org/terasology/engine/entitySystem/event/internal/EventSystem.java index d303aac35e3..a395ff77442 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/event/internal/EventSystem.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/event/internal/EventSystem.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.entitySystem.event.internal; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.event.Event; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/event/internal/EventSystemImpl.java b/engine/src/main/java/org/terasology/engine/entitySystem/event/internal/EventSystemImpl.java index c5dee50929e..560305a6025 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/event/internal/EventSystemImpl.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/event/internal/EventSystemImpl.java @@ -17,7 +17,7 @@ import org.reflections.ReflectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.event.AbstractConsumableEvent; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/event/package-info.java b/engine/src/main/java/org/terasology/engine/entitySystem/event/package-info.java index 729a385a291..0d446cb5257 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/event/package-info.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/event/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.entitySystem.event; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/ComponentFieldMetadata.java b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/ComponentFieldMetadata.java index dc5e7465652..d65f0854ddc 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/ComponentFieldMetadata.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/ComponentFieldMetadata.java @@ -1,18 +1,5 @@ -/* - * Copyright 2013 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.entitySystem.metadata; import org.terasology.reflection.copy.CopyStrategyLibrary; @@ -37,9 +24,9 @@ */ public class ComponentFieldMetadata extends ReplicatedFieldMetadata { - private boolean ownedReference; + private final boolean ownedReference; - private CopyStrategy copyWithOwnedEntitiesStrategy; + private final CopyStrategy copyWithOwnedEntitiesStrategy; public ComponentFieldMetadata(ClassMetadata owner, Field field, CopyStrategyLibrary copyStrategyLibrary, ReflectFactory factory, boolean replicatedByDefault) throws InaccessibleFieldException { @@ -73,7 +60,8 @@ private boolean isCollectionOf(Class targetType, Type genericType) { * @return A safe to use copy of the value of this field in the given object */ public U getCopyOfValueWithOwnedEntities(Object from) { - return copyWithOwnedEntitiesStrategy.copy(getValue(from)); + U value = getValue(from); + return (value != null) ? copyWithOwnedEntitiesStrategy.copy(value) : null; } /** diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/ComponentLibrary.java b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/ComponentLibrary.java index 404862392ed..3f963269ce3 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/ComponentLibrary.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/ComponentLibrary.java @@ -18,11 +18,11 @@ import com.google.common.collect.Iterables; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.naming.Name; import org.terasology.reflection.copy.CopyStrategy; import org.terasology.reflection.copy.CopyStrategyLibrary; import org.terasology.reflection.metadata.ClassMetadata; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/ComponentMetadata.java b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/ComponentMetadata.java index aba710278eb..659908e9b72 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/ComponentMetadata.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/ComponentMetadata.java @@ -18,7 +18,7 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.DoNotPersist; import org.terasology.engine.network.Replicate; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/EntitySystemLibrary.java b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/EntitySystemLibrary.java index 272a28c8f17..e1ff9a02004 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/EntitySystemLibrary.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/EntitySystemLibrary.java @@ -5,7 +5,7 @@ import org.terasology.engine.context.Context; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; import org.terasology.reflection.copy.CopyStrategyLibrary; import org.terasology.reflection.reflect.ReflectFactory; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/EventLibrary.java b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/EventLibrary.java index ecbe0909da8..c96b77df1dd 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/EventLibrary.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/EventLibrary.java @@ -17,9 +17,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.event.Event; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.reflection.copy.CopyStrategyLibrary; import org.terasology.reflection.metadata.ClassMetadata; import org.terasology.reflection.metadata.ModuleClassLibrary; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/EventMetadata.java b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/EventMetadata.java index c0f6e77ed8d..412ebc5712e 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/EventMetadata.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/EventMetadata.java @@ -18,7 +18,7 @@ import com.google.common.base.Predicates; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.reflection.metadata.ClassMetadata; import org.terasology.reflection.copy.CopyStrategyLibrary; import org.terasology.reflection.reflect.InaccessibleFieldException; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/package-info.java b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/package-info.java index fd2e178b6df..2725aec733b 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/metadata/package-info.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/metadata/package-info.java @@ -21,4 +21,4 @@ @API package org.terasology.engine.entitySystem.metadata; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/package-info.java b/engine/src/main/java/org/terasology/engine/entitySystem/package-info.java index 218594a8ec5..831b2921779 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/package-info.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.entitySystem; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/Prefab.java b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/Prefab.java index 55e4b65948b..e6d4f5d04c1 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/Prefab.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/Prefab.java @@ -15,9 +15,9 @@ */ package org.terasology.engine.entitySystem.prefab; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.ComponentContainer; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/PrefabData.java b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/PrefabData.java index 683b2ba22a0..87de49a48f0 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/PrefabData.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/PrefabData.java @@ -16,7 +16,7 @@ package org.terasology.engine.entitySystem.prefab; import com.google.common.collect.Maps; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.MutableComponentContainer; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PojoPrefab.java b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PojoPrefab.java index d1d3ded7067..a04a3f24571 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PojoPrefab.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PojoPrefab.java @@ -18,8 +18,8 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.entitySystem.prefab.PrefabData; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PojoPrefabManager.java b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PojoPrefabManager.java index 4afef2341b3..2a17b65eff8 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PojoPrefabManager.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PojoPrefabManager.java @@ -16,11 +16,11 @@ package org.terasology.engine.entitySystem.prefab.internal; import com.google.common.base.Strings; -import org.terasology.assets.management.AssetManager; import org.terasology.engine.context.Context; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.entitySystem.prefab.PrefabManager; +import org.terasology.gestalt.assets.management.AssetManager; import java.util.Collection; import java.util.HashSet; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PrefabDeltaFormat.java b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PrefabDeltaFormat.java index 7855352049a..bf6be109b9a 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PrefabDeltaFormat.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PrefabDeltaFormat.java @@ -3,12 +3,12 @@ package org.terasology.engine.entitySystem.prefab.internal; import com.google.common.base.Charsets; -import org.terasology.assets.format.AbstractAssetAlterationFileFormat; -import org.terasology.assets.format.AssetDataFile; import org.terasology.engine.entitySystem.metadata.ComponentLibrary; import org.terasology.engine.entitySystem.prefab.PrefabData; import org.terasology.engine.persistence.serializers.EntityDataJSONFormat; import org.terasology.engine.persistence.serializers.PrefabSerializer; +import org.terasology.gestalt.assets.format.AbstractAssetAlterationFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; import org.terasology.protobuf.EntityData; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PrefabFormat.java b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PrefabFormat.java index aa99e552ff8..54642f25cf7 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PrefabFormat.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/internal/PrefabFormat.java @@ -5,13 +5,13 @@ import com.google.common.base.Charsets; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.metadata.ComponentLibrary; import org.terasology.engine.entitySystem.prefab.PrefabData; import org.terasology.engine.persistence.serializers.EntityDataJSONFormat; import org.terasology.engine.persistence.serializers.PrefabSerializer; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; import org.terasology.protobuf.EntityData; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/package-info.java b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/package-info.java index 933df73f4a2..0aeb748522d 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/prefab/package-info.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/prefab/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.entitySystem.prefab; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/sectors/LoadedSectorUpdateEvent.java b/engine/src/main/java/org/terasology/engine/entitySystem/sectors/LoadedSectorUpdateEvent.java index b2edbac58a2..c166917a2d4 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/sectors/LoadedSectorUpdateEvent.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/sectors/LoadedSectorUpdateEvent.java @@ -17,7 +17,7 @@ import org.joml.Vector3i; import org.terasology.engine.entitySystem.event.Event; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.util.Set; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorRegionComponent.java b/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorRegionComponent.java index 28676cd2264..620eaf455ad 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorRegionComponent.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorRegionComponent.java @@ -17,7 +17,7 @@ import org.joml.Vector3i; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.world.chunks.Chunk; import java.util.HashSet; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorSimulationComponent.java b/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorSimulationComponent.java index 2b96d2e5e56..d542644dcbb 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorSimulationComponent.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorSimulationComponent.java @@ -19,7 +19,7 @@ import org.terasology.engine.entitySystem.entity.EntityManager; import org.terasology.engine.entitySystem.entity.internal.BaseEntityRef; import org.terasology.engine.entitySystem.entity.internal.EntityScope; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * The component that allows the {@link SectorSimulationSystem} to send simulation events to a sector-scope entity. diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorSimulationEvent.java b/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorSimulationEvent.java index 2aa8fe6bc07..0a49f090c92 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorSimulationEvent.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorSimulationEvent.java @@ -17,7 +17,7 @@ import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.event.Event; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * This is the event sent to all sector-level entities by the {@link SectorSimulationSystem}, allowing them to do simulation. It diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorUtil.java b/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorUtil.java index 2c119d5d500..b6ce3dc3cb7 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorUtil.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/sectors/SectorUtil.java @@ -20,7 +20,7 @@ import org.joml.Vector3ic; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.logic.location.LocationComponent; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.world.chunks.Chunk; import org.terasology.engine.world.chunks.ChunkProvider; import org.terasology.engine.world.chunks.Chunks; diff --git a/engine/src/main/java/org/terasology/engine/entitySystem/systems/package-info.java b/engine/src/main/java/org/terasology/engine/entitySystem/systems/package-info.java index 0cfdaa33024..32962c9f8d5 100644 --- a/engine/src/main/java/org/terasology/engine/entitySystem/systems/package-info.java +++ b/engine/src/main/java/org/terasology/engine/entitySystem/systems/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.entitySystem.systems; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/game/GameManifest.java b/engine/src/main/java/org/terasology/engine/game/GameManifest.java index a9f80bbf27c..fbabdad2394 100644 --- a/engine/src/main/java/org/terasology/engine/game/GameManifest.java +++ b/engine/src/main/java/org/terasology/engine/game/GameManifest.java @@ -21,14 +21,14 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.terasology.engine.core.TerasologyConstants; -import org.terasology.naming.Name; -import org.terasology.naming.NameVersion; -import org.terasology.naming.Version; -import org.terasology.naming.gson.NameTypeAdapter; -import org.terasology.naming.gson.VersionTypeAdapter; import org.terasology.engine.utilities.gson.CaseInsensitiveEnumTypeAdapterFactory; import org.terasology.engine.utilities.gson.UriTypeAdapterFactory; import org.terasology.engine.world.internal.WorldInfo; +import org.terasology.gestalt.naming.Name; +import org.terasology.gestalt.naming.NameVersion; +import org.terasology.gestalt.naming.Version; +import org.terasology.gestalt.naming.gson.NameTypeAdapter; +import org.terasology.gestalt.naming.gson.VersionTypeAdapter; import java.io.BufferedReader; import java.io.IOException; diff --git a/engine/src/main/java/org/terasology/engine/i18n/I18nSubsystem.java b/engine/src/main/java/org/terasology/engine/i18n/I18nSubsystem.java index a60f153c50a..8cac128ce8b 100644 --- a/engine/src/main/java/org/terasology/engine/i18n/I18nSubsystem.java +++ b/engine/src/main/java/org/terasology/engine/i18n/I18nSubsystem.java @@ -3,13 +3,11 @@ package org.terasology.engine.i18n; -import org.terasology.assets.AssetFactory; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.context.Context; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.subsystem.EngineSubsystem; -import org.terasology.engine.i18n.assets.TranslationData; import org.terasology.engine.i18n.assets.Translation; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; /** * Registers internationalization systems. @@ -23,8 +21,7 @@ public String getName() { @Override public void registerCoreAssetTypes(ModuleAwareAssetTypeManager assetTypeManager) { - assetTypeManager.registerCoreAssetType(Translation.class, - (AssetFactory) Translation::new, "i18n"); + assetTypeManager.createAssetType(Translation.class, Translation::create, "i18n"); } @Override diff --git a/engine/src/main/java/org/terasology/engine/i18n/StandardTranslationProject.java b/engine/src/main/java/org/terasology/engine/i18n/StandardTranslationProject.java index ebd684f1af3..3483c21976a 100644 --- a/engine/src/main/java/org/terasology/engine/i18n/StandardTranslationProject.java +++ b/engine/src/main/java/org/terasology/engine/i18n/StandardTranslationProject.java @@ -4,7 +4,7 @@ package org.terasology.engine.i18n; import org.terasology.engine.i18n.assets.Translation; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import java.util.HashMap; import java.util.HashSet; diff --git a/engine/src/main/java/org/terasology/engine/i18n/TranslationProject.java b/engine/src/main/java/org/terasology/engine/i18n/TranslationProject.java index 36625f4c5cd..5e047f056d1 100644 --- a/engine/src/main/java/org/terasology/engine/i18n/TranslationProject.java +++ b/engine/src/main/java/org/terasology/engine/i18n/TranslationProject.java @@ -3,13 +3,13 @@ package org.terasology.engine.i18n; +import org.terasology.engine.i18n.assets.Translation; +import org.terasology.gestalt.naming.Name; + import java.util.Locale; import java.util.Optional; import java.util.Set; -import org.terasology.engine.i18n.assets.Translation; -import org.terasology.naming.Name; - /** * Describes a translation project. It aggregates individual translations (one per {@link Locale}). */ diff --git a/engine/src/main/java/org/terasology/engine/i18n/TranslationSystem.java b/engine/src/main/java/org/terasology/engine/i18n/TranslationSystem.java index 8377e3f47e4..f9815818b9a 100644 --- a/engine/src/main/java/org/terasology/engine/i18n/TranslationSystem.java +++ b/engine/src/main/java/org/terasology/engine/i18n/TranslationSystem.java @@ -4,7 +4,7 @@ package org.terasology.engine.i18n; import org.terasology.engine.core.Uri; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.nui.translate.Translator; import java.util.Locale; diff --git a/engine/src/main/java/org/terasology/engine/i18n/TranslationSystemImpl.java b/engine/src/main/java/org/terasology/engine/i18n/TranslationSystemImpl.java index 1a8589db687..be271fc23c2 100644 --- a/engine/src/main/java/org/terasology/engine/i18n/TranslationSystemImpl.java +++ b/engine/src/main/java/org/terasology/engine/i18n/TranslationSystemImpl.java @@ -5,8 +5,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; import org.terasology.engine.config.SystemConfig; import org.terasology.engine.context.Context; import org.terasology.engine.core.SimpleUri; @@ -14,6 +12,8 @@ import org.terasology.engine.i18n.assets.Translation; import org.terasology.engine.persistence.TemplateEngine; import org.terasology.engine.persistence.TemplateEngineImpl; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import java.util.HashMap; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/i18n/assets/Translation.java b/engine/src/main/java/org/terasology/engine/i18n/assets/Translation.java index 3097312c33f..6a9d7cbe274 100644 --- a/engine/src/main/java/org/terasology/engine/i18n/assets/Translation.java +++ b/engine/src/main/java/org/terasology/engine/i18n/assets/Translation.java @@ -3,6 +3,15 @@ package org.terasology.engine.i18n.assets; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import org.terasology.engine.core.Uri; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.naming.Name; + import java.lang.ref.WeakReference; import java.util.HashMap; import java.util.List; @@ -11,15 +20,6 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.function.Consumer; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; -import org.terasology.engine.core.Uri; -import org.terasology.naming.Name; - -import com.google.common.base.Objects; -import com.google.common.base.Preconditions; - /** * Defines a translation asset. */ @@ -36,13 +36,24 @@ public class Translation extends Asset { * @param assetType The asset type this asset belongs to. Never null. * @param data The actual translation data. Never null. */ - public Translation(ResourceUrn urn, AssetType assetType, TranslationData data) { - super(urn, assetType); - this.disposalAction = new DisposalAction(this); - getDisposalHook().setDisposeAction(disposalAction); + public Translation(ResourceUrn urn, AssetType assetType, TranslationData data, Translation.DisposalAction disposalAction) { + super(urn, assetType, disposalAction); + this.disposalAction = disposalAction; + this.disposalAction.setAsset(this); reload(data); } + /** + * Factory method for Translation + * + * @param urn The urn identifying the asset. Never null. + * @param assetType The asset type this asset belongs to. Never null. + * @param data The actual translation data. Never null. + */ + public static Translation create(ResourceUrn urn, AssetType assetType, TranslationData data) { + return new Translation(urn, assetType, data, new DisposalAction()); + } + /** * @return the uri of the project this instance is part of */ @@ -106,17 +117,21 @@ protected void doReload(TranslationData data) { } } - private static class DisposalAction implements Runnable { + private static class DisposalAction implements DisposableResource { private final List> changeListeners = new CopyOnWriteArrayList<>(); - private final WeakReference asset; + private WeakReference asset; + + DisposalAction() { + } - DisposalAction(Translation asset) { + public void setAsset(Translation asset) { this.asset = new WeakReference<>(asset); } + @Override - public void run() { + public void close() { Translation translation = asset.get(); if (translation != null) { for (Consumer listener : changeListeners) { diff --git a/engine/src/main/java/org/terasology/engine/i18n/assets/TranslationData.java b/engine/src/main/java/org/terasology/engine/i18n/assets/TranslationData.java index 58e3a821ae7..0282838a732 100644 --- a/engine/src/main/java/org/terasology/engine/i18n/assets/TranslationData.java +++ b/engine/src/main/java/org/terasology/engine/i18n/assets/TranslationData.java @@ -2,16 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.i18n.assets; +import com.google.common.base.Preconditions; +import org.terasology.engine.core.Uri; +import org.terasology.gestalt.assets.AssetData; + import java.util.Collections; import java.util.HashMap; import java.util.Locale; import java.util.Map; -import org.terasology.assets.AssetData; -import org.terasology.engine.core.Uri; - -import com.google.common.base.Preconditions; - /** * Defines translation data in the form of a map {ID -> value}. diff --git a/engine/src/main/java/org/terasology/engine/i18n/assets/TranslationFormat.java b/engine/src/main/java/org/terasology/engine/i18n/assets/TranslationFormat.java index 93ed3ec6c94..152af4d9f85 100644 --- a/engine/src/main/java/org/terasology/engine/i18n/assets/TranslationFormat.java +++ b/engine/src/main/java/org/terasology/engine/i18n/assets/TranslationFormat.java @@ -9,21 +9,21 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonDeserializer; import com.google.gson.JsonParseException; - -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.exceptions.InvalidAssetFilenameException; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.format.AssetFileFormat; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; import org.terasology.engine.core.SimpleUri; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.exceptions.InvalidAssetFilenameException; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.format.AssetFileFormat; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.module.resources.FileReference; +import org.terasology.gestalt.naming.Name; import java.io.IOException; import java.io.InputStreamReader; -import java.nio.file.PathMatcher; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.function.Predicate; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -64,9 +64,9 @@ public class TranslationFormat implements AssetFileFormat { private final Gson gson = new GsonBuilder().registerTypeAdapter(String.class, stringArraySerializer).create(); @Override - public PathMatcher getFileMatcher() { + public Predicate getFileMatcher() { return path -> { - String name = path.getFileName().toString(); + String name = path.getName(); return FILENAME_PATTERN.matcher(name).matches(); }; } diff --git a/engine/src/main/java/org/terasology/engine/i18n/assets/package-info.java b/engine/src/main/java/org/terasology/engine/i18n/assets/package-info.java index 893a2a74854..c6ffc21565a 100644 --- a/engine/src/main/java/org/terasology/engine/i18n/assets/package-info.java +++ b/engine/src/main/java/org/terasology/engine/i18n/assets/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.i18n.assets; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/input/InputSystem.java b/engine/src/main/java/org/terasology/engine/input/InputSystem.java index 417dc6c95f7..e8287986eda 100644 --- a/engine/src/main/java/org/terasology/engine/input/InputSystem.java +++ b/engine/src/main/java/org/terasology/engine/input/InputSystem.java @@ -15,22 +15,7 @@ import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.systems.BaseComponentSystem; import org.terasology.engine.entitySystem.systems.RegisterSystem; -import org.terasology.input.ButtonState; -import org.terasology.input.ControllerDevice; -import org.terasology.input.ControllerId; -import org.terasology.input.Input; -import org.terasology.input.InputType; -import org.terasology.input.MouseInput; import org.terasology.engine.input.cameraTarget.CameraTargetSystem; -import org.terasology.input.device.CharKeyboardAction; -import org.terasology.input.device.ControllerAction; -import org.terasology.input.device.KeyboardDevice; -import org.terasology.input.device.MouseAction; -import org.terasology.input.device.MouseDevice; -import org.terasology.input.device.RawKeyboardAction; -import org.terasology.input.device.nulldevices.NullControllerDevice; -import org.terasology.input.device.nulldevices.NullKeyboardDevice; -import org.terasology.input.device.nulldevices.NullMouseDevice; import org.terasology.engine.input.events.CharEvent; import org.terasology.engine.input.events.InputEvent; import org.terasology.engine.input.events.KeyDownEvent; @@ -51,6 +36,21 @@ import org.terasology.engine.input.internal.BindableRealAxis; import org.terasology.engine.logic.players.LocalPlayer; import org.terasology.engine.registry.In; +import org.terasology.input.ButtonState; +import org.terasology.input.ControllerDevice; +import org.terasology.input.ControllerId; +import org.terasology.input.Input; +import org.terasology.input.InputType; +import org.terasology.input.MouseInput; +import org.terasology.input.device.CharKeyboardAction; +import org.terasology.input.device.ControllerAction; +import org.terasology.input.device.KeyboardDevice; +import org.terasology.input.device.MouseAction; +import org.terasology.input.device.MouseDevice; +import org.terasology.input.device.RawKeyboardAction; +import org.terasology.input.device.nulldevices.NullControllerDevice; +import org.terasology.input.device.nulldevices.NullKeyboardDevice; +import org.terasology.input.device.nulldevices.NullMouseDevice; import java.util.List; import java.util.Queue; diff --git a/engine/src/main/java/org/terasology/engine/input/binds/general/ActivateButton.java b/engine/src/main/java/org/terasology/engine/input/binds/general/ActivateButton.java index 8dc0b4a6cfe..3c0a4a5d6cd 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/general/ActivateButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/general/ActivateButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** * Activates the selected widget. diff --git a/engine/src/main/java/org/terasology/engine/input/binds/general/ChatButton.java b/engine/src/main/java/org/terasology/engine/input/binds/general/ChatButton.java index 1aad87c1807..9aed585ae13 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/general/ChatButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/general/ChatButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** * Toggles the display of ChatScreen (through ChatSystem) diff --git a/engine/src/main/java/org/terasology/engine/input/binds/general/ConsoleButton.java b/engine/src/main/java/org/terasology/engine/input/binds/general/ConsoleButton.java index e489bbabac1..2f11bfc65c1 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/general/ConsoleButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/general/ConsoleButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/general/HideHUDButton.java b/engine/src/main/java/org/terasology/engine/input/binds/general/HideHUDButton.java index c33714cc127..c86cf5bc149 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/general/HideHUDButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/general/HideHUDButton.java @@ -4,9 +4,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/general/OnlinePlayersButton.java b/engine/src/main/java/org/terasology/engine/input/binds/general/OnlinePlayersButton.java index 32e74241183..f5fa5c764b1 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/general/OnlinePlayersButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/general/OnlinePlayersButton.java @@ -4,9 +4,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; @RegisterBindButton(id = "showOnlinePlayers", description = "${engine:menu#binding-show-online-players}", category = "general") @DefaultBinding(type = InputType.KEY, id = Keyboard.KeyId.F2) diff --git a/engine/src/main/java/org/terasology/engine/input/binds/general/PauseButton.java b/engine/src/main/java/org/terasology/engine/input/binds/general/PauseButton.java index 360050f4bb3..1641f8de9e2 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/general/PauseButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/general/PauseButton.java @@ -4,11 +4,11 @@ package org.terasology.engine.input.binds.general; import org.terasology.engine.input.BindButtonEvent; -import org.terasology.input.ControllerId; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; +import org.terasology.input.ControllerId; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; @RegisterBindButton(id = "pause", description = "${engine:menu#binding-pause}", category = "general") @DefaultBinding(type = InputType.KEY, id = Keyboard.KeyId.ESCAPE) diff --git a/engine/src/main/java/org/terasology/engine/input/binds/general/ScreenshotButton.java b/engine/src/main/java/org/terasology/engine/input/binds/general/ScreenshotButton.java index 7377bc5c92d..e41a23fd98e 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/general/ScreenshotButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/general/ScreenshotButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; @RegisterBindButton(id = "screenshot", description = "${engine:menu#binding-screenshot}", category = "general") @DefaultBinding(type = InputType.KEY, id = Keyboard.KeyId.F12) diff --git a/engine/src/main/java/org/terasology/engine/input/binds/general/TabbingModifierButton.java b/engine/src/main/java/org/terasology/engine/input/binds/general/TabbingModifierButton.java index 742db0c00f3..3efbdafbd33 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/general/TabbingModifierButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/general/TabbingModifierButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** * Modifies the behaviour of tabbing between widgets diff --git a/engine/src/main/java/org/terasology/engine/input/binds/general/TabbingUIButton.java b/engine/src/main/java/org/terasology/engine/input/binds/general/TabbingUIButton.java index e4ac0c4d5e8..ac319475a6a 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/general/TabbingUIButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/general/TabbingUIButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** * Tabs between widgets in order. diff --git a/engine/src/main/java/org/terasology/engine/input/binds/general/package-info.java b/engine/src/main/java/org/terasology/engine/input/binds/general/package-info.java index d74ba1763b8..f039df4753b 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/general/package-info.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/general/package-info.java @@ -7,5 +7,5 @@ displayName = "${engine:menu#category-general}" ) package org.terasology.engine.input.binds.general; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.input.InputCategory; diff --git a/engine/src/main/java/org/terasology/engine/input/binds/interaction/package-info.java b/engine/src/main/java/org/terasology/engine/input/binds/interaction/package-info.java index c6337f90bc0..0b82d3cc2cb 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/interaction/package-info.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/interaction/package-info.java @@ -10,5 +10,5 @@ "engine:frob" }) package org.terasology.engine.input.binds.interaction; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.input.InputCategory; diff --git a/engine/src/main/java/org/terasology/engine/input/binds/inventory/UseItemButton.java b/engine/src/main/java/org/terasology/engine/input/binds/inventory/UseItemButton.java index 4e9a340b5b2..99d7348966f 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/inventory/UseItemButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/inventory/UseItemButton.java @@ -6,9 +6,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; import org.terasology.engine.input.RegisterBindButton; -import org.terasology.input.InputType; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.input.ControllerId; -import org.terasology.module.sandbox.API; +import org.terasology.input.InputType; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/AutoMoveButton.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/AutoMoveButton.java index e359e0fc5b0..21bfac00c61 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/AutoMoveButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/AutoMoveButton.java @@ -4,9 +4,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; @RegisterBindButton(id = "autoMoveMode", description = "${engine:menu#binding-autoMove-mode}") @DefaultBinding(id = Keyboard.KeyId.R, type = InputType.KEY) diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/BackwardsButton.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/BackwardsButton.java index 269da00c8b8..ccc99dab485 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/BackwardsButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/BackwardsButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/CrouchButton.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/CrouchButton.java index 1cfa5fff7f6..9f2b6fee26a 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/CrouchButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/CrouchButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/CrouchModeButton.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/CrouchModeButton.java index 022a61ec11d..692646e14fc 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/CrouchModeButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/CrouchModeButton.java @@ -4,9 +4,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/ForwardsButton.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/ForwardsButton.java index ae35edeadf0..1ee50519b97 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/ForwardsButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/ForwardsButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/ForwardsRealMovementAxis.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/ForwardsRealMovementAxis.java index 76bab81fa15..d37874b69f5 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/ForwardsRealMovementAxis.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/ForwardsRealMovementAxis.java @@ -4,11 +4,11 @@ package org.terasology.engine.input.binds.movement; import org.terasology.engine.input.BindAxisEvent; -import org.terasology.input.ControllerId; import org.terasology.engine.input.DefaultBinding; -import org.terasology.input.InputType; import org.terasology.engine.input.RegisterRealBindAxis; import org.terasology.engine.input.SendEventMode; +import org.terasology.input.ControllerId; +import org.terasology.input.InputType; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/JumpButton.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/JumpButton.java index 68f955e397e..a10c6664171 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/JumpButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/JumpButton.java @@ -4,11 +4,11 @@ package org.terasology.engine.input.binds.movement; import org.terasology.engine.input.BindButtonEvent; -import org.terasology.input.ControllerId; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; +import org.terasology.input.ControllerId; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/LeftStrafeButton.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/LeftStrafeButton.java index 1791cfb1478..a7d64705cf7 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/LeftStrafeButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/LeftStrafeButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/RightStrafeButton.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/RightStrafeButton.java index ed9bb10703a..8d05c6f3072 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/RightStrafeButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/RightStrafeButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/RotationPitchAxis.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/RotationPitchAxis.java index ea161d31192..c7c7a20f481 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/RotationPitchAxis.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/RotationPitchAxis.java @@ -4,11 +4,11 @@ package org.terasology.engine.input.binds.movement; import org.terasology.engine.input.BindAxisEvent; -import org.terasology.input.ControllerId; import org.terasology.engine.input.DefaultBinding; -import org.terasology.input.InputType; import org.terasology.engine.input.RegisterRealBindAxis; import org.terasology.engine.input.SendEventMode; +import org.terasology.input.ControllerId; +import org.terasology.input.InputType; /** * Relates to the vertical screen axis, i.e. look up/down. diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/RotationYawAxis.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/RotationYawAxis.java index 4fb608a1ad4..36113381afc 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/RotationYawAxis.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/RotationYawAxis.java @@ -4,11 +4,11 @@ package org.terasology.engine.input.binds.movement; import org.terasology.engine.input.BindAxisEvent; -import org.terasology.input.ControllerId; import org.terasology.engine.input.DefaultBinding; -import org.terasology.input.InputType; import org.terasology.engine.input.RegisterRealBindAxis; import org.terasology.engine.input.SendEventMode; +import org.terasology.input.ControllerId; +import org.terasology.input.InputType; /** * Relates to the horizontal screen axis, i.e. look left/right. diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/ToggleSpeedPermanentlyButton.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/ToggleSpeedPermanentlyButton.java index 7242db3e92d..25612581840 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/ToggleSpeedPermanentlyButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/ToggleSpeedPermanentlyButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/ToggleSpeedTemporarilyButton.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/ToggleSpeedTemporarilyButton.java index 756d5332e05..d6636419d2e 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/ToggleSpeedTemporarilyButton.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/ToggleSpeedTemporarilyButton.java @@ -5,9 +5,9 @@ import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.DefaultBinding; +import org.terasology.engine.input.RegisterBindButton; import org.terasology.input.InputType; import org.terasology.input.Keyboard; -import org.terasology.engine.input.RegisterBindButton; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/VerticalRealMovementAxis.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/VerticalRealMovementAxis.java index 26f65c5af5f..1d456a7629a 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/VerticalRealMovementAxis.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/VerticalRealMovementAxis.java @@ -4,11 +4,11 @@ package org.terasology.engine.input.binds.movement; import org.terasology.engine.input.BindAxisEvent; -import org.terasology.input.ControllerId; import org.terasology.engine.input.DefaultBinding; -import org.terasology.input.InputType; import org.terasology.engine.input.RegisterRealBindAxis; import org.terasology.engine.input.SendEventMode; +import org.terasology.input.ControllerId; +import org.terasology.input.InputType; /** */ diff --git a/engine/src/main/java/org/terasology/engine/input/binds/movement/package-info.java b/engine/src/main/java/org/terasology/engine/input/binds/movement/package-info.java index 8104306aa86..7bc87772582 100644 --- a/engine/src/main/java/org/terasology/engine/input/binds/movement/package-info.java +++ b/engine/src/main/java/org/terasology/engine/input/binds/movement/package-info.java @@ -18,5 +18,5 @@ "engine:crouch" }) package org.terasology.engine.input.binds.movement; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.input.InputCategory; diff --git a/engine/src/main/java/org/terasology/engine/input/cameraTarget/CameraTargetSystem.java b/engine/src/main/java/org/terasology/engine/input/cameraTarget/CameraTargetSystem.java index 6d652acaf0e..627ac56ba75 100644 --- a/engine/src/main/java/org/terasology/engine/input/cameraTarget/CameraTargetSystem.java +++ b/engine/src/main/java/org/terasology/engine/input/cameraTarget/CameraTargetSystem.java @@ -11,7 +11,6 @@ import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.systems.BaseComponentSystem; import org.terasology.engine.logic.players.LocalPlayer; -import org.terasology.math.TeraMath; import org.terasology.engine.physics.CollisionGroup; import org.terasology.engine.physics.HitResult; import org.terasology.engine.physics.Physics; @@ -20,6 +19,7 @@ import org.terasology.engine.rendering.world.WorldRenderer; import org.terasology.engine.world.BlockEntityRegistry; import org.terasology.engine.world.block.BlockComponent; +import org.terasology.math.TeraMath; import java.util.Arrays; diff --git a/engine/src/main/java/org/terasology/engine/input/cameraTarget/package-info.java b/engine/src/main/java/org/terasology/engine/input/cameraTarget/package-info.java index 3d1adefe526..e719e54cedd 100644 --- a/engine/src/main/java/org/terasology/engine/input/cameraTarget/package-info.java +++ b/engine/src/main/java/org/terasology/engine/input/cameraTarget/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.input.cameraTarget; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/input/events/LeftMouseDownButtonEvent.java b/engine/src/main/java/org/terasology/engine/input/events/LeftMouseDownButtonEvent.java index 6cb3403b0f7..a6652928a89 100644 --- a/engine/src/main/java/org/terasology/engine/input/events/LeftMouseDownButtonEvent.java +++ b/engine/src/main/java/org/terasology/engine/input/events/LeftMouseDownButtonEvent.java @@ -3,8 +3,8 @@ package org.terasology.engine.input.events; -import org.terasology.input.MouseInput; import org.joml.Vector2i; +import org.terasology.input.MouseInput; public final class LeftMouseDownButtonEvent extends MouseDownButtonEvent { diff --git a/engine/src/main/java/org/terasology/engine/input/events/LeftMouseUpButtonEvent.java b/engine/src/main/java/org/terasology/engine/input/events/LeftMouseUpButtonEvent.java index b88524620de..af739ae6f53 100644 --- a/engine/src/main/java/org/terasology/engine/input/events/LeftMouseUpButtonEvent.java +++ b/engine/src/main/java/org/terasology/engine/input/events/LeftMouseUpButtonEvent.java @@ -3,8 +3,8 @@ package org.terasology.engine.input.events; -import org.terasology.input.MouseInput; import org.joml.Vector2i; +import org.terasology.input.MouseInput; public final class LeftMouseUpButtonEvent extends MouseUpButtonEvent { diff --git a/engine/src/main/java/org/terasology/engine/input/events/MouseButtonEvent.java b/engine/src/main/java/org/terasology/engine/input/events/MouseButtonEvent.java index 5dda1a097a5..2773db9b6c3 100644 --- a/engine/src/main/java/org/terasology/engine/input/events/MouseButtonEvent.java +++ b/engine/src/main/java/org/terasology/engine/input/events/MouseButtonEvent.java @@ -3,9 +3,9 @@ package org.terasology.engine.input.events; +import org.joml.Vector2i; import org.terasology.input.ButtonState; import org.terasology.input.MouseInput; -import org.joml.Vector2i; public class MouseButtonEvent extends ButtonEvent { diff --git a/engine/src/main/java/org/terasology/engine/input/events/MouseDownButtonEvent.java b/engine/src/main/java/org/terasology/engine/input/events/MouseDownButtonEvent.java index c5428ce387e..28eb1faf16d 100644 --- a/engine/src/main/java/org/terasology/engine/input/events/MouseDownButtonEvent.java +++ b/engine/src/main/java/org/terasology/engine/input/events/MouseDownButtonEvent.java @@ -3,9 +3,9 @@ package org.terasology.engine.input.events; +import org.joml.Vector2i; import org.terasology.input.ButtonState; import org.terasology.input.MouseInput; -import org.joml.Vector2i; public class MouseDownButtonEvent extends MouseButtonEvent { diff --git a/engine/src/main/java/org/terasology/engine/input/events/MouseUpButtonEvent.java b/engine/src/main/java/org/terasology/engine/input/events/MouseUpButtonEvent.java index 92754cdd069..f122f198e0f 100644 --- a/engine/src/main/java/org/terasology/engine/input/events/MouseUpButtonEvent.java +++ b/engine/src/main/java/org/terasology/engine/input/events/MouseUpButtonEvent.java @@ -3,9 +3,9 @@ package org.terasology.engine.input.events; +import org.joml.Vector2i; import org.terasology.input.ButtonState; import org.terasology.input.MouseInput; -import org.joml.Vector2i; public class MouseUpButtonEvent extends MouseButtonEvent { diff --git a/engine/src/main/java/org/terasology/engine/input/events/RightMouseDownButtonEvent.java b/engine/src/main/java/org/terasology/engine/input/events/RightMouseDownButtonEvent.java index 50c3a723995..6599a63023e 100644 --- a/engine/src/main/java/org/terasology/engine/input/events/RightMouseDownButtonEvent.java +++ b/engine/src/main/java/org/terasology/engine/input/events/RightMouseDownButtonEvent.java @@ -3,8 +3,8 @@ package org.terasology.engine.input.events; -import org.terasology.input.MouseInput; import org.joml.Vector2i; +import org.terasology.input.MouseInput; public final class RightMouseDownButtonEvent extends MouseDownButtonEvent { diff --git a/engine/src/main/java/org/terasology/engine/input/events/RightMouseUpButtonEvent.java b/engine/src/main/java/org/terasology/engine/input/events/RightMouseUpButtonEvent.java index 04fb080c2ec..33e506f75a0 100644 --- a/engine/src/main/java/org/terasology/engine/input/events/RightMouseUpButtonEvent.java +++ b/engine/src/main/java/org/terasology/engine/input/events/RightMouseUpButtonEvent.java @@ -3,8 +3,8 @@ package org.terasology.engine.input.events; -import org.terasology.input.MouseInput; import org.joml.Vector2i; +import org.terasology.input.MouseInput; public final class RightMouseUpButtonEvent extends MouseUpButtonEvent { diff --git a/engine/src/main/java/org/terasology/engine/input/events/package-info.java b/engine/src/main/java/org/terasology/engine/input/events/package-info.java index babe5c2851f..bc07ea79358 100644 --- a/engine/src/main/java/org/terasology/engine/input/events/package-info.java +++ b/engine/src/main/java/org/terasology/engine/input/events/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.input.events; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/input/internal/AbstractBindableAxis.java b/engine/src/main/java/org/terasology/engine/input/internal/AbstractBindableAxis.java index 5d07691f2ba..96c662d412f 100644 --- a/engine/src/main/java/org/terasology/engine/input/internal/AbstractBindableAxis.java +++ b/engine/src/main/java/org/terasology/engine/input/internal/AbstractBindableAxis.java @@ -4,13 +4,13 @@ package org.terasology.engine.input.internal; import com.google.common.collect.Lists; +import org.joml.Vector3f; +import org.joml.Vector3i; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.input.BindAxisEvent; import org.terasology.engine.input.BindAxisSubscriber; import org.terasology.engine.input.BindableAxis; import org.terasology.engine.input.SendEventMode; -import org.joml.Vector3f; -import org.joml.Vector3i; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/input/internal/BindCommands.java b/engine/src/main/java/org/terasology/engine/input/internal/BindCommands.java index eda08c08c1d..9c1036d7c63 100644 --- a/engine/src/main/java/org/terasology/engine/input/internal/BindCommands.java +++ b/engine/src/main/java/org/terasology/engine/input/internal/BindCommands.java @@ -6,13 +6,13 @@ import org.terasology.engine.core.subsystem.config.BindsManager; import org.terasology.engine.entitySystem.systems.BaseComponentSystem; import org.terasology.engine.entitySystem.systems.RegisterSystem; -import org.terasology.input.Input; -import org.terasology.input.Keyboard; -import org.terasology.input.Keyboard.KeyId; import org.terasology.engine.logic.console.commandSystem.annotations.Command; import org.terasology.engine.logic.console.commandSystem.annotations.CommandParam; import org.terasology.engine.logic.permission.PermissionManager; import org.terasology.engine.registry.In; +import org.terasology.input.Input; +import org.terasology.input.Keyboard; +import org.terasology.input.Keyboard.KeyId; import java.util.Collections; import java.util.HashMap; diff --git a/engine/src/main/java/org/terasology/engine/input/internal/BindableButtonImpl.java b/engine/src/main/java/org/terasology/engine/input/internal/BindableButtonImpl.java index 8528259b1f5..5238549f089 100644 --- a/engine/src/main/java/org/terasology/engine/input/internal/BindableButtonImpl.java +++ b/engine/src/main/java/org/terasology/engine/input/internal/BindableButtonImpl.java @@ -8,10 +8,10 @@ import org.joml.Vector3ic; import org.terasology.engine.core.SimpleUri; import org.terasology.engine.entitySystem.entity.EntityRef; -import org.terasology.engine.input.BindableButton; -import org.terasology.input.ActivateMode; import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.BindButtonSubscriber; +import org.terasology.engine.input.BindableButton; +import org.terasology.input.ActivateMode; import org.terasology.input.ButtonState; import org.terasology.input.Input; diff --git a/engine/src/main/java/org/terasology/engine/input/package-info.java b/engine/src/main/java/org/terasology/engine/input/package-info.java index 9e7b7e3c16d..487b1ea7f11 100644 --- a/engine/src/main/java/org/terasology/engine/input/package-info.java +++ b/engine/src/main/java/org/terasology/engine/input/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.input; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/actions/package-info.java b/engine/src/main/java/org/terasology/engine/logic/actions/package-info.java index fd8afd988dc..10e698325ca 100644 --- a/engine/src/main/java/org/terasology/engine/logic/actions/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/actions/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.actions; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/afk/AfkClientSystem.java b/engine/src/main/java/org/terasology/engine/logic/afk/AfkClientSystem.java index 283a4e9cf84..2a2001295d3 100644 --- a/engine/src/main/java/org/terasology/engine/logic/afk/AfkClientSystem.java +++ b/engine/src/main/java/org/terasology/engine/logic/afk/AfkClientSystem.java @@ -12,17 +12,17 @@ import org.terasology.engine.entitySystem.systems.RegisterMode; import org.terasology.engine.entitySystem.systems.RegisterSystem; import org.terasology.engine.game.Game; +import org.terasology.engine.input.events.KeyDownEvent; import org.terasology.engine.logic.console.Console; import org.terasology.engine.logic.console.commandSystem.annotations.Command; -import org.terasology.engine.logic.players.LocalPlayer; -import org.terasology.input.Keyboard; -import org.terasology.engine.input.events.KeyDownEvent; import org.terasology.engine.logic.permission.PermissionManager; +import org.terasology.engine.logic.players.LocalPlayer; import org.terasology.engine.network.NetworkMode; import org.terasology.engine.network.NetworkSystem; import org.terasology.engine.physics.events.MovedEvent; import org.terasology.engine.registry.In; import org.terasology.engine.rendering.nui.NUIManager; +import org.terasology.input.Keyboard; @RegisterSystem(RegisterMode.CLIENT) public class AfkClientSystem extends BaseComponentSystem { diff --git a/engine/src/main/java/org/terasology/engine/logic/ai/AICommands.java b/engine/src/main/java/org/terasology/engine/logic/ai/AICommands.java index 65504288ff3..a5bbebd3173 100644 --- a/engine/src/main/java/org/terasology/engine/logic/ai/AICommands.java +++ b/engine/src/main/java/org/terasology/engine/logic/ai/AICommands.java @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.ai; +import com.google.common.collect.Iterables; import org.terasology.engine.entitySystem.entity.EntityManager; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.systems.BaseComponentSystem; @@ -9,8 +10,6 @@ import org.terasology.engine.logic.console.commandSystem.annotations.Command; import org.terasology.engine.registry.In; -import com.google.common.collect.Iterables; - /** * Artificial Intelligence commands for counting and destroying AIs used by entities with AI related components attached */ diff --git a/engine/src/main/java/org/terasology/engine/logic/ai/HierarchicalAIComponent.java b/engine/src/main/java/org/terasology/engine/logic/ai/HierarchicalAIComponent.java index 241f7f14a4d..886318dbec9 100644 --- a/engine/src/main/java/org/terasology/engine/logic/ai/HierarchicalAIComponent.java +++ b/engine/src/main/java/org/terasology/engine/logic/ai/HierarchicalAIComponent.java @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.ai; -import org.terasology.engine.entitySystem.Component; import org.joml.Vector3f; +import org.terasology.engine.entitySystem.Component; /** */ @@ -32,7 +32,7 @@ public final class HierarchicalAIComponent implements Component { public boolean dieIfPlayerFar = true; public int dieDistance = 2000; - //define type of AI + //define type of AI public boolean hunter; public boolean aggressive; public boolean wild; diff --git a/engine/src/main/java/org/terasology/engine/logic/ai/HierarchicalAISystem.java b/engine/src/main/java/org/terasology/engine/logic/ai/HierarchicalAISystem.java index 2ccdaad6bd3..286b53e1eea 100644 --- a/engine/src/main/java/org/terasology/engine/logic/ai/HierarchicalAISystem.java +++ b/engine/src/main/java/org/terasology/engine/logic/ai/HierarchicalAISystem.java @@ -14,9 +14,9 @@ import org.terasology.engine.entitySystem.systems.UpdateSubscriberSystem; import org.terasology.engine.logic.characters.CharacterMoveInputEvent; import org.terasology.engine.logic.characters.CharacterMovementComponent; +import org.terasology.engine.logic.characters.events.HorizontalCollisionEvent; import org.terasology.engine.logic.location.LocationComponent; import org.terasology.engine.logic.players.LocalPlayer; -import org.terasology.engine.logic.characters.events.HorizontalCollisionEvent; import org.terasology.engine.registry.In; import org.terasology.engine.utilities.random.FastRandom; import org.terasology.engine.utilities.random.Random; diff --git a/engine/src/main/java/org/terasology/engine/logic/ai/SimpleAIComponent.java b/engine/src/main/java/org/terasology/engine/logic/ai/SimpleAIComponent.java index 452cd9a6f4a..8ece04e188d 100644 --- a/engine/src/main/java/org/terasology/engine/logic/ai/SimpleAIComponent.java +++ b/engine/src/main/java/org/terasology/engine/logic/ai/SimpleAIComponent.java @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.ai; -import org.terasology.engine.entitySystem.Component; import org.joml.Vector3f; +import org.terasology.engine.entitySystem.Component; /** */ diff --git a/engine/src/main/java/org/terasology/engine/logic/ai/SimpleAISystem.java b/engine/src/main/java/org/terasology/engine/logic/ai/SimpleAISystem.java index d58d30b0229..e2865520fe4 100644 --- a/engine/src/main/java/org/terasology/engine/logic/ai/SimpleAISystem.java +++ b/engine/src/main/java/org/terasology/engine/logic/ai/SimpleAISystem.java @@ -14,9 +14,9 @@ import org.terasology.engine.entitySystem.systems.UpdateSubscriberSystem; import org.terasology.engine.logic.characters.CharacterMoveInputEvent; import org.terasology.engine.logic.characters.CharacterMovementComponent; +import org.terasology.engine.logic.characters.events.HorizontalCollisionEvent; import org.terasology.engine.logic.location.LocationComponent; import org.terasology.engine.logic.players.LocalPlayer; -import org.terasology.engine.logic.characters.events.HorizontalCollisionEvent; import org.terasology.engine.registry.In; import org.terasology.engine.utilities.random.FastRandom; import org.terasology.engine.utilities.random.Random; diff --git a/engine/src/main/java/org/terasology/engine/logic/ai/package-info.java b/engine/src/main/java/org/terasology/engine/logic/ai/package-info.java index 138aab2f9b2..99ced52762d 100644 --- a/engine/src/main/java/org/terasology/engine/logic/ai/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/ai/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.ai; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/autoCreate/AutoCreateComponent.java b/engine/src/main/java/org/terasology/engine/logic/autoCreate/AutoCreateComponent.java index a299601fe2f..f06bc369625 100644 --- a/engine/src/main/java/org/terasology/engine/logic/autoCreate/AutoCreateComponent.java +++ b/engine/src/main/java/org/terasology/engine/logic/autoCreate/AutoCreateComponent.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.autoCreate; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.entitySystem.Component; /** diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorAction.java b/engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorAction.java index 5591224c7bd..356332ce294 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorAction.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorAction.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.behavior; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorComponent.java b/engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorComponent.java index 566f1c3ead1..79fece522cb 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorComponent.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorComponent.java @@ -4,7 +4,7 @@ import org.terasology.engine.entitySystem.Component; import org.terasology.engine.logic.behavior.asset.BehaviorTree; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Entities with this component are handled by a behavior tree. Default tree to fetch may be set. diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorSystem.java b/engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorSystem.java index ebd7a3a792f..15da16fae1e 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorSystem.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/BehaviorSystem.java @@ -5,8 +5,7 @@ import com.google.common.collect.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.paths.PathManager; import org.terasology.engine.entitySystem.entity.EntityManager; import org.terasology.engine.entitySystem.entity.EntityRef; @@ -23,7 +22,8 @@ import org.terasology.engine.logic.behavior.asset.BehaviorTreeFormat; import org.terasology.engine.logic.behavior.core.Actor; import org.terasology.engine.logic.behavior.core.BehaviorNode; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.registry.In; import org.terasology.engine.registry.Share; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveBehaviorComponent.java b/engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveBehaviorComponent.java index 228c3773051..160c47d361a 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveBehaviorComponent.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveBehaviorComponent.java @@ -4,7 +4,7 @@ import org.terasology.engine.entitySystem.Component; import org.terasology.engine.logic.behavior.asset.BehaviorTree; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Entities with this component are handled by a behavior tree. Default tree to fetch may be set. diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveBehaviorSystem.java b/engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveBehaviorSystem.java index 1d5303ba96e..3ffa75213d8 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveBehaviorSystem.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveBehaviorSystem.java @@ -5,8 +5,8 @@ import com.google.common.collect.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.audio.StaticSound; import org.terasology.engine.core.paths.PathManager; import org.terasology.engine.entitySystem.entity.EntityManager; @@ -24,7 +24,7 @@ import org.terasology.engine.logic.behavior.asset.BehaviorTreeFormat; import org.terasology.engine.logic.behavior.core.Actor; import org.terasology.engine.logic.behavior.core.BehaviorNode; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.registry.In; import org.terasology.engine.registry.Share; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveInterpreter.java b/engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveInterpreter.java index dba243f0e1b..c34d2f6fec1 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveInterpreter.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/CollectiveInterpreter.java @@ -6,7 +6,7 @@ import org.terasology.engine.logic.behavior.core.Actor; import org.terasology.engine.logic.behavior.core.CollectiveBehaviorTreeRunner; import org.terasology.engine.logic.common.DisplayNameComponent; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.util.Set; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/Interpreter.java b/engine/src/main/java/org/terasology/engine/logic/behavior/Interpreter.java index 3090cdce50b..848df2fba86 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/Interpreter.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/Interpreter.java @@ -6,7 +6,7 @@ import org.terasology.engine.logic.behavior.core.Actor; import org.terasology.engine.logic.behavior.core.BehaviorTreeRunner; import org.terasology.engine.logic.common.DisplayNameComponent; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * An interpreter evaluates a behavior tree. Uses BehaviorTreeRunner to actually evaluate the tree. The runner diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/CounterAction.java b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/CounterAction.java index d71a3bc844c..c9fb23f167e 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/CounterAction.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/CounterAction.java @@ -6,7 +6,7 @@ import org.terasology.engine.logic.behavior.core.Actor; import org.terasology.engine.logic.behavior.core.BaseAction; import org.terasology.engine.logic.behavior.core.BehaviorState; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.nui.properties.Range; /** diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/InvertAction.java b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/InvertAction.java index e2c32a459c7..5846287ebee 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/InvertAction.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/InvertAction.java @@ -6,7 +6,7 @@ import org.terasology.engine.logic.behavior.core.Actor; import org.terasology.engine.logic.behavior.core.BaseAction; import org.terasology.engine.logic.behavior.core.BehaviorState; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Inverts the child's return value. Doesn't change RUNNING. diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/LookupAction.java b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/LookupAction.java index 87a9da9f9bb..7d7001357c7 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/LookupAction.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/LookupAction.java @@ -8,7 +8,7 @@ import org.terasology.engine.logic.behavior.core.BaseAction; import org.terasology.engine.logic.behavior.core.BehaviorNode; import org.terasology.engine.logic.behavior.core.BehaviorState; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.nui.properties.OneOf; /** diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/LoopAction.java b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/LoopAction.java index 777210eb46e..e5bdd81bb66 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/LoopAction.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/LoopAction.java @@ -6,7 +6,7 @@ import org.terasology.engine.logic.behavior.core.Actor; import org.terasology.engine.logic.behavior.core.BaseAction; import org.terasology.engine.logic.behavior.core.BehaviorState; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Node, that loops its child forever diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/SleepAction.java b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/SleepAction.java index fbdc0fba999..e72d6e1468c 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/SleepAction.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/SleepAction.java @@ -6,7 +6,7 @@ import org.terasology.engine.logic.behavior.core.Actor; import org.terasology.engine.logic.behavior.core.BaseAction; import org.terasology.engine.logic.behavior.core.BehaviorState; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.nui.properties.Range; /** diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/TimeoutAction.java b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/TimeoutAction.java index 870e3937c6b..332bce5df38 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/TimeoutAction.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/TimeoutAction.java @@ -8,7 +8,7 @@ import org.terasology.engine.logic.behavior.core.Actor; import org.terasology.engine.logic.behavior.core.BaseAction; import org.terasology.engine.logic.behavior.core.BehaviorState; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.nui.properties.Range; /** diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/package-info.java b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/package-info.java index a450c90b3d2..9dcc4acf620 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/actions/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/actions/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.behavior.actions; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTree.java b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTree.java index b43806266fa..6702766133d 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTree.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTree.java @@ -2,11 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.behavior.asset; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.logic.behavior.core.BehaviorNode; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Behavior tree asset. Can be loaded and saved into json. Actors should never run the nodes behind a asset directly. diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTreeData.java b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTreeData.java index b46f99c1cd5..8ecf960f86c 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTreeData.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTreeData.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.behavior.asset; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import org.terasology.engine.logic.behavior.core.BehaviorNode; /** diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTreeFormat.java b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTreeFormat.java index aa3b7e859f9..e86669e61a7 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTreeFormat.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/BehaviorTreeFormat.java @@ -5,13 +5,13 @@ import com.google.common.base.Charsets; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.logic.behavior.core.BehaviorNode; import org.terasology.engine.logic.behavior.core.BehaviorTreeBuilder; import org.terasology.engine.registry.CoreRegistry; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import java.io.IOException; import java.io.InputStream; @@ -32,7 +32,6 @@ public class BehaviorTreeFormat extends AbstractAssetFileFormat list) throws IOException { BehaviorTreeBuilder builder = CoreRegistry.get(BehaviorTreeBuilder.class); @@ -59,9 +57,6 @@ public BehaviorTreeData load(ResourceUrn resourceUrn, List list) } - - - public BehaviorTreeData load(InputStream stream) { BehaviorTreeBuilder builder = CoreRegistry.get(BehaviorTreeBuilder.class); diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/Group.java b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/Group.java index 1c850ba58e1..bbd4a2cf682 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/Group.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/Group.java @@ -2,10 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.behavior.asset; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.module.annotations.RegisterAssetType; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetType; /** * The main Group asset class. This is the reference type diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupBuilder.java b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupBuilder.java index 6ad794fb93a..70f5366ad90 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupBuilder.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupBuilder.java @@ -5,7 +5,7 @@ import com.google.gson.Gson; import com.google.gson.JsonIOException; import com.google.gson.JsonSyntaxException; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.registry.In; import java.io.InputStream; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupData.java b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupData.java index db5e7ad4d19..f40cd076f1b 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupData.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupData.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.behavior.asset; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; /** * Every Group asset is described by a GroupData class. diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupFactory.java b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupFactory.java index f632a77d56c..73f628ec090 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupFactory.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupFactory.java @@ -2,9 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.behavior.asset; -import org.terasology.assets.AssetFactory; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.AssetFactory; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; /** * Factory class used to assist the creation diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupFormat.java b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupFormat.java index 0a5f568b0d6..1b6459e5fb9 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupFormat.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/GroupFormat.java @@ -2,11 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.behavior.asset; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; import org.terasology.engine.registry.CoreRegistry; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import java.io.IOException; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/package-info.java b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/package-info.java index 335972da493..14438185b6d 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/asset/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/asset/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.behavior.asset; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/core/Action.java b/engine/src/main/java/org/terasology/engine/logic/behavior/core/Action.java index 8a14d0c6bea..640cd66a4b9 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/core/Action.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/core/Action.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.behavior.core; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * The action that is used by an action or decorator node. Every action node of a behavior tree has its own action diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/core/Actor.java b/engine/src/main/java/org/terasology/engine/logic/behavior/core/Actor.java index eddbfcba9a2..d1fb89d8144 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/core/Actor.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/core/Actor.java @@ -5,14 +5,14 @@ import com.google.common.collect.Maps; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.ComponentFieldUri; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.metadata.ComponentLibrary; import org.terasology.engine.entitySystem.metadata.ComponentMetadata; import org.terasology.engine.entitySystem.metadata.EntitySystemLibrary; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.reflection.metadata.FieldMetadata; import org.terasology.engine.registry.CoreRegistry; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/core/BaseAction.java b/engine/src/main/java/org/terasology/engine/logic/behavior/core/BaseAction.java index 64e5fd802b4..b46b5c3c288 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/core/BaseAction.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/core/BaseAction.java @@ -3,7 +3,7 @@ package org.terasology.engine.logic.behavior.core; import org.terasology.engine.logic.behavior.BehaviorAction; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * BaseAction that uses BehaviorAction annotation as its name. diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/core/BehaviorTreeBuilder.java b/engine/src/main/java/org/terasology/engine/logic/behavior/core/BehaviorTreeBuilder.java index c020d98c85e..23cffb128b9 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/core/BehaviorTreeBuilder.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/core/BehaviorTreeBuilder.java @@ -21,15 +21,15 @@ import org.apache.commons.codec.Charsets; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.engine.logic.behavior.asset.BehaviorTree; import org.terasology.engine.logic.behavior.BehaviorAction; -import org.terasology.module.ModuleEnvironment; +import org.terasology.engine.logic.behavior.asset.BehaviorTree; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.registry.InjectionHelper; import org.terasology.engine.utilities.gson.UriTypeAdapterFactory; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.module.ModuleEnvironment; import java.io.IOException; import java.io.InputStream; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/core/package-info.java b/engine/src/main/java/org/terasology/engine/logic/behavior/core/package-info.java index 7a0d6349284..987f21fa31b 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/core/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/core/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.behavior.core; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/nui/BehaviorNodeComponent.java b/engine/src/main/java/org/terasology/engine/logic/behavior/nui/BehaviorNodeComponent.java index d8d4633b07e..d1f92392906 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/nui/BehaviorNodeComponent.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/nui/BehaviorNodeComponent.java @@ -3,7 +3,7 @@ package org.terasology.engine.logic.behavior.nui; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.nui.Color; /** diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/nui/BehaviorNodeFactory.java b/engine/src/main/java/org/terasology/engine/logic/behavior/nui/BehaviorNodeFactory.java index 0bab2056b48..cc6e824b39c 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/nui/BehaviorNodeFactory.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/nui/BehaviorNodeFactory.java @@ -4,8 +4,8 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.audio.StaticSound; import org.terasology.engine.audio.StreamingSound; import org.terasology.engine.core.ComponentFieldUri; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/nui/package-info.java b/engine/src/main/java/org/terasology/engine/logic/behavior/nui/package-info.java index 5862f9a9648..e23ba73a7e9 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/nui/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/nui/package-info.java @@ -6,5 +6,5 @@ displayName = "${engine:menu#category-behavior}" ) package org.terasology.engine.logic.behavior.nui; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.input.InputCategory; diff --git a/engine/src/main/java/org/terasology/engine/logic/behavior/package-info.java b/engine/src/main/java/org/terasology/engine/logic/behavior/package-info.java index e9f891ac4b1..9e0d426973e 100644 --- a/engine/src/main/java/org/terasology/engine/logic/behavior/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/behavior/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.behavior; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/characters/VisualCharacterSystem.java b/engine/src/main/java/org/terasology/engine/logic/characters/VisualCharacterSystem.java index d3460c2c17a..b659a130258 100644 --- a/engine/src/main/java/org/terasology/engine/logic/characters/VisualCharacterSystem.java +++ b/engine/src/main/java/org/terasology/engine/logic/characters/VisualCharacterSystem.java @@ -4,7 +4,7 @@ import org.joml.Quaternionf; import org.joml.Vector3f; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.core.modes.loadProcesses.AwaitedLocalCharacterSpawnEvent; import org.terasology.engine.entitySystem.entity.EntityBuilder; import org.terasology.engine.entitySystem.entity.EntityManager; diff --git a/engine/src/main/java/org/terasology/engine/logic/characters/events/package-info.java b/engine/src/main/java/org/terasology/engine/logic/characters/events/package-info.java index 214808ad098..1b6b10cefff 100644 --- a/engine/src/main/java/org/terasology/engine/logic/characters/events/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/characters/events/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.characters.events; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionEndPredicted.java b/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionEndPredicted.java index 3e3473b72de..1969229ea66 100644 --- a/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionEndPredicted.java +++ b/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionEndPredicted.java @@ -4,7 +4,7 @@ import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.event.Event; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * diff --git a/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionScreenComponent.java b/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionScreenComponent.java index ed3ec4ecb11..856556022bf 100644 --- a/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionScreenComponent.java +++ b/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionScreenComponent.java @@ -3,7 +3,7 @@ package org.terasology.engine.logic.characters.interactions; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Entities with this component will show an UI during interactions. diff --git a/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionStartPredicted.java b/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionStartPredicted.java index 20c9d41e785..60a2c8002e7 100644 --- a/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionStartPredicted.java +++ b/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionStartPredicted.java @@ -4,7 +4,7 @@ import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.event.Event; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Sent to the client by itself at the start of an interaction between a character and a target. diff --git a/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionSystem.java b/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionSystem.java index dd430bf6f80..0f748cc18ee 100644 --- a/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionSystem.java +++ b/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionSystem.java @@ -4,7 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.event.ReceiveEvent; import org.terasology.engine.entitySystem.systems.BaseComponentSystem; diff --git a/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionUtil.java b/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionUtil.java index b27cd564075..028c31c134e 100644 --- a/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionUtil.java +++ b/engine/src/main/java/org/terasology/engine/logic/characters/interactions/InteractionUtil.java @@ -5,10 +5,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.logic.characters.CharacterComponent; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Utility class for entities with the {@link CharacterComponent}. diff --git a/engine/src/main/java/org/terasology/engine/logic/characters/package-info.java b/engine/src/main/java/org/terasology/engine/logic/characters/package-info.java index 03f33261e91..e2e6f727604 100644 --- a/engine/src/main/java/org/terasology/engine/logic/characters/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/characters/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.characters; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/chat/ChatSystem.java b/engine/src/main/java/org/terasology/engine/logic/chat/ChatSystem.java index bd0420d17c6..607a3120313 100644 --- a/engine/src/main/java/org/terasology/engine/logic/chat/ChatSystem.java +++ b/engine/src/main/java/org/terasology/engine/logic/chat/ChatSystem.java @@ -5,12 +5,12 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.entitySystem.entity.EntityManager; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.event.ReceiveEvent; import org.terasology.engine.entitySystem.systems.BaseComponentSystem; import org.terasology.engine.entitySystem.systems.RegisterSystem; +import org.terasology.engine.input.binds.general.ChatButton; import org.terasology.engine.logic.common.DisplayNameComponent; import org.terasology.engine.logic.console.ConsoleColors; import org.terasology.engine.logic.console.CoreMessageType; @@ -21,13 +21,13 @@ import org.terasology.engine.logic.console.commandSystem.annotations.Sender; import org.terasology.engine.logic.console.suggesters.OnlineUsernameSuggester; import org.terasology.engine.logic.console.ui.NotificationOverlay; -import org.terasology.input.ButtonState; -import org.terasology.engine.input.binds.general.ChatButton; import org.terasology.engine.logic.permission.PermissionManager; import org.terasology.engine.network.ClientComponent; -import org.terasology.nui.FontColor; import org.terasology.engine.registry.In; import org.terasology.engine.rendering.nui.NUIManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.input.ButtonState; +import org.terasology.nui.FontColor; import java.util.Arrays; diff --git a/engine/src/main/java/org/terasology/engine/logic/chat/package-info.java b/engine/src/main/java/org/terasology/engine/logic/chat/package-info.java index 6895670aa06..f409e7e7e6a 100644 --- a/engine/src/main/java/org/terasology/engine/logic/chat/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/chat/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.chat; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/clipboard/ClipboardManager.java b/engine/src/main/java/org/terasology/engine/logic/clipboard/ClipboardManager.java index 43d85d95fd6..83a6e609e37 100644 --- a/engine/src/main/java/org/terasology/engine/logic/clipboard/ClipboardManager.java +++ b/engine/src/main/java/org/terasology/engine/logic/clipboard/ClipboardManager.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.clipboard; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; @API // Temporarily in base permission set, until fixed - (permissionSet = "clipboard") public interface ClipboardManager { diff --git a/engine/src/main/java/org/terasology/engine/logic/common/ActivateEvent.java b/engine/src/main/java/org/terasology/engine/logic/common/ActivateEvent.java index 8aeb18b596f..e5e56c43947 100644 --- a/engine/src/main/java/org/terasology/engine/logic/common/ActivateEvent.java +++ b/engine/src/main/java/org/terasology/engine/logic/common/ActivateEvent.java @@ -5,8 +5,8 @@ import org.joml.Vector3f; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.event.AbstractConsumableEvent; -import org.terasology.engine.logic.location.LocationComponent; import org.terasology.engine.logic.characters.events.ActivationRequest; +import org.terasology.engine.logic.location.LocationComponent; /** */ diff --git a/engine/src/main/java/org/terasology/engine/logic/common/lifespan/package-info.java b/engine/src/main/java/org/terasology/engine/logic/common/lifespan/package-info.java index 2aec71cfce0..31cf6e37305 100644 --- a/engine/src/main/java/org/terasology/engine/logic/common/lifespan/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/common/lifespan/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.common.lifespan; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/common/package-info.java b/engine/src/main/java/org/terasology/engine/logic/common/package-info.java index 634ce455225..9b73e16c5dd 100644 --- a/engine/src/main/java/org/terasology/engine/logic/common/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/common/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.common; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/config/ModuleConfigManager.java b/engine/src/main/java/org/terasology/engine/logic/config/ModuleConfigManager.java index 82298d51a3c..dfb1a51b327 100644 --- a/engine/src/main/java/org/terasology/engine/logic/config/ModuleConfigManager.java +++ b/engine/src/main/java/org/terasology/engine/logic/config/ModuleConfigManager.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.config; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; @API public interface ModuleConfigManager { diff --git a/engine/src/main/java/org/terasology/engine/logic/console/CommandEvent.java b/engine/src/main/java/org/terasology/engine/logic/console/CommandEvent.java index 5e8841a32ab..091bdc6d809 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/CommandEvent.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/CommandEvent.java @@ -3,7 +3,7 @@ package org.terasology.engine.logic.console; import org.terasology.engine.entitySystem.event.Event; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.network.ServerEvent; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/Console.java b/engine/src/main/java/org/terasology/engine/logic/console/Console.java index da4c169e976..ed908ef0d11 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/Console.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/Console.java @@ -4,7 +4,7 @@ import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.logic.console.commandSystem.ConsoleCommand; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import java.util.Collection; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/ConsoleImpl.java b/engine/src/main/java/org/terasology/engine/logic/console/ConsoleImpl.java index f96a6a91995..c4bd35e7b9c 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/ConsoleImpl.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/ConsoleImpl.java @@ -17,7 +17,7 @@ import org.terasology.engine.logic.console.commandSystem.ConsoleCommand; import org.terasology.engine.logic.console.commandSystem.exceptions.CommandExecutionException; import org.terasology.engine.logic.permission.PermissionManager; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.network.ClientComponent; import org.terasology.engine.network.NetworkSystem; import org.terasology.nui.FontColor; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/AbstractCommand.java b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/AbstractCommand.java index bc03869248d..36040ff46f3 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/AbstractCommand.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/AbstractCommand.java @@ -15,7 +15,7 @@ import org.terasology.engine.logic.console.commandSystem.exceptions.CommandParameterParseException; import org.terasology.engine.logic.console.commandSystem.exceptions.CommandSuggestionException; import org.terasology.engine.logic.permission.PermissionManager; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.utilities.reflection.SpecificAccessibleObject; import java.lang.reflect.InvocationTargetException; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/CommandParameterSuggester.java b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/CommandParameterSuggester.java index ce5081722ee..a864aa6bb45 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/CommandParameterSuggester.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/CommandParameterSuggester.java @@ -3,7 +3,7 @@ package org.terasology.engine.logic.console.commandSystem; import org.terasology.engine.entitySystem.entity.EntityRef; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.util.Set; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/ConsoleCommand.java b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/ConsoleCommand.java index 64c9b59d1d8..a8052121afe 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/ConsoleCommand.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/ConsoleCommand.java @@ -7,8 +7,8 @@ import org.terasology.engine.logic.console.Console; import org.terasology.engine.logic.console.commandSystem.exceptions.CommandExecutionException; import org.terasology.engine.logic.console.commandSystem.exceptions.CommandSuggestionException; -import org.terasology.module.sandbox.API; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; import java.util.Comparator; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/MethodCommand.java b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/MethodCommand.java index e3aa7aa4148..3a22ecb9eb7 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/MethodCommand.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/MethodCommand.java @@ -14,7 +14,7 @@ import org.terasology.engine.logic.console.commandSystem.annotations.CommandParam; import org.terasology.engine.logic.console.commandSystem.annotations.Sender; import org.terasology.engine.logic.console.Console; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.registry.InjectionHelper; import org.terasology.engine.utilities.reflection.SpecificAccessibleObject; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/adapter/NameAdapter.java b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/adapter/NameAdapter.java index 0fe69a2013b..ef5d6dd7cbd 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/adapter/NameAdapter.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/adapter/NameAdapter.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.console.commandSystem.adapter; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; /** */ diff --git a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/adapter/ParameterAdapter.java b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/adapter/ParameterAdapter.java index 7341f816d0d..75e11983b97 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/adapter/ParameterAdapter.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/adapter/ParameterAdapter.java @@ -3,7 +3,7 @@ package org.terasology.engine.logic.console.commandSystem.adapter; import org.terasology.engine.logic.console.commandSystem.AbstractCommand; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Used for providing parameters to {@code execute} and {@code suggest} methods of {@link AbstractCommand} diff --git a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/adapter/ParameterAdapterManager.java b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/adapter/ParameterAdapterManager.java index 8bebc81b567..6bd383e5abc 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/adapter/ParameterAdapterManager.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/adapter/ParameterAdapterManager.java @@ -5,8 +5,8 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Maps; import org.terasology.engine.entitySystem.prefab.Prefab; -import org.terasology.module.sandbox.API; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.world.block.family.BlockFamily; import java.util.Map; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/annotations/package-info.java b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/annotations/package-info.java index 11047f9745f..75a348a2a07 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/annotations/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/commandSystem/annotations/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.console.commandSystem.annotations; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/commands/CoreCommands.java b/engine/src/main/java/org/terasology/engine/logic/console/commands/CoreCommands.java index dc2bc8579ff..3c02d7e808d 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/commands/CoreCommands.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/commands/CoreCommands.java @@ -5,8 +5,6 @@ import com.google.common.collect.Ordering; import com.google.common.collect.Streams; import org.joml.Vector3f; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; import org.terasology.engine.config.SystemConfig; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.SimpleUri; @@ -27,6 +25,8 @@ import org.terasology.engine.entitySystem.systems.RegisterSystem; import org.terasology.engine.i18n.TranslationProject; import org.terasology.engine.i18n.TranslationSystem; +import org.terasology.engine.logic.console.Console; +import org.terasology.engine.logic.console.ConsoleColors; import org.terasology.engine.logic.console.commandSystem.ConsoleCommand; import org.terasology.engine.logic.console.commandSystem.annotations.Command; import org.terasology.engine.logic.console.commandSystem.annotations.CommandParam; @@ -36,20 +36,14 @@ import org.terasology.engine.logic.console.suggesters.SkinSuggester; import org.terasology.engine.logic.inventory.events.DropItemEvent; import org.terasology.engine.logic.location.LocationComponent; -import org.terasology.engine.logic.console.Console; -import org.terasology.engine.logic.console.ConsoleColors; import org.terasology.engine.logic.permission.PermissionManager; import org.terasology.engine.math.Direction; -import org.terasology.naming.Name; import org.terasology.engine.network.ClientComponent; import org.terasology.engine.network.JoinStatus; import org.terasology.engine.network.NetworkMode; import org.terasology.engine.network.NetworkSystem; import org.terasology.engine.network.PingService; import org.terasology.engine.network.Server; -import org.terasology.nui.FontColor; -import org.terasology.nui.asset.UIElement; -import org.terasology.nui.skin.UISkin; import org.terasology.engine.persistence.WorldDumper; import org.terasology.engine.persistence.serializers.PrefabSerializer; import org.terasology.engine.registry.In; @@ -66,6 +60,11 @@ import org.terasology.engine.world.block.family.BlockFamily; import org.terasology.engine.world.block.items.BlockItemFactory; import org.terasology.engine.world.block.loader.BlockFamilyDefinition; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.naming.Name; +import org.terasology.nui.FontColor; +import org.terasology.nui.asset.UIElement; import org.terasology.nui.skin.UISkinAsset; import java.io.IOException; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/package-info.java b/engine/src/main/java/org/terasology/engine/logic/console/package-info.java index b1b1edf6c11..6336394652e 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.console; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/AssetSuggester.java b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/AssetSuggester.java index fce9c97303c..3fe325f7095 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/AssetSuggester.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/AssetSuggester.java @@ -4,9 +4,9 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import org.terasology.assets.Asset; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.logic.console.commandSystem.CommandParameterSuggester; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/BlockFamilySuggester.java b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/BlockFamilySuggester.java index 17ec9011f15..8755c95f3b0 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/BlockFamilySuggester.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/BlockFamilySuggester.java @@ -3,8 +3,8 @@ package org.terasology.engine.logic.console.suggesters; import com.google.common.collect.Sets; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.logic.console.commandSystem.CommandParameterSuggester; import org.terasology.engine.world.block.loader.BlockFamilyDefinition; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/CommandNameSuggester.java b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/CommandNameSuggester.java index 0a301d6123b..658f803954d 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/CommandNameSuggester.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/CommandNameSuggester.java @@ -7,7 +7,7 @@ import org.terasology.engine.logic.console.commandSystem.CommandParameterSuggester; import org.terasology.engine.logic.console.commandSystem.ConsoleCommand; import org.terasology.engine.logic.console.Console; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import java.util.Collection; import java.util.Set; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/PrefabSuggester.java b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/PrefabSuggester.java index ece0d5215cb..26d20622a5b 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/PrefabSuggester.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/PrefabSuggester.java @@ -3,7 +3,7 @@ package org.terasology.engine.logic.console.suggesters; import com.google.common.collect.Sets; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.logic.console.commandSystem.CommandParameterSuggester; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/ScreenSuggester.java b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/ScreenSuggester.java index cf48e204132..16fa65c879a 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/ScreenSuggester.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/ScreenSuggester.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.console.suggesters; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.nui.asset.UIElement; public final class ScreenSuggester extends AssetSuggester { diff --git a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/SkinSuggester.java b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/SkinSuggester.java index fcfa42e7617..5f3b2025ef3 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/SkinSuggester.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/SkinSuggester.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.console.suggesters; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.nui.skin.UISkinAsset; public final class SkinSuggester extends AssetSuggester { diff --git a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/package-info.java b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/package-info.java index 0b3fdaea250..0917995b4d3 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/suggesters/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/suggesters/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.console.suggesters; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/ui/ChatScreen.java b/engine/src/main/java/org/terasology/engine/logic/console/ui/ChatScreen.java index 433eb669df0..5c125365346 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/ui/ChatScreen.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/ui/ChatScreen.java @@ -8,7 +8,7 @@ import org.terasology.engine.logic.console.Console; import org.terasology.engine.logic.console.CoreMessageType; import org.terasology.engine.logic.console.Message; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.BaseInteractionListener; import org.terasology.nui.InteractionListener; import org.terasology.engine.registry.In; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/ui/CyclingTabCompletionEngine.java b/engine/src/main/java/org/terasology/engine/logic/console/ui/CyclingTabCompletionEngine.java index 7eb37cf9a72..9565ca1ef00 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/ui/CyclingTabCompletionEngine.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/ui/CyclingTabCompletionEngine.java @@ -13,7 +13,7 @@ import org.terasology.engine.logic.console.ConsoleColors; import org.terasology.engine.logic.console.CoreMessageType; import org.terasology.engine.logic.console.Message; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.FontColor; import org.terasology.engine.utilities.CamelCaseMatcher; diff --git a/engine/src/main/java/org/terasology/engine/logic/console/ui/NotificationOverlay.java b/engine/src/main/java/org/terasology/engine/logic/console/ui/NotificationOverlay.java index 78f3da3d6f0..1dbdcd75897 100644 --- a/engine/src/main/java/org/terasology/engine/logic/console/ui/NotificationOverlay.java +++ b/engine/src/main/java/org/terasology/engine/logic/console/ui/NotificationOverlay.java @@ -4,7 +4,7 @@ import com.google.common.collect.Iterables; import org.codehaus.plexus.util.StringUtils; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.logic.console.Console; import org.terasology.engine.logic.console.CoreMessageType; import org.terasology.engine.logic.console.Message; diff --git a/engine/src/main/java/org/terasology/engine/logic/debug/MovementDebugCommands.java b/engine/src/main/java/org/terasology/engine/logic/debug/MovementDebugCommands.java index 05f610ecd35..a64c4c1128f 100644 --- a/engine/src/main/java/org/terasology/engine/logic/debug/MovementDebugCommands.java +++ b/engine/src/main/java/org/terasology/engine/logic/debug/MovementDebugCommands.java @@ -6,7 +6,6 @@ import org.joml.Vector3f; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.entitySystem.entity.EntityManager; import org.terasology.engine.entitySystem.entity.EntityRef; @@ -16,22 +15,23 @@ import org.terasology.engine.logic.characters.CharacterImpulseEvent; import org.terasology.engine.logic.characters.CharacterMovementComponent; import org.terasology.engine.logic.characters.CharacterTeleportEvent; +import org.terasology.engine.logic.characters.GazeMountPointComponent; import org.terasology.engine.logic.characters.MovementMode; +import org.terasology.engine.logic.characters.events.ScaleToRequest; +import org.terasology.engine.logic.characters.events.SetMovementModeEvent; import org.terasology.engine.logic.common.DisplayNameComponent; import org.terasology.engine.logic.console.commandSystem.annotations.Command; import org.terasology.engine.logic.console.commandSystem.annotations.CommandParam; import org.terasology.engine.logic.console.commandSystem.annotations.Sender; import org.terasology.engine.logic.location.Location; import org.terasology.engine.logic.location.LocationComponent; -import org.terasology.engine.logic.characters.GazeMountPointComponent; -import org.terasology.engine.logic.characters.events.ScaleToRequest; -import org.terasology.engine.logic.characters.events.SetMovementModeEvent; import org.terasology.engine.logic.permission.PermissionManager; import org.terasology.engine.network.ClientComponent; import org.terasology.engine.physics.engine.PhysicsEngine; import org.terasology.engine.registry.In; import org.terasology.engine.registry.Share; import org.terasology.engine.utilities.Assets; +import org.terasology.gestalt.assets.ResourceUrn; import java.util.Optional; diff --git a/engine/src/main/java/org/terasology/engine/logic/delay/package-info.java b/engine/src/main/java/org/terasology/engine/logic/delay/package-info.java index 332fe3c5f5b..cac41d224af 100644 --- a/engine/src/main/java/org/terasology/engine/logic/delay/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/delay/package-info.java @@ -2,4 +2,4 @@ // SPDX-License-Identifier: Apache-2.0 @API package org.terasology.engine.logic.delay; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/health/EngineDamageTypes.java b/engine/src/main/java/org/terasology/engine/logic/health/EngineDamageTypes.java index bd3f9e2234f..5c55dc6a513 100644 --- a/engine/src/main/java/org/terasology/engine/logic/health/EngineDamageTypes.java +++ b/engine/src/main/java/org/terasology/engine/logic/health/EngineDamageTypes.java @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.logic.health; -import org.terasology.engine.utilities.Assets; import org.terasology.engine.entitySystem.prefab.Prefab; +import org.terasology.engine.utilities.Assets; /** * Helper enum for getting engine damage type prefabs. diff --git a/engine/src/main/java/org/terasology/engine/logic/health/package-info.java b/engine/src/main/java/org/terasology/engine/logic/health/package-info.java index 3cf79c3c104..cb9bdf71d40 100644 --- a/engine/src/main/java/org/terasology/engine/logic/health/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/health/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.health; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/inventory/events/package-info.java b/engine/src/main/java/org/terasology/engine/logic/inventory/events/package-info.java index 3df20f313ab..856707bcbd9 100644 --- a/engine/src/main/java/org/terasology/engine/logic/inventory/events/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/inventory/events/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.inventory.events; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/inventory/package-info.java b/engine/src/main/java/org/terasology/engine/logic/inventory/package-info.java index 51535c7efc9..e6cc4f76a6a 100644 --- a/engine/src/main/java/org/terasology/engine/logic/inventory/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/inventory/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.inventory; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/location/package-info.java b/engine/src/main/java/org/terasology/engine/logic/location/package-info.java index f2b136903fe..ea4fcf1ea0e 100644 --- a/engine/src/main/java/org/terasology/engine/logic/location/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/location/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.location; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/nameTags/NameTagComponent.java b/engine/src/main/java/org/terasology/engine/logic/nameTags/NameTagComponent.java index 30f7781bb27..565a3aa6192 100644 --- a/engine/src/main/java/org/terasology/engine/logic/nameTags/NameTagComponent.java +++ b/engine/src/main/java/org/terasology/engine/logic/nameTags/NameTagComponent.java @@ -4,7 +4,7 @@ import org.terasology.engine.entitySystem.Component; import org.terasology.engine.logic.common.DisplayNameComponent; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.network.Replicate; import org.terasology.nui.Color; diff --git a/engine/src/main/java/org/terasology/engine/logic/notifications/NotificationMessageEvent.java b/engine/src/main/java/org/terasology/engine/logic/notifications/NotificationMessageEvent.java index a23e074917a..2cac9da1511 100644 --- a/engine/src/main/java/org/terasology/engine/logic/notifications/NotificationMessageEvent.java +++ b/engine/src/main/java/org/terasology/engine/logic/notifications/NotificationMessageEvent.java @@ -8,7 +8,7 @@ import org.terasology.engine.logic.console.Message; import org.terasology.engine.logic.console.MessageEvent; import org.terasology.engine.logic.players.PlayerUtil; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.network.OwnerEvent; /** @@ -28,16 +28,16 @@ public NotificationMessageEvent(String message, EntityRef from) { this.message = message; this.from = from; } - + public static NotificationMessageEvent newJoinEvent(EntityRef client) { String playerName = PlayerUtil.getColoredPlayerName(client); - + return new NotificationMessageEvent("Player \"" + playerName + "\" has joined the game", client); } - + public static NotificationMessageEvent newLeaveEvent(EntityRef client) { String playerName = PlayerUtil.getColoredPlayerName(client); - + return new NotificationMessageEvent("Player \"" + playerName + "\" has left the game", client); } @@ -48,7 +48,7 @@ public String getMessage() { public EntityRef getFrom() { return from; } - + @Override public Message getFormattedMessage() { return new Message(message, CoreMessageType.NOTIFICATION); diff --git a/engine/src/main/java/org/terasology/engine/logic/permission/PermissionManager.java b/engine/src/main/java/org/terasology/engine/logic/permission/PermissionManager.java index de3c8acc2da..9047a26451d 100644 --- a/engine/src/main/java/org/terasology/engine/logic/permission/PermissionManager.java +++ b/engine/src/main/java/org/terasology/engine/logic/permission/PermissionManager.java @@ -4,7 +4,7 @@ import com.google.common.base.Predicate; import org.terasology.engine.entitySystem.entity.EntityRef; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; @API public interface PermissionManager { diff --git a/engine/src/main/java/org/terasology/engine/logic/players/CameraClientSystem.java b/engine/src/main/java/org/terasology/engine/logic/players/CameraClientSystem.java index eb464e2cfbd..0a9ef0a7aad 100644 --- a/engine/src/main/java/org/terasology/engine/logic/players/CameraClientSystem.java +++ b/engine/src/main/java/org/terasology/engine/logic/players/CameraClientSystem.java @@ -15,12 +15,12 @@ import org.terasology.engine.entitySystem.systems.RegisterMode; import org.terasology.engine.entitySystem.systems.RegisterSystem; import org.terasology.engine.logic.characters.GazeAuthoritySystem; +import org.terasology.engine.logic.console.commandSystem.annotations.Command; import org.terasology.engine.logic.location.Location; import org.terasology.engine.logic.location.LocationComponent; +import org.terasology.engine.logic.permission.PermissionManager; import org.terasology.engine.logic.players.event.OnPlayerSpawnedEvent; import org.terasology.engine.logic.players.event.ResetCameraEvent; -import org.terasology.engine.logic.console.commandSystem.annotations.Command; -import org.terasology.engine.logic.permission.PermissionManager; import org.terasology.engine.network.ClientComponent; import org.terasology.engine.registry.In; @@ -113,10 +113,11 @@ public void mountCameraOnChange(OnChangedComponent event, EntityRef entityRef, A private void mountCamera() { ClientComponent clientComponent = localPlayer.getClientEntity().getComponent(ClientComponent.class); EntityRef targetEntityForCamera = GazeAuthoritySystem.getGazeEntityForCharacter(clientComponent.character); + + //TODO: why is the camera setup differently LocationComponent cameraLocation = clientComponent.camera.getComponent(LocationComponent.class); - // if the camera already has a location, use that as the relative position of the camera + //if the camera already has a location, use that as the relative position of the camera if (cameraLocation != null) { - Location.attachChild(targetEntityForCamera, clientComponent.camera, cameraLocation.getLocalPosition(), new Quaternionf()); } else { Location.attachChild(targetEntityForCamera, clientComponent.camera, new Vector3f(0, 0, 0), new Quaternionf()); diff --git a/engine/src/main/java/org/terasology/engine/logic/players/LocalPlayerSystem.java b/engine/src/main/java/org/terasology/engine/logic/players/LocalPlayerSystem.java index f4602a64a21..99b0bba397b 100644 --- a/engine/src/main/java/org/terasology/engine/logic/players/LocalPlayerSystem.java +++ b/engine/src/main/java/org/terasology/engine/logic/players/LocalPlayerSystem.java @@ -6,7 +6,6 @@ import org.joml.Matrix4f; import org.joml.Quaternionf; import org.joml.Vector3f; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.PlayerConfig; import org.terasology.engine.core.SimpleUri; @@ -63,6 +62,7 @@ import org.terasology.engine.world.block.Block; import org.terasology.engine.world.block.BlockComponent; import org.terasology.engine.world.block.regions.BlockRegionComponent; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.input.ButtonState; import org.terasology.input.Input; import org.terasology.joml.geom.AABBf; diff --git a/engine/src/main/java/org/terasology/engine/logic/players/event/package-info.java b/engine/src/main/java/org/terasology/engine/logic/players/event/package-info.java index ed2322120bf..1e4be5a9832 100644 --- a/engine/src/main/java/org/terasology/engine/logic/players/event/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/players/event/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.players.event; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/players/package-info.java b/engine/src/main/java/org/terasology/engine/logic/players/package-info.java index eb2e66266c9..35f7e19a8b9 100644 --- a/engine/src/main/java/org/terasology/engine/logic/players/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/players/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.players; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/logic/selection/ApplyBlockSelectionEvent.java b/engine/src/main/java/org/terasology/engine/logic/selection/ApplyBlockSelectionEvent.java index 4169a9800ef..49665743211 100644 --- a/engine/src/main/java/org/terasology/engine/logic/selection/ApplyBlockSelectionEvent.java +++ b/engine/src/main/java/org/terasology/engine/logic/selection/ApplyBlockSelectionEvent.java @@ -4,7 +4,7 @@ import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.event.Event; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.world.block.BlockRegion; /** diff --git a/engine/src/main/java/org/terasology/engine/logic/selection/MovableSelectionEndEvent.java b/engine/src/main/java/org/terasology/engine/logic/selection/MovableSelectionEndEvent.java index 47bca86eb7e..cf8a59878aa 100644 --- a/engine/src/main/java/org/terasology/engine/logic/selection/MovableSelectionEndEvent.java +++ b/engine/src/main/java/org/terasology/engine/logic/selection/MovableSelectionEndEvent.java @@ -3,7 +3,7 @@ package org.terasology.engine.logic.selection; import org.terasology.engine.entitySystem.event.Event; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.world.block.BlockRegion; /** diff --git a/engine/src/main/java/org/terasology/engine/logic/selection/MovableSelectionStartEvent.java b/engine/src/main/java/org/terasology/engine/logic/selection/MovableSelectionStartEvent.java index c685557b8a1..662e8a28e3e 100644 --- a/engine/src/main/java/org/terasology/engine/logic/selection/MovableSelectionStartEvent.java +++ b/engine/src/main/java/org/terasology/engine/logic/selection/MovableSelectionStartEvent.java @@ -3,7 +3,7 @@ package org.terasology.engine.logic.selection; import org.terasology.engine.world.selection.BlockSelectionComponent; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.entitySystem.event.Event; /** diff --git a/engine/src/main/java/org/terasology/engine/logic/spawner/package-info.java b/engine/src/main/java/org/terasology/engine/logic/spawner/package-info.java index 002476c4e58..7793ac2e0ca 100644 --- a/engine/src/main/java/org/terasology/engine/logic/spawner/package-info.java +++ b/engine/src/main/java/org/terasology/engine/logic/spawner/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.logic.spawner; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/math/Direction.java b/engine/src/main/java/org/terasology/engine/math/Direction.java index d9940ac5f20..139cd9a5d9a 100644 --- a/engine/src/main/java/org/terasology/engine/math/Direction.java +++ b/engine/src/main/java/org/terasology/engine/math/Direction.java @@ -8,6 +8,7 @@ import org.joml.Vector3fc; import org.joml.Vector3i; import org.joml.Vector3ic; + import java.util.EnumMap; /** diff --git a/engine/src/main/java/org/terasology/engine/math/SpiralIterable.java b/engine/src/main/java/org/terasology/engine/math/SpiralIterable.java index 13d00e98be6..e36ba4e6b4d 100644 --- a/engine/src/main/java/org/terasology/engine/math/SpiralIterable.java +++ b/engine/src/main/java/org/terasology/engine/math/SpiralIterable.java @@ -5,6 +5,7 @@ import com.google.common.base.Preconditions; import org.joml.Vector2i; import org.joml.Vector2ic; + import java.util.Iterator; import java.util.NoSuchElementException; diff --git a/engine/src/main/java/org/terasology/engine/math/package-info.java b/engine/src/main/java/org/terasology/engine/math/package-info.java index 682049738d6..2529c52c079 100644 --- a/engine/src/main/java/org/terasology/engine/math/package-info.java +++ b/engine/src/main/java/org/terasology/engine/math/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.math; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/monitoring/package-info.java b/engine/src/main/java/org/terasology/engine/monitoring/package-info.java index 39ef8846cc6..6843c0c8232 100644 --- a/engine/src/main/java/org/terasology/engine/monitoring/package-info.java +++ b/engine/src/main/java/org/terasology/engine/monitoring/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.monitoring; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/network/NetworkEventSystemDecorator.java b/engine/src/main/java/org/terasology/engine/network/NetworkEventSystemDecorator.java index db280182271..501334d92f2 100644 --- a/engine/src/main/java/org/terasology/engine/network/NetworkEventSystemDecorator.java +++ b/engine/src/main/java/org/terasology/engine/network/NetworkEventSystemDecorator.java @@ -3,7 +3,7 @@ package org.terasology.engine.network; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.bootstrap.eventSystem.AbstractEventSystemDecorator; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.event.Event; diff --git a/engine/src/main/java/org/terasology/engine/network/ServerInfoMessage.java b/engine/src/main/java/org/terasology/engine/network/ServerInfoMessage.java index 483332d23d8..0fdebad00a7 100644 --- a/engine/src/main/java/org/terasology/engine/network/ServerInfoMessage.java +++ b/engine/src/main/java/org/terasology/engine/network/ServerInfoMessage.java @@ -16,7 +16,7 @@ package org.terasology.engine.network; -import org.terasology.naming.NameVersion; +import org.terasology.gestalt.naming.NameVersion; import org.terasology.engine.world.internal.WorldInfo; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/network/events/package-info.java b/engine/src/main/java/org/terasology/engine/network/events/package-info.java index 89d1bf04409..549e1e4e049 100644 --- a/engine/src/main/java/org/terasology/engine/network/events/package-info.java +++ b/engine/src/main/java/org/terasology/engine/network/events/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.network.events; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/network/internal/ClientConnectionHandler.java b/engine/src/main/java/org/terasology/engine/network/internal/ClientConnectionHandler.java index 889a9e8223c..40edd4ece03 100644 --- a/engine/src/main/java/org/terasology/engine/network/internal/ClientConnectionHandler.java +++ b/engine/src/main/java/org/terasology/engine/network/internal/ClientConnectionHandler.java @@ -11,15 +11,13 @@ import org.terasology.engine.config.Config; import org.terasology.engine.config.PlayerConfig; import org.terasology.engine.core.EngineTime; -import org.terasology.engine.core.TerasologyConstants; import org.terasology.engine.core.Time; import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.core.paths.PathManager; import org.terasology.engine.network.JoinStatus; import org.terasology.engine.registry.CoreRegistry; -import org.terasology.module.ModuleLoader; -import org.terasology.naming.Name; -import org.terasology.naming.Version; +import org.terasology.gestalt.naming.Name; +import org.terasology.gestalt.naming.Version; import org.terasology.protobuf.NetData; import java.io.BufferedOutputStream; @@ -217,10 +215,8 @@ private void receiveModule(ChannelHandlerContext channelHandlerContext, NetData. } Files.copy(tempModuleLocation, finalPath); - ModuleLoader loader = new ModuleLoader(moduleManager.getModuleMetadataReader()); - loader.setModuleInfoPath(TerasologyConstants.MODULE_INFO_FILENAME); + moduleManager.registerArchiveModule(finalPath); - moduleManager.getRegistry().add(loader.load(finalPath)); receivingModule = null; if (missingModules.isEmpty()) { diff --git a/engine/src/main/java/org/terasology/engine/network/internal/NetworkSystemImpl.java b/engine/src/main/java/org/terasology/engine/network/internal/NetworkSystemImpl.java index 3ff676c2dbb..ad12a47410f 100644 --- a/engine/src/main/java/org/terasology/engine/network/internal/NetworkSystemImpl.java +++ b/engine/src/main/java/org/terasology/engine/network/internal/NetworkSystemImpl.java @@ -71,7 +71,8 @@ import org.terasology.engine.world.block.family.BlockFamily; import org.terasology.engine.world.chunks.remoteChunkProvider.RemoteChunkProvider; import org.terasology.engine.world.generator.WorldGenerator; -import org.terasology.module.Module; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.module.Module; import org.terasology.nui.Color; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; import org.terasology.protobuf.NetData; diff --git a/engine/src/main/java/org/terasology/engine/network/internal/ServerConnectionHandler.java b/engine/src/main/java/org/terasology/engine/network/internal/ServerConnectionHandler.java index cc5ac2a17c7..5a541d12e97 100644 --- a/engine/src/main/java/org/terasology/engine/network/internal/ServerConnectionHandler.java +++ b/engine/src/main/java/org/terasology/engine/network/internal/ServerConnectionHandler.java @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.network.internal; -import com.google.common.io.ByteStreams; import com.google.protobuf.ByteString; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; @@ -10,18 +9,17 @@ import org.slf4j.LoggerFactory; import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.identity.PublicIdentityCertificate; -import org.terasology.module.Module; -import org.terasology.naming.Name; -import org.terasology.nui.Color; -import org.terasology.protobuf.NetData; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.rendering.world.viewDistance.ViewDistance; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.resources.ArchiveFileSource; +import org.terasology.gestalt.module.resources.FileReference; +import org.terasology.gestalt.naming.Name; +import org.terasology.nui.Color; +import org.terasology.protobuf.NetData; -import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; import java.util.List; /** @@ -75,41 +73,26 @@ private void sendModules(List moduleRequestList) { NetData.ModuleDataHeader.Builder result = NetData.ModuleDataHeader.newBuilder(); result.setId(request.getModuleId()); Module module = moduleManager.getEnvironment().get(new Name(request.getModuleId())); - if (module.isOnClasspath() || module.getLocations().size() != 1 || !Files.isReadable(module.getLocations().get(0))) { + + if (!(module.getResources() instanceof ArchiveFileSource)) { //TODO: gestaltv7 restore module downloading for maximum possibles result.setError("Module not available for download"); } else { - Path location = module.getLocations().get(0); - try { + FileReference fileReference = module.getResources().getFiles().iterator().next(); + try (InputStream stream = fileReference.open()) { + ByteString byteString = ByteString.readFrom(stream, 1024); + channelHandlerContext.channel().write( + NetData.NetMessage.newBuilder().setModuleData( + NetData.ModuleData.newBuilder().setModule(byteString) + ).build() + ); result.setVersion(module.getVersion().toString()); - result.setSize(Files.size(location)); + result.setSize(byteString.size()); channelHandlerContext.channel().write(NetData.NetMessage.newBuilder().setModuleDataHeader(result).build()); - } catch (IOException e) { - logger.error("Error sending module data header", e); - channelHandlerContext.channel().close(); - break; - } - - try (InputStream stream = new BufferedInputStream(Files.newInputStream(location))) { - - long remainingData = Files.size(location); - byte[] data = new byte[1024]; - while (remainingData > 0) { - int nextBlock = (int) Math.min(remainingData, 1024); - ByteStreams.read(stream, data, 0, nextBlock); - channelHandlerContext.channel().write( - NetData.NetMessage.newBuilder().setModuleData( - NetData.ModuleData.newBuilder().setModule(ByteString.copyFrom(data, 0, - nextBlock)) - ).build() - ); - remainingData -= nextBlock; - } } catch (IOException e) { logger.error("Error sending module", e); channelHandlerContext.channel().close(); break; } - channelHandlerContext.flush(); } } } @@ -123,5 +106,4 @@ private void receivedConnect(NetData.JoinMessage message) { channelHandlerContext.pipeline().remove(this); serverHandler.connectionComplete(client); } - } diff --git a/engine/src/main/java/org/terasology/engine/network/internal/ServerInfoMessageImpl.java b/engine/src/main/java/org/terasology/engine/network/internal/ServerInfoMessageImpl.java index 1344693d212..854b2bb4c36 100644 --- a/engine/src/main/java/org/terasology/engine/network/internal/ServerInfoMessageImpl.java +++ b/engine/src/main/java/org/terasology/engine/network/internal/ServerInfoMessageImpl.java @@ -20,10 +20,10 @@ import com.google.common.collect.Maps; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.naming.Name; -import org.terasology.naming.NameVersion; -import org.terasology.naming.Version; +import org.terasology.gestalt.naming.Name; +import org.terasology.gestalt.naming.NameVersion; import org.terasology.engine.network.ServerInfoMessage; +import org.terasology.gestalt.naming.Version; import org.terasology.protobuf.NetData; import org.terasology.engine.world.internal.WorldInfo; diff --git a/engine/src/main/java/org/terasology/engine/network/package-info.java b/engine/src/main/java/org/terasology/engine/network/package-info.java index 96b7f63610a..cbf8acdc68f 100644 --- a/engine/src/main/java/org/terasology/engine/network/package-info.java +++ b/engine/src/main/java/org/terasology/engine/network/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.network; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/particles/ParticleData.java b/engine/src/main/java/org/terasology/engine/particles/ParticleData.java index 6fb6d2abe97..ffd499a3f77 100644 --- a/engine/src/main/java/org/terasology/engine/particles/ParticleData.java +++ b/engine/src/main/java/org/terasology/engine/particles/ParticleData.java @@ -18,7 +18,7 @@ import org.joml.Vector2f; import org.joml.Vector3f; import org.joml.Vector4f; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Data object to store the data of a single particle. diff --git a/engine/src/main/java/org/terasology/engine/particles/ParticleDataMask.java b/engine/src/main/java/org/terasology/engine/particles/ParticleDataMask.java index 9f42d008f1f..a3253d82cfb 100644 --- a/engine/src/main/java/org/terasology/engine/particles/ParticleDataMask.java +++ b/engine/src/main/java/org/terasology/engine/particles/ParticleDataMask.java @@ -15,7 +15,7 @@ */ package org.terasology.engine.particles; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Data mask used internally by the particle system. diff --git a/engine/src/main/java/org/terasology/engine/particles/ParticleSystemManager.java b/engine/src/main/java/org/terasology/engine/particles/ParticleSystemManager.java index 8113d7392d4..7735dc3bd17 100644 --- a/engine/src/main/java/org/terasology/engine/particles/ParticleSystemManager.java +++ b/engine/src/main/java/org/terasology/engine/particles/ParticleSystemManager.java @@ -16,7 +16,7 @@ package org.terasology.engine.particles; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.particles.rendering.ParticleRenderingData; import java.util.stream.Stream; diff --git a/engine/src/main/java/org/terasology/engine/particles/ParticleSystemManagerImpl.java b/engine/src/main/java/org/terasology/engine/particles/ParticleSystemManagerImpl.java index 74a1f0b45a1..aad482cfa47 100644 --- a/engine/src/main/java/org/terasology/engine/particles/ParticleSystemManagerImpl.java +++ b/engine/src/main/java/org/terasology/engine/particles/ParticleSystemManagerImpl.java @@ -26,7 +26,7 @@ import org.terasology.engine.entitySystem.systems.RegisterSystem; import org.terasology.engine.entitySystem.systems.UpdateSubscriberSystem; import org.terasology.engine.logic.location.LocationComponent; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.particles.components.ParticleEmitterComponent; import org.terasology.engine.particles.events.ParticleSystemUpdateEvent; import org.terasology.engine.particles.rendering.ParticleRenderingData; diff --git a/engine/src/main/java/org/terasology/engine/particles/components/ParticleDataSpriteComponent.java b/engine/src/main/java/org/terasology/engine/particles/components/ParticleDataSpriteComponent.java index 68113920c92..ad8256cf6db 100644 --- a/engine/src/main/java/org/terasology/engine/particles/components/ParticleDataSpriteComponent.java +++ b/engine/src/main/java/org/terasology/engine/particles/components/ParticleDataSpriteComponent.java @@ -17,7 +17,7 @@ import org.joml.Vector2f; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.rendering.assets.texture.Texture; /** diff --git a/engine/src/main/java/org/terasology/engine/particles/components/ParticleEmitterComponent.java b/engine/src/main/java/org/terasology/engine/particles/components/ParticleEmitterComponent.java index ecda1aa09bf..65e7a34ee7d 100644 --- a/engine/src/main/java/org/terasology/engine/particles/components/ParticleEmitterComponent.java +++ b/engine/src/main/java/org/terasology/engine/particles/components/ParticleEmitterComponent.java @@ -18,7 +18,7 @@ import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.logic.location.LocationComponent; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.particles.ParticlePool; import org.terasology.engine.particles.functions.affectors.AffectorFunction; import org.terasology.engine.particles.functions.generators.GeneratorFunction; diff --git a/engine/src/main/java/org/terasology/engine/particles/components/affectors/AccelerationAffectorComponent.java b/engine/src/main/java/org/terasology/engine/particles/components/affectors/AccelerationAffectorComponent.java index e64e6a21f39..da730374bd4 100644 --- a/engine/src/main/java/org/terasology/engine/particles/components/affectors/AccelerationAffectorComponent.java +++ b/engine/src/main/java/org/terasology/engine/particles/components/affectors/AccelerationAffectorComponent.java @@ -17,7 +17,7 @@ import org.joml.Vector3f; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.network.Replicate; /** diff --git a/engine/src/main/java/org/terasology/engine/particles/components/affectors/VelocityAffectorComponent.java b/engine/src/main/java/org/terasology/engine/particles/components/affectors/VelocityAffectorComponent.java index 39cfe5c6549..121407c5ed9 100644 --- a/engine/src/main/java/org/terasology/engine/particles/components/affectors/VelocityAffectorComponent.java +++ b/engine/src/main/java/org/terasology/engine/particles/components/affectors/VelocityAffectorComponent.java @@ -16,7 +16,7 @@ package org.terasology.engine.particles.components.affectors; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * diff --git a/engine/src/main/java/org/terasology/engine/particles/components/generators/ColorRangeGeneratorComponent.java b/engine/src/main/java/org/terasology/engine/particles/components/generators/ColorRangeGeneratorComponent.java index 7c35748bc6b..4cb06c0ca61 100644 --- a/engine/src/main/java/org/terasology/engine/particles/components/generators/ColorRangeGeneratorComponent.java +++ b/engine/src/main/java/org/terasology/engine/particles/components/generators/ColorRangeGeneratorComponent.java @@ -17,7 +17,7 @@ import org.joml.Vector4f; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * diff --git a/engine/src/main/java/org/terasology/engine/particles/components/generators/EnergyRangeGeneratorComponent.java b/engine/src/main/java/org/terasology/engine/particles/components/generators/EnergyRangeGeneratorComponent.java index 7362f3264fa..9f7b957b703 100644 --- a/engine/src/main/java/org/terasology/engine/particles/components/generators/EnergyRangeGeneratorComponent.java +++ b/engine/src/main/java/org/terasology/engine/particles/components/generators/EnergyRangeGeneratorComponent.java @@ -16,7 +16,7 @@ package org.terasology.engine.particles.components.generators; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * diff --git a/engine/src/main/java/org/terasology/engine/particles/components/generators/PositionRangeGeneratorComponent.java b/engine/src/main/java/org/terasology/engine/particles/components/generators/PositionRangeGeneratorComponent.java index c6700647b8d..86240ad26fc 100644 --- a/engine/src/main/java/org/terasology/engine/particles/components/generators/PositionRangeGeneratorComponent.java +++ b/engine/src/main/java/org/terasology/engine/particles/components/generators/PositionRangeGeneratorComponent.java @@ -17,7 +17,7 @@ import org.joml.Vector3f; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * diff --git a/engine/src/main/java/org/terasology/engine/particles/components/generators/ScaleRangeGeneratorComponent.java b/engine/src/main/java/org/terasology/engine/particles/components/generators/ScaleRangeGeneratorComponent.java index 92b9155080a..fe34a146e1a 100644 --- a/engine/src/main/java/org/terasology/engine/particles/components/generators/ScaleRangeGeneratorComponent.java +++ b/engine/src/main/java/org/terasology/engine/particles/components/generators/ScaleRangeGeneratorComponent.java @@ -17,7 +17,7 @@ import org.joml.Vector3f; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * diff --git a/engine/src/main/java/org/terasology/engine/particles/components/generators/TextureOffsetGeneratorComponent.java b/engine/src/main/java/org/terasology/engine/particles/components/generators/TextureOffsetGeneratorComponent.java index 0548feb9496..7b32f400742 100644 --- a/engine/src/main/java/org/terasology/engine/particles/components/generators/TextureOffsetGeneratorComponent.java +++ b/engine/src/main/java/org/terasology/engine/particles/components/generators/TextureOffsetGeneratorComponent.java @@ -18,7 +18,7 @@ import org.joml.Vector2f; import org.joml.Vector2i; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.rendering.assets.texture.Texture; import java.util.LinkedList; diff --git a/engine/src/main/java/org/terasology/engine/particles/components/generators/VelocityRangeGeneratorComponent.java b/engine/src/main/java/org/terasology/engine/particles/components/generators/VelocityRangeGeneratorComponent.java index 689378dc562..1cbb6cde742 100644 --- a/engine/src/main/java/org/terasology/engine/particles/components/generators/VelocityRangeGeneratorComponent.java +++ b/engine/src/main/java/org/terasology/engine/particles/components/generators/VelocityRangeGeneratorComponent.java @@ -17,7 +17,7 @@ import org.joml.Vector3f; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Generator for a particle's velocity. diff --git a/engine/src/main/java/org/terasology/engine/particles/events/ParticleSystemUpdateEvent.java b/engine/src/main/java/org/terasology/engine/particles/events/ParticleSystemUpdateEvent.java index e05e645fe09..9079ff06ba0 100644 --- a/engine/src/main/java/org/terasology/engine/particles/events/ParticleSystemUpdateEvent.java +++ b/engine/src/main/java/org/terasology/engine/particles/events/ParticleSystemUpdateEvent.java @@ -16,7 +16,7 @@ package org.terasology.engine.particles.events; import org.terasology.engine.entitySystem.event.Event; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Fired to notify the ParticleSystemManager that a system needs to be reconfigured. diff --git a/engine/src/main/java/org/terasology/engine/particles/functions/RegisterParticleSystemFunction.java b/engine/src/main/java/org/terasology/engine/particles/functions/RegisterParticleSystemFunction.java index 8e99cb2d63f..801cd79c2a5 100644 --- a/engine/src/main/java/org/terasology/engine/particles/functions/RegisterParticleSystemFunction.java +++ b/engine/src/main/java/org/terasology/engine/particles/functions/RegisterParticleSystemFunction.java @@ -15,7 +15,7 @@ */ package org.terasology.engine.particles.functions; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/engine/src/main/java/org/terasology/engine/particles/functions/affectors/AffectorFunction.java b/engine/src/main/java/org/terasology/engine/particles/functions/affectors/AffectorFunction.java index 836eda99706..05eb138dc31 100644 --- a/engine/src/main/java/org/terasology/engine/particles/functions/affectors/AffectorFunction.java +++ b/engine/src/main/java/org/terasology/engine/particles/functions/affectors/AffectorFunction.java @@ -16,7 +16,7 @@ package org.terasology.engine.particles.functions.affectors; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.particles.ParticleData; import org.terasology.engine.particles.ParticleDataMask; import org.terasology.engine.particles.functions.ParticleSystemFunction; diff --git a/engine/src/main/java/org/terasology/engine/particles/functions/generators/GeneratorFunction.java b/engine/src/main/java/org/terasology/engine/particles/functions/generators/GeneratorFunction.java index f68bcd50b7e..f857708e1f5 100644 --- a/engine/src/main/java/org/terasology/engine/particles/functions/generators/GeneratorFunction.java +++ b/engine/src/main/java/org/terasology/engine/particles/functions/generators/GeneratorFunction.java @@ -16,7 +16,7 @@ package org.terasology.engine.particles.functions.generators; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.particles.ParticleData; import org.terasology.engine.particles.ParticleDataMask; import org.terasology.engine.particles.functions.ParticleSystemFunction; diff --git a/engine/src/main/java/org/terasology/engine/particles/rendering/ParticleRenderingData.java b/engine/src/main/java/org/terasology/engine/particles/rendering/ParticleRenderingData.java index 1f9102bd3ae..c8578e2826b 100644 --- a/engine/src/main/java/org/terasology/engine/particles/rendering/ParticleRenderingData.java +++ b/engine/src/main/java/org/terasology/engine/particles/rendering/ParticleRenderingData.java @@ -16,7 +16,7 @@ package org.terasology.engine.particles.rendering; import org.terasology.engine.entitySystem.Component; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.particles.ParticlePool; /** diff --git a/engine/src/main/java/org/terasology/engine/particles/updating/ParticleUpdaterImpl.java b/engine/src/main/java/org/terasology/engine/particles/updating/ParticleUpdaterImpl.java index ace71dd27fe..ef149748db8 100644 --- a/engine/src/main/java/org/terasology/engine/particles/updating/ParticleUpdaterImpl.java +++ b/engine/src/main/java/org/terasology/engine/particles/updating/ParticleUpdaterImpl.java @@ -13,7 +13,7 @@ import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.math.TeraMath; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.engine.particles.ParticleDataMask; import org.terasology.engine.particles.ParticlePool; import org.terasology.engine.particles.components.ParticleEmitterComponent; diff --git a/engine/src/main/java/org/terasology/engine/persistence/TemplateEngine.java b/engine/src/main/java/org/terasology/engine/persistence/TemplateEngine.java index ac3cfb8145d..aa59669fc1e 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/TemplateEngine.java +++ b/engine/src/main/java/org/terasology/engine/persistence/TemplateEngine.java @@ -16,7 +16,7 @@ package org.terasology.engine.persistence; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Transforms the input text that contains markers (e.g. ${text} expressions). diff --git a/engine/src/main/java/org/terasology/engine/persistence/TemplateEngineImpl.java b/engine/src/main/java/org/terasology/engine/persistence/TemplateEngineImpl.java index 48debb94ea6..7b2b78e14fe 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/TemplateEngineImpl.java +++ b/engine/src/main/java/org/terasology/engine/persistence/TemplateEngineImpl.java @@ -20,7 +20,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * A simple template engine that replaces ${text} expressions diff --git a/engine/src/main/java/org/terasology/engine/persistence/internal/AbstractStorageManager.java b/engine/src/main/java/org/terasology/engine/persistence/internal/AbstractStorageManager.java index 477cfac07be..384efcb6d1f 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/internal/AbstractStorageManager.java +++ b/engine/src/main/java/org/terasology/engine/persistence/internal/AbstractStorageManager.java @@ -27,7 +27,7 @@ import org.terasology.engine.entitySystem.entity.internal.OwnershipHelper; import org.terasology.joml.geom.AABBfc; import org.terasology.engine.logic.location.LocationComponent; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.engine.network.ClientComponent; import org.terasology.engine.persistence.ChunkStore; import org.terasology.engine.persistence.PlayerStore; diff --git a/engine/src/main/java/org/terasology/engine/persistence/internal/GlobalStoreLoader.java b/engine/src/main/java/org/terasology/engine/persistence/internal/GlobalStoreLoader.java index 90674f25d2f..a3164234512 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/internal/GlobalStoreLoader.java +++ b/engine/src/main/java/org/terasology/engine/persistence/internal/GlobalStoreLoader.java @@ -20,7 +20,7 @@ import org.slf4j.LoggerFactory; import org.terasology.engine.persistence.serializers.PersistenceComponentSerializeCheck; import org.terasology.engine.utilities.Assets; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.SimpleUri; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.entity.internal.EngineEntityManager; @@ -29,8 +29,8 @@ import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.entitySystem.prefab.PrefabData; import org.terasology.engine.entitySystem.prefab.PrefabManager; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.engine.core.module.ModuleContext; import org.terasology.engine.persistence.serializers.EntitySerializer; import org.terasology.engine.persistence.serializers.PrefabSerializer; diff --git a/engine/src/main/java/org/terasology/engine/persistence/internal/ReadOnlyStorageManager.java b/engine/src/main/java/org/terasology/engine/persistence/internal/ReadOnlyStorageManager.java index bbbb6274793..3d15479ba6f 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/internal/ReadOnlyStorageManager.java +++ b/engine/src/main/java/org/terasology/engine/persistence/internal/ReadOnlyStorageManager.java @@ -18,7 +18,7 @@ import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.entity.internal.EngineEntityManager; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.engine.network.Client; import org.terasology.engine.network.ClientComponent; import org.terasology.engine.world.block.BlockManager; diff --git a/engine/src/main/java/org/terasology/engine/persistence/internal/ReadWriteStorageManager.java b/engine/src/main/java/org/terasology/engine/persistence/internal/ReadWriteStorageManager.java index 02314c75f02..b8ebe7b42c5 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/internal/ReadWriteStorageManager.java +++ b/engine/src/main/java/org/terasology/engine/persistence/internal/ReadWriteStorageManager.java @@ -48,8 +48,8 @@ import org.terasology.engine.world.chunks.blockdata.ExtraBlockDataManager; import org.terasology.engine.world.chunks.internal.ChunkImpl; import org.terasology.engine.world.internal.WorldInfo; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; import org.terasology.protobuf.EntityData; diff --git a/engine/src/main/java/org/terasology/engine/persistence/serializers/ComponentSerializer.java b/engine/src/main/java/org/terasology/engine/persistence/serializers/ComponentSerializer.java index 4e892fe890b..8bbf443a220 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/serializers/ComponentSerializer.java +++ b/engine/src/main/java/org/terasology/engine/persistence/serializers/ComponentSerializer.java @@ -16,7 +16,7 @@ import org.terasology.engine.entitySystem.metadata.ReplicatedFieldMetadata; import org.terasology.engine.persistence.typeHandling.protobuf.ProtobufPersistedData; import org.terasology.engine.persistence.typeHandling.protobuf.ProtobufPersistedDataSerializer; -import org.terasology.module.Module; +import org.terasology.gestalt.module.Module; import org.terasology.persistence.typeHandling.PersistedData; import org.terasology.persistence.typeHandling.Serializer; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; diff --git a/engine/src/main/java/org/terasology/engine/persistence/serializers/PrefabSerializer.java b/engine/src/main/java/org/terasology/engine/persistence/serializers/PrefabSerializer.java index f86b8421c4e..f0ef1f379ae 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/serializers/PrefabSerializer.java +++ b/engine/src/main/java/org/terasology/engine/persistence/serializers/PrefabSerializer.java @@ -12,7 +12,7 @@ import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.entitySystem.prefab.PrefabData; import org.terasology.engine.utilities.Assets; -import org.terasology.module.Module; +import org.terasology.gestalt.module.Module; import org.terasology.persistence.typeHandling.TypeHandlerLibrary; import org.terasology.protobuf.EntityData; diff --git a/engine/src/main/java/org/terasology/engine/persistence/serializers/WorldSerializerImpl.java b/engine/src/main/java/org/terasology/engine/persistence/serializers/WorldSerializerImpl.java index 07d4a69662d..d9d1812bc19 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/serializers/WorldSerializerImpl.java +++ b/engine/src/main/java/org/terasology/engine/persistence/serializers/WorldSerializerImpl.java @@ -20,9 +20,8 @@ import com.google.common.collect.Maps; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.engine.utilities.Assets; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.core.SimpleUri; +import org.terasology.engine.core.module.ModuleContext; import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.entity.EntityRef; @@ -32,9 +31,10 @@ import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.entitySystem.prefab.PrefabData; import org.terasology.engine.entitySystem.prefab.PrefabManager; -import org.terasology.engine.core.module.ModuleContext; -import org.terasology.protobuf.EntityData; import org.terasology.engine.registry.CoreRegistry; +import org.terasology.engine.utilities.Assets; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.protobuf.EntityData; import java.util.Collection; import java.util.Iterator; diff --git a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/RegisterTypeHandler.java b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/RegisterTypeHandler.java index f0bd5106db7..600553cf880 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/RegisterTypeHandler.java +++ b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/RegisterTypeHandler.java @@ -16,7 +16,7 @@ package org.terasology.engine.persistence.typeHandling; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/RegisterTypeHandlerFactory.java b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/RegisterTypeHandlerFactory.java index 02b719d2d41..f70856f15ad 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/RegisterTypeHandlerFactory.java +++ b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/RegisterTypeHandlerFactory.java @@ -16,7 +16,7 @@ package org.terasology.engine.persistence.typeHandling; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/TypeHandlerLibraryImpl.java b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/TypeHandlerLibraryImpl.java index 8ab45134b32..8439b565370 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/TypeHandlerLibraryImpl.java +++ b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/TypeHandlerLibraryImpl.java @@ -57,7 +57,7 @@ import org.terasology.joml.geom.AABBi; import org.terasology.joml.geom.Rectanglef; import org.terasology.joml.geom.Rectanglei; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.Color; import org.terasology.nui.Colorc; import org.terasology.nui.UITextureRegion; diff --git a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/AssetTypeHandler.java b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/AssetTypeHandler.java index 2884cadbd21..c0b69f45edd 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/AssetTypeHandler.java +++ b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/AssetTypeHandler.java @@ -4,7 +4,7 @@ package org.terasology.engine.persistence.typeHandling.extensionTypes; import com.google.common.base.Strings; -import org.terasology.assets.Asset; +import org.terasology.gestalt.assets.Asset; import org.terasology.engine.utilities.Assets; import org.terasology.persistence.typeHandling.StringRepresentationTypeHandler; diff --git a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/NameTypeHandler.java b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/NameTypeHandler.java index 45abd6bc009..acaa109e722 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/NameTypeHandler.java +++ b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/NameTypeHandler.java @@ -3,7 +3,7 @@ package org.terasology.engine.persistence.typeHandling.extensionTypes; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.persistence.typeHandling.StringRepresentationTypeHandler; /** diff --git a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/TextureRegionTypeHandler.java b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/TextureRegionTypeHandler.java index 4bf0a91e826..e0fa00e11be 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/TextureRegionTypeHandler.java +++ b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/TextureRegionTypeHandler.java @@ -4,7 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.Asset; +import org.terasology.gestalt.assets.Asset; import org.terasology.engine.rendering.assets.texture.TextureRegion; import org.terasology.engine.rendering.assets.texture.TextureRegionAsset; import org.terasology.engine.utilities.Assets; diff --git a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/UITextureRegionTypeHandler.java b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/UITextureRegionTypeHandler.java index df7959bdff6..860784369cc 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/UITextureRegionTypeHandler.java +++ b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/UITextureRegionTypeHandler.java @@ -4,7 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.Asset; +import org.terasology.gestalt.assets.Asset; import org.terasology.engine.rendering.assets.texture.TextureRegionAsset; import org.terasology.engine.utilities.Assets; import org.terasology.nui.UITextureRegion; diff --git a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/factories/AssetTypeHandlerFactory.java b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/factories/AssetTypeHandlerFactory.java index 9762ca20ab2..2d44924c9b0 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/factories/AssetTypeHandlerFactory.java +++ b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/extensionTypes/factories/AssetTypeHandlerFactory.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.persistence.typeHandling.extensionTypes.factories; -import org.terasology.assets.Asset; +import org.terasology.gestalt.assets.Asset; import org.terasology.engine.persistence.typeHandling.extensionTypes.AssetTypeHandler; import org.terasology.persistence.typeHandling.TypeHandler; import org.terasology.persistence.typeHandling.TypeHandlerContext; diff --git a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/reflection/ModuleEnvironmentSandbox.java b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/reflection/ModuleEnvironmentSandbox.java index e5e274fa4e4..01a8add560d 100644 --- a/engine/src/main/java/org/terasology/engine/persistence/typeHandling/reflection/ModuleEnvironmentSandbox.java +++ b/engine/src/main/java/org/terasology/engine/persistence/typeHandling/reflection/ModuleEnvironmentSandbox.java @@ -5,8 +5,8 @@ import org.terasology.engine.core.SimpleUri; import org.terasology.engine.core.module.ModuleContext; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.module.ModuleEnvironment; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.naming.Name; import org.terasology.persistence.typeHandling.TypeHandler; import org.terasology.persistence.typeHandling.reflection.SerializationSandbox; import org.terasology.reflection.TypeInfo; diff --git a/engine/src/main/java/org/terasology/engine/physics/components/package-info.java b/engine/src/main/java/org/terasology/engine/physics/components/package-info.java index 6f36eec4681..6243f441afc 100644 --- a/engine/src/main/java/org/terasology/engine/physics/components/package-info.java +++ b/engine/src/main/java/org/terasology/engine/physics/components/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.physics.components; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/physics/components/shapes/package-info.java b/engine/src/main/java/org/terasology/engine/physics/components/shapes/package-info.java index 080584faad6..d6441987f60 100644 --- a/engine/src/main/java/org/terasology/engine/physics/components/shapes/package-info.java +++ b/engine/src/main/java/org/terasology/engine/physics/components/shapes/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.physics.components.shapes; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/physics/events/package-info.java b/engine/src/main/java/org/terasology/engine/physics/events/package-info.java index 46181071593..b698739d0e1 100644 --- a/engine/src/main/java/org/terasology/engine/physics/events/package-info.java +++ b/engine/src/main/java/org/terasology/engine/physics/events/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.physics.events; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/physics/package-info.java b/engine/src/main/java/org/terasology/engine/physics/package-info.java index 573efc777c5..6f720b194f0 100644 --- a/engine/src/main/java/org/terasology/engine/physics/package-info.java +++ b/engine/src/main/java/org/terasology/engine/physics/package-info.java @@ -44,4 +44,4 @@ */ @API package org.terasology.engine.physics; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/physics/shapes/package-info.java b/engine/src/main/java/org/terasology/engine/physics/shapes/package-info.java index 65fc1fde97f..1ec5923920b 100644 --- a/engine/src/main/java/org/terasology/engine/physics/shapes/package-info.java +++ b/engine/src/main/java/org/terasology/engine/physics/shapes/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.physics.shapes; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/recording/EventSystemReplayImpl.java b/engine/src/main/java/org/terasology/engine/recording/EventSystemReplayImpl.java index cb3b262e105..b9c941d77a9 100644 --- a/engine/src/main/java/org/terasology/engine/recording/EventSystemReplayImpl.java +++ b/engine/src/main/java/org/terasology/engine/recording/EventSystemReplayImpl.java @@ -17,7 +17,7 @@ import org.reflections.ReflectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.SimpleUri; import org.terasology.engine.core.paths.PathManager; import org.terasology.engine.entitySystem.Component; diff --git a/engine/src/main/java/org/terasology/engine/registry/InjectionHelper.java b/engine/src/main/java/org/terasology/engine/registry/InjectionHelper.java index 330ce9302a8..f79d7abcc74 100644 --- a/engine/src/main/java/org/terasology/engine/registry/InjectionHelper.java +++ b/engine/src/main/java/org/terasology/engine/registry/InjectionHelper.java @@ -1,26 +1,13 @@ -/* - * Copyright 2014 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2021 The Terasology Foundation +// SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.registry; import org.reflections.ReflectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.terasology.engine.context.Context; -import org.terasology.util.reflection.ParameterProvider; -import org.terasology.util.reflection.SimpleClassFactory; +import org.terasology.gestalt.util.reflection.ParameterProvider; +import org.terasology.gestalt.util.reflection.SimpleClassFactory; import java.lang.annotation.Annotation; import java.lang.reflect.Field; @@ -67,6 +54,9 @@ public static void inject(final Object object) { } catch (IllegalAccessException e) { logger.error("Failed to inject value {} into field {} of {}", value, field, object, e); } + } else { + logger.warn("{} wanted {} injected but CoreRegistry has none.", + object.getClass().getSimpleName(), field.getType().getSimpleName()); } } diff --git a/engine/src/main/java/org/terasology/engine/registry/package-info.java b/engine/src/main/java/org/terasology/engine/registry/package-info.java index 2f0c9515bd7..f2df01300b0 100644 --- a/engine/src/main/java/org/terasology/engine/registry/package-info.java +++ b/engine/src/main/java/org/terasology/engine/registry/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.registry; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/AABBRenderer.java b/engine/src/main/java/org/terasology/engine/rendering/AABBRenderer.java index 5684878e92c..50b2133c9bb 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/AABBRenderer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/AABBRenderer.java @@ -9,7 +9,7 @@ import org.terasology.joml.geom.AABBf; import org.terasology.joml.geom.AABBfc; import org.terasology.engine.logic.players.LocalPlayer; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.registry.CoreRegistry; import static org.lwjgl.opengl.GL11.GL_BLEND; diff --git a/engine/src/main/java/org/terasology/engine/rendering/ShaderManagerLwjgl.java b/engine/src/main/java/org/terasology/engine/rendering/ShaderManagerLwjgl.java index 5340ffec9e8..fad58535ed9 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/ShaderManagerLwjgl.java +++ b/engine/src/main/java/org/terasology/engine/rendering/ShaderManagerLwjgl.java @@ -11,8 +11,7 @@ import org.lwjgl.system.Platform; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.rendering.assets.material.Material; import org.terasology.engine.rendering.assets.material.MaterialData; @@ -20,6 +19,7 @@ import org.terasology.engine.rendering.assets.texture.Texture; import org.terasology.engine.rendering.opengl.GLSLMaterial; import org.terasology.engine.utilities.Assets; +import org.terasology.gestalt.assets.management.AssetManager; import java.util.Optional; import java.util.Set; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimation.java b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimation.java index c3ecceebe9b..7c1eb9947d4 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimation.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimation.java @@ -3,9 +3,9 @@ package org.terasology.engine.rendering.assets.animation; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMesh; import org.terasology.joml.geom.AABBf; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationBundle.java b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationBundle.java index 20f183fac18..02b83f72e83 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationBundle.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationBundle.java @@ -2,9 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.assets.animation; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import java.util.Optional; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationBundleData.java b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationBundleData.java index 70cd1dd2789..e68708f690c 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationBundleData.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationBundleData.java @@ -3,8 +3,8 @@ package org.terasology.engine.rendering.assets.animation; import com.google.common.collect.ImmutableMap; -import org.terasology.assets.AssetData; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.AssetData; +import org.terasology.gestalt.assets.ResourceUrn; import java.util.Map; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationBundleProducer.java b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationBundleProducer.java index e6494393f05..1044518819b 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationBundleProducer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationBundleProducer.java @@ -2,10 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.assets.animation; -import org.terasology.assets.AbstractFragmentDataProducer; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.annotations.RegisterAssetDataProducer; +import org.terasology.gestalt.assets.AbstractFragmentDataProducer; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetDataProducer; import java.util.Collections; import java.util.Optional; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationData.java b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationData.java index 4a2e3bea218..14580871855 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationData.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationData.java @@ -5,7 +5,7 @@ import com.google.common.collect.ImmutableList; import gnu.trove.list.TIntList; import gnu.trove.list.array.TIntArrayList; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import org.terasology.joml.geom.AABBf; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationImpl.java b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationImpl.java index b811093b320..d132a7a3089 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationImpl.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/MeshAnimationImpl.java @@ -2,9 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.assets.animation; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.skeletalmesh.Bone; import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMesh; import org.terasology.joml.geom.AABBf; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/package-info.java index c94c4d887db..4ab058af621 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/animation/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/animation/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.assets.animation; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/AltasTileProducer.java b/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/AltasTileProducer.java index c645d7776c1..ef962eee75f 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/AltasTileProducer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/AltasTileProducer.java @@ -2,11 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.assets.atlas; -import org.terasology.assets.AbstractFragmentDataProducer; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.annotations.RegisterAssetDataProducer; +import org.terasology.gestalt.assets.AbstractFragmentDataProducer; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.texture.subtexture.SubtextureData; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetDataProducer; import java.util.Collections; import java.util.Optional; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/Atlas.java b/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/Atlas.java index b13d166c111..b0ffa85dd4e 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/Atlas.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/Atlas.java @@ -3,11 +3,11 @@ package org.terasology.engine.rendering.assets.atlas; import com.google.common.collect.Maps; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.texture.subtexture.SubtextureData; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import java.util.Map; import java.util.Optional; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/AtlasData.java b/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/AtlasData.java index bcfb43940fa..14c2c9ab979 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/AtlasData.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/AtlasData.java @@ -2,9 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.assets.atlas; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import org.terasology.engine.rendering.assets.texture.subtexture.SubtextureData; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import java.util.Map; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/AtlasFormat.java b/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/AtlasFormat.java index 1d9f0ab90f7..2e0990e8098 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/AtlasFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/atlas/AtlasFormat.java @@ -11,15 +11,15 @@ import org.joml.Vector2ic; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.texture.Texture; import org.terasology.engine.rendering.assets.texture.subtexture.SubtextureData; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import org.terasology.joml.geom.Rectanglef; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.utilities.gson.Vector2iTypeAdapter; import java.io.IOException; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/font/Font.java b/engine/src/main/java/org/terasology/engine/rendering/assets/font/Font.java index 40659df87ce..297bacbb1b6 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/font/Font.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/font/Font.java @@ -4,9 +4,9 @@ package org.terasology.engine.rendering.assets.font; import org.joml.Vector2i; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontData.java b/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontData.java index 2621cfb0717..6a78048bd97 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontData.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontData.java @@ -3,7 +3,7 @@ package org.terasology.engine.rendering.assets.font; import com.google.common.collect.ImmutableMap; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import java.util.Map; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontFormat.java b/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontFormat.java index ecbd4f5148a..731fcc66760 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontFormat.java @@ -4,14 +4,14 @@ package org.terasology.engine.rendering.assets.font; import com.google.common.base.Charsets; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; import org.terasology.engine.rendering.assets.material.Material; import org.terasology.engine.rendering.assets.texture.Texture; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.naming.Name; import java.io.BufferedReader; import java.io.IOException; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontImpl.java b/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontImpl.java index f75cea6384c..83a5aa70b91 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontImpl.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontImpl.java @@ -3,8 +3,8 @@ package org.terasology.engine.rendering.assets.font; import org.joml.Vector2i; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontMaterialProducer.java b/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontMaterialProducer.java index 97448f7f35f..dd69808a2f7 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontMaterialProducer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/font/FontMaterialProducer.java @@ -4,14 +4,14 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.AssetDataProducer; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.annotations.RegisterAssetDataProducer; +import org.terasology.gestalt.assets.AssetDataProducer; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.material.MaterialData; import org.terasology.engine.rendering.assets.shader.Shader; import org.terasology.engine.rendering.assets.texture.Texture; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetDataProducer; +import org.terasology.gestalt.naming.Name; import java.io.IOException; import java.util.Collections; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/font/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/assets/font/package-info.java index 9136f398f4d..44af06691e2 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/font/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/font/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.assets.font; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/material/BaseMaterial.java b/engine/src/main/java/org/terasology/engine/rendering/assets/material/BaseMaterial.java index 955f6c602bd..9667b3d953d 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/material/BaseMaterial.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/material/BaseMaterial.java @@ -7,8 +7,9 @@ import org.joml.Vector2fc; import org.joml.Vector3fc; import org.joml.Vector4fc; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.shader.ShaderProgramFeature; import org.terasology.engine.rendering.assets.texture.Texture; import org.terasology.engine.rendering.cameras.Camera; @@ -17,10 +18,15 @@ public abstract class BaseMaterial extends Material { + protected BaseMaterial(ResourceUrn urn, AssetType assetType, DisposableResource resource) { + super(urn, assetType,resource); + } + protected BaseMaterial(ResourceUrn urn, AssetType assetType) { super(urn, assetType); } + @Override public abstract void recompile(); diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/material/Material.java b/engine/src/main/java/org/terasology/engine/rendering/assets/material/Material.java index a049a233c38..4de5e88b4d5 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/material/Material.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/material/Material.java @@ -8,12 +8,13 @@ import org.joml.Vector2fc; import org.joml.Vector3fc; import org.joml.Vector4fc; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.rendering.assets.shader.ShaderProgramFeature; import org.terasology.engine.rendering.assets.texture.Texture; import org.terasology.engine.rendering.cameras.Camera; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import java.nio.FloatBuffer; @@ -21,6 +22,10 @@ */ public abstract class Material extends Asset { + protected Material(ResourceUrn urn, AssetType assetType, DisposableResource resource) { + super(urn, assetType, resource); + } + protected Material(ResourceUrn urn, AssetType assetType) { super(urn, assetType); } diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/material/MaterialData.java b/engine/src/main/java/org/terasology/engine/rendering/assets/material/MaterialData.java index 6436a473f5a..b142e2227d5 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/material/MaterialData.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/material/MaterialData.java @@ -3,9 +3,9 @@ package org.terasology.engine.rendering.assets.material; import com.google.common.collect.Maps; -import org.terasology.assets.AssetData; import org.terasology.engine.rendering.assets.shader.Shader; import org.terasology.engine.rendering.assets.texture.Texture; +import org.terasology.gestalt.assets.AssetData; import java.util.Map; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/material/MaterialFormat.java b/engine/src/main/java/org/terasology/engine/rendering/assets/material/MaterialFormat.java index 2f772bcc0e3..301590127fc 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/material/MaterialFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/material/MaterialFormat.java @@ -13,13 +13,13 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.shader.Shader; import org.terasology.engine.rendering.assets.texture.Texture; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import java.io.IOException; import java.io.InputStreamReader; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/material/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/assets/material/package-info.java index e2547f6f43e..b98f8e35fd3 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/material/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/material/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.assets.material; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/Mesh.java b/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/Mesh.java index 0b42b11bf7b..078b422834f 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/Mesh.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/Mesh.java @@ -3,9 +3,10 @@ package org.terasology.engine.rendering.assets.mesh; import gnu.trove.list.TFloatList; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.joml.geom.AABBf; import org.terasology.joml.geom.AABBfc; @@ -15,6 +16,10 @@ protected Mesh(ResourceUrn urn, AssetType assetType) { super(urn, assetType); } + protected Mesh(ResourceUrn urn, AssetType assetType, DisposableResource resource) { + super(urn, assetType, resource); + } + public abstract AABBfc getAABB(); protected AABBf getBound(MeshData data, AABBf dest) { diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/MeshBuilder.java b/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/MeshBuilder.java index 82b459cc2f5..86833761fde 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/MeshBuilder.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/MeshBuilder.java @@ -5,8 +5,8 @@ import org.joml.Vector2fc; import org.joml.Vector3f; import org.joml.Vector3fc; -import org.terasology.assets.ResourceUrn; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.nui.Colorc; import org.terasology.engine.utilities.Assets; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/MeshData.java b/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/MeshData.java index b604cc2d7a0..e5775e14d5f 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/MeshData.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/MeshData.java @@ -8,7 +8,7 @@ import org.lwjgl.opengl.GL30; import org.lwjgl.opengl.GL33; import org.lwjgl.opengl.GL44; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import org.terasology.engine.rendering.assets.mesh.layout.Layout; import java.util.ArrayList; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/ObjMeshFormat.java b/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/ObjMeshFormat.java index 258d5d641e9..eb9fe543af5 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/ObjMeshFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/ObjMeshFormat.java @@ -10,10 +10,10 @@ import org.joml.Vector3i; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import java.io.BufferedReader; import java.io.IOException; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/package-info.java index 0d1368c1006..f7223de5562 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/mesh/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.assets.mesh; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/shader/GLSLShaderFormat.java b/engine/src/main/java/org/terasology/engine/rendering/assets/shader/GLSLShaderFormat.java index 487e055c334..95482f4b2ed 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/shader/GLSLShaderFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/shader/GLSLShaderFormat.java @@ -11,12 +11,13 @@ import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonParseException; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.exceptions.InvalidAssetFilenameException; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.format.AssetFileFormat; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.exceptions.InvalidAssetFilenameException; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.format.AssetFileFormat; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.module.resources.FileReference; +import org.terasology.gestalt.naming.Name; import java.io.IOException; import java.io.InputStreamReader; @@ -24,6 +25,7 @@ import java.lang.reflect.Type; import java.nio.file.PathMatcher; import java.util.List; +import java.util.function.Predicate; /** */ @@ -42,9 +44,9 @@ public GLSLShaderFormat() { } @Override - public PathMatcher getFileMatcher() { + public Predicate getFileMatcher() { return path -> { - String name = path.getFileName().toString(); + String name = path.getName(); return name.endsWith(FRAGMENT_SUFFIX) || name.endsWith(VERTEX_SUFFIX) || name.endsWith(GEOMETRY_SUFFIX) diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/shader/Shader.java b/engine/src/main/java/org/terasology/engine/rendering/assets/shader/Shader.java index 3ebb850d2b2..26f526193ef 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/shader/Shader.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/shader/Shader.java @@ -3,14 +3,19 @@ package org.terasology.engine.rendering.assets.shader; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; /** */ public abstract class Shader extends Asset { + protected Shader(ResourceUrn urn, AssetType assetType, DisposableResource resource) { + super(urn, assetType, resource); + } + protected Shader(ResourceUrn urn, AssetType assetType) { super(urn, assetType); } diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/shader/ShaderData.java b/engine/src/main/java/org/terasology/engine/rendering/assets/shader/ShaderData.java index e233009fd13..4e76d95d378 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/shader/ShaderData.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/shader/ShaderData.java @@ -3,7 +3,7 @@ package org.terasology.engine.rendering.assets.shader; import com.google.common.collect.ImmutableList; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import java.util.List; import java.util.regex.Matcher; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/shader/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/assets/shader/package-info.java index 58e42f2ec75..013ec216b2d 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/shader/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/shader/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.assets.shader; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/skeletalmesh/SkeletalMesh.java b/engine/src/main/java/org/terasology/engine/rendering/assets/skeletalmesh/SkeletalMesh.java index 631893ad67a..61cbce3fbdf 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/skeletalmesh/SkeletalMesh.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/skeletalmesh/SkeletalMesh.java @@ -3,9 +3,10 @@ package org.terasology.engine.rendering.assets.skeletalmesh; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.joml.geom.AABBf; import java.util.Collection; @@ -14,6 +15,10 @@ */ public abstract class SkeletalMesh extends Asset { + protected SkeletalMesh(ResourceUrn urn, AssetType assetType, DisposableResource disposableResource) { + super(urn, assetType, disposableResource); + } + protected SkeletalMesh(ResourceUrn urn, AssetType assetType) { super(urn, assetType); } @@ -25,7 +30,6 @@ protected SkeletalMesh(ResourceUrn urn, AssetType assetType public abstract Bone getBone(String boneName); /** - * * @return the boundings of the mesh when it its not being animated. */ public abstract AABBf getStaticAabb(); diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/skeletalmesh/SkeletalMeshData.java b/engine/src/main/java/org/terasology/engine/rendering/assets/skeletalmesh/SkeletalMeshData.java index 04f8404f276..2059235d71e 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/skeletalmesh/SkeletalMeshData.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/skeletalmesh/SkeletalMeshData.java @@ -10,7 +10,7 @@ import org.joml.Matrix4f; import org.joml.Vector2f; import org.joml.Vector3f; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import org.terasology.joml.geom.AABBf; import java.util.Arrays; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/skeletalmesh/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/assets/skeletalmesh/package-info.java index 3daa39f958c..210326e910d 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/skeletalmesh/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/skeletalmesh/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.assets.skeletalmesh; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/AWTTextureFormat.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/AWTTextureFormat.java index cdab0675174..9b32a70118a 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/AWTTextureFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/AWTTextureFormat.java @@ -3,11 +3,11 @@ package org.terasology.engine.rendering.assets.texture; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.ModuleAssetDataProducer; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.module.resources.FileReference; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; @@ -17,8 +17,10 @@ import java.io.IOException; import java.io.InputStream; import java.nio.ByteBuffer; -import java.nio.file.PathMatcher; import java.util.List; +import java.util.function.Predicate; + +import static org.terasology.gestalt.assets.module.ModuleAssetScanner.OVERRIDE_FOLDER; /** */ @@ -26,18 +28,18 @@ public class AWTTextureFormat extends AbstractAssetFileFormat { private Texture.FilterMode defaultFilterMode; - private PathMatcher pathMatcher; + private Predicate pathMatcher; public AWTTextureFormat() { this(Texture.FilterMode.NEAREST, path -> { - if (path.getName(1).toString().equals(ModuleAssetDataProducer.OVERRIDE_FOLDER)) { - return path.getName(3).toString().equals("textures"); - } else { - return path.getName(2).toString().equals("textures"); - } - }); + if (path.getPath().get(0).equals(OVERRIDE_FOLDER)) { + return path.getPath().get(2).equals("textures"); + } else { + return path.getPath().get(1).equals("textures"); + } + }); } - public AWTTextureFormat(Texture.FilterMode defaultFilterMode, PathMatcher pathMatcher) { + public AWTTextureFormat(Texture.FilterMode defaultFilterMode, Predicate pathMatcher) { super("jpeg", "jpg", "bmp", "gif", "png"); this.defaultFilterMode = defaultFilterMode; this.pathMatcher = pathMatcher; @@ -54,8 +56,8 @@ public TextureData load(ResourceUrn urn, List inputs) throws IOEx } @Override - public PathMatcher getFileMatcher() { - return path -> super.getFileMatcher().matches(path) && pathMatcher.matches(path); + public Predicate getFileMatcher() { + return path -> super.getFileMatcher().test(path) && pathMatcher.test(path); } /** diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/ColorTextureProducer.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/ColorTextureProducer.java index 902af8c06c9..74216d5e6a0 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/ColorTextureProducer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/ColorTextureProducer.java @@ -4,11 +4,11 @@ package org.terasology.engine.rendering.assets.texture; import com.google.common.collect.ImmutableSet; -import org.terasology.assets.AssetDataProducer; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.module.annotations.RegisterAssetDataProducer; +import org.terasology.gestalt.assets.AssetDataProducer; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.TerasologyConstants; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetDataProducer; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.Color; import java.io.IOException; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/NoiseTextureProducer.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/NoiseTextureProducer.java index 64784ab9620..4c23518cbf3 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/NoiseTextureProducer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/NoiseTextureProducer.java @@ -4,11 +4,11 @@ package org.terasology.engine.rendering.assets.texture; import com.google.common.collect.ImmutableSet; -import org.terasology.assets.AssetDataProducer; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.module.annotations.RegisterAssetDataProducer; +import org.terasology.gestalt.assets.AssetDataProducer; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.TerasologyConstants; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetDataProducer; +import org.terasology.gestalt.naming.Name; import java.io.IOException; import java.util.Collections; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/PNGTextureFormat.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/PNGTextureFormat.java index ed33f652bfa..e2a11ba5595 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/PNGTextureFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/PNGTextureFormat.java @@ -4,24 +4,27 @@ package org.terasology.engine.rendering.assets.texture; import de.matthiasmann.twl.utils.PNGDecoder; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.module.resources.FileReference; import java.io.IOException; import java.io.InputStream; import java.nio.ByteBuffer; import java.nio.file.PathMatcher; import java.util.List; +import java.util.function.Predicate; /** */ public class PNGTextureFormat extends AbstractAssetFileFormat { private Texture.FilterMode defaultFilterMode; - private PathMatcher pathMatcher; + private final Predicate pathMatcher; - public PNGTextureFormat(Texture.FilterMode defaultFilterMode, PathMatcher pathMatcher) { + + public PNGTextureFormat(Texture.FilterMode defaultFilterMode, Predicate pathMatcher) { super("png"); this.defaultFilterMode = defaultFilterMode; this.pathMatcher = pathMatcher; @@ -49,7 +52,7 @@ public TextureData load(ResourceUrn urn, List inputs) throws IOEx } @Override - public PathMatcher getFileMatcher() { - return path -> super.getFileMatcher().matches(path) && pathMatcher.matches(path); + public Predicate getFileMatcher() { + return path -> super.getFileMatcher().test(path) && pathMatcher.test(path); } } diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/Texture.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/Texture.java index 6bc58551daa..24f19dbdb4f 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/Texture.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/Texture.java @@ -2,8 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.assets.texture; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.joml.geom.Rectanglef; import org.terasology.joml.geom.Rectanglefc; @@ -15,6 +16,11 @@ protected Texture(ResourceUrn urn, AssetType assetType) { super(urn, assetType); } + protected Texture(ResourceUrn urn, AssetType assetType, DisposableResource disposableResource) { + super(urn, assetType,disposableResource); + } + + public enum WrapMode { CLAMP, REPEAT @@ -44,8 +50,8 @@ public enum Type { public abstract boolean isLoaded(); - public abstract void subscribeToDisposal(Runnable subscriber); + public abstract void subscribeToDisposal(DisposableResource subscriber); - public abstract void unsubscribeToDisposal(Runnable subscriber); + public abstract void unsubscribeToDisposal(DisposableResource subscriber); } diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureData.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureData.java index 7174b2911df..42f2f17601c 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureData.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureData.java @@ -3,7 +3,7 @@ package org.terasology.engine.rendering.assets.texture; import com.google.common.math.IntMath; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import java.nio.ByteBuffer; import java.util.Arrays; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureInfoFormat.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureInfoFormat.java index 5aa3f3d28d0..0dc89dacf95 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureInfoFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureInfoFormat.java @@ -5,10 +5,10 @@ import com.google.common.base.Charsets; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import org.terasology.assets.format.AbstractAssetAlterationFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.annotations.RegisterAssetSupplementalFileFormat; import org.terasology.engine.utilities.gson.CaseInsensitiveEnumTypeAdapterFactory; +import org.terasology.gestalt.assets.format.AbstractAssetAlterationFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetSupplementalFileFormat; import java.io.IOException; import java.io.InputStreamReader; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureRegionAsset.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureRegionAsset.java index b6416b9528f..da77ad32c76 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureRegionAsset.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureRegionAsset.java @@ -2,10 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.assets.texture; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetData; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetData; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; /** */ @@ -14,4 +15,8 @@ public abstract class TextureRegionAsset extends Asset i protected TextureRegionAsset(ResourceUrn urn, AssetType assetType) { super(urn, assetType); } + + protected TextureRegionAsset(ResourceUrn urn, AssetType assetType, DisposableResource disposableResource) { + super(urn, assetType,disposableResource); + } } diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureUtil.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureUtil.java index c9a718c2334..606720f7cd3 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureUtil.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/TextureUtil.java @@ -4,10 +4,10 @@ package org.terasology.engine.rendering.assets.texture; import com.google.common.primitives.UnsignedBytes; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.TerasologyConstants; import org.terasology.joml.geom.Rectanglei; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.Color; import java.awt.image.BufferedImage; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/package-info.java index 43e75e0bc08..2891cb7a287 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.assets.texture; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/subtexture/Subtexture.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/subtexture/Subtexture.java index 2de60c1190a..ef21f526698 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/subtexture/Subtexture.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/subtexture/Subtexture.java @@ -3,9 +3,10 @@ package org.terasology.engine.rendering.assets.texture.subtexture; import org.joml.Vector2i; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.joml.geom.Rectanglef; import org.terasology.joml.geom.Rectanglei; import org.terasology.math.TeraMath; @@ -20,7 +21,7 @@ public class Subtexture extends TextureRegionAsset { private Texture texture; private Rectanglef subregion; - private Runnable disposalAction; + private DisposableResource disposalAction; public Subtexture(ResourceUrn urn, AssetType assetType, SubtextureData data) { super(urn, assetType); diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/subtexture/SubtextureData.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/subtexture/SubtextureData.java index aac3c8500fd..9f49e564436 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/subtexture/SubtextureData.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/subtexture/SubtextureData.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.assets.texture.subtexture; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import org.terasology.joml.geom.Rectanglef; import org.terasology.engine.rendering.assets.texture.Texture; diff --git a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/subtexture/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/subtexture/package-info.java index deae3bc5d92..7352d5838f3 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/assets/texture/subtexture/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/assets/texture/subtexture/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.assets.texture.subtexture; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/backdrop/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/backdrop/package-info.java index 31f1074b316..f815bcbf902 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/backdrop/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/backdrop/package-info.java @@ -4,4 +4,4 @@ @API package org.terasology.engine.rendering.backdrop; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/cameras/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/cameras/package-info.java index 649536a781c..fce825770c6 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/cameras/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/cameras/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.cameras; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/AbstractNode.java b/engine/src/main/java/org/terasology/engine/rendering/dag/AbstractNode.java index 68538dce24b..db018f58552 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/AbstractNode.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/AbstractNode.java @@ -6,10 +6,10 @@ import com.google.common.collect.Sets; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.engine.core.module.ModuleManager; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.context.Context; import org.terasology.engine.core.SimpleUri; -import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.rendering.assets.material.Material; import org.terasology.engine.rendering.dag.dependencyConnections.BufferPair; import org.terasology.engine.rendering.dag.dependencyConnections.BufferPairConnection; @@ -19,7 +19,7 @@ import org.terasology.engine.rendering.opengl.BaseFboManager; import org.terasology.engine.rendering.opengl.FBO; import org.terasology.engine.rendering.opengl.FboConfig; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.utilities.Assets; import javax.annotation.Nullable; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/ConditionDependentNode.java b/engine/src/main/java/org/terasology/engine/rendering/dag/ConditionDependentNode.java index 90646db10d1..b2671cf632b 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/ConditionDependentNode.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/ConditionDependentNode.java @@ -5,7 +5,7 @@ import com.google.common.collect.Lists; import org.terasology.engine.context.Context; import org.terasology.engine.rendering.world.WorldRenderer; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/ModuleRendering.java b/engine/src/main/java/org/terasology/engine/rendering/dag/ModuleRendering.java index e74b2fbf544..711c059329b 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/ModuleRendering.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/ModuleRendering.java @@ -13,7 +13,7 @@ import org.terasology.engine.rendering.opengl.FboConfig; import org.terasology.engine.rendering.opengl.ScalingFactors; import org.terasology.engine.rendering.world.WorldRenderer; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.properties.Range; @RegisterSystem diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/Node.java b/engine/src/main/java/org/terasology/engine/rendering/dag/Node.java index 926519758a9..0f26f60d644 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/Node.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/Node.java @@ -10,7 +10,7 @@ import org.terasology.engine.rendering.dag.dependencyConnections.BufferPairConnection; import org.terasology.engine.rendering.dag.dependencyConnections.DependencyConnection; import org.terasology.engine.rendering.dag.dependencyConnections.RunOrderConnection; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import java.util.Map; import java.util.Set; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/RenderGraph.java b/engine/src/main/java/org/terasology/engine/rendering/dag/RenderGraph.java index 2dabb205a95..0875fbf14f7 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/RenderGraph.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/RenderGraph.java @@ -14,7 +14,7 @@ import org.terasology.engine.rendering.dag.dependencyConnections.BufferPairConnection; import org.terasology.engine.rendering.dag.dependencyConnections.DependencyConnection; import org.terasology.engine.rendering.dag.dependencyConnections.FboConnection; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.rendering.ShaderManager; import java.util.ArrayList; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/dependencyConnections/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/dag/dependencyConnections/package-info.java index a5b1940d1ef..8156ea661d2 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/dependencyConnections/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/dependencyConnections/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.dag.dependencyConnections; - import org.terasology.module.sandbox.API; + import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/nodes/RefractiveReflectiveBlocksNodeProxy.java b/engine/src/main/java/org/terasology/engine/rendering/dag/nodes/RefractiveReflectiveBlocksNodeProxy.java index 73bf39610dc..c181219d613 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/nodes/RefractiveReflectiveBlocksNodeProxy.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/nodes/RefractiveReflectiveBlocksNodeProxy.java @@ -4,7 +4,7 @@ import org.terasology.engine.context.Context; import org.terasology.engine.core.SimpleUri; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.properties.Range; import org.terasology.engine.rendering.dag.AbstractNode; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/nodes/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/dag/nodes/package-info.java index a0c666a9246..4c240ada941 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/nodes/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/nodes/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.dag.nodes; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/dag/package-info.java index 1d5b1a13857..f40f7875d38 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/package-info.java @@ -21,4 +21,4 @@ @API package org.terasology.engine.rendering.dag; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/EnableMaterial.java b/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/EnableMaterial.java index d237e6b05e3..a6520e00bd7 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/EnableMaterial.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/EnableMaterial.java @@ -3,7 +3,7 @@ package org.terasology.engine.rendering.dag.stateChanges; import com.google.common.base.Objects; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.rendering.assets.material.Material; import org.terasology.engine.rendering.ShaderManager; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTexture.java b/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTexture.java index 55dbdca87c0..212fc86adb9 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTexture.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTexture.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.dag.stateChanges; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.material.Material; import org.terasology.engine.rendering.assets.texture.Texture; import org.terasology.engine.rendering.dag.StateChange; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTexture2D.java b/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTexture2D.java index 376846102e9..ebed2d3454a 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTexture2D.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTexture2D.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.dag.stateChanges; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTexture3D.java b/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTexture3D.java index 8c2cdd55048..fa1a47d43fc 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTexture3D.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTexture3D.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.dag.stateChanges; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import static org.lwjgl.opengl.GL12.GL_TEXTURE_3D; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTextureFromFbo.java b/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTextureFromFbo.java index dd9edeb838c..d6b6b415b38 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTextureFromFbo.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/SetInputTextureFromFbo.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.dag.stateChanges; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.SimpleUri; import org.terasology.engine.rendering.assets.material.Material; import org.terasology.engine.rendering.opengl.BaseFboManager; diff --git a/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/package-info.java index 49ab37aea49..5f9420c835f 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/dag/stateChanges/package-info.java @@ -11,4 +11,4 @@ @API package org.terasology.engine.rendering.dag.stateChanges; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/gltf/BinaryDataFormat.java b/engine/src/main/java/org/terasology/engine/rendering/gltf/BinaryDataFormat.java index 963472e73a7..bac6da0fcd2 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/gltf/BinaryDataFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/gltf/BinaryDataFormat.java @@ -3,10 +3,10 @@ package org.terasology.engine.rendering.gltf; import com.google.common.io.ByteStreams; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import java.io.IOException; import java.io.InputStream; diff --git a/engine/src/main/java/org/terasology/engine/rendering/gltf/ByteBufferAsset.java b/engine/src/main/java/org/terasology/engine/rendering/gltf/ByteBufferAsset.java index b8be350ccab..f47e2bcf648 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/gltf/ByteBufferAsset.java +++ b/engine/src/main/java/org/terasology/engine/rendering/gltf/ByteBufferAsset.java @@ -2,9 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.gltf; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; /** * A ByteBufferAsset is holds binary data. diff --git a/engine/src/main/java/org/terasology/engine/rendering/gltf/ByteBufferData.java b/engine/src/main/java/org/terasology/engine/rendering/gltf/ByteBufferData.java index 8f78116da1b..aa0ce85cb7c 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/gltf/ByteBufferData.java +++ b/engine/src/main/java/org/terasology/engine/rendering/gltf/ByteBufferData.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.gltf; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; /** * Holds a byte array for loading a ByteBufferAsset diff --git a/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFAnimationFormat.java b/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFAnimationFormat.java index 52232474299..ee60c91ec30 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFAnimationFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFAnimationFormat.java @@ -12,10 +12,7 @@ import gnu.trove.map.hash.TIntIntHashMap; import org.joml.Quaternionf; import org.joml.Vector3f; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.animation.MeshAnimationBundleData; import org.terasology.engine.rendering.assets.animation.MeshAnimationData; import org.terasology.engine.rendering.assets.animation.MeshAnimationFrame; @@ -26,6 +23,9 @@ import org.terasology.engine.rendering.gltf.model.GLTFAnimationSampler; import org.terasology.engine.rendering.gltf.model.GLTFBufferView; import org.terasology.engine.rendering.gltf.model.GLTFChannel; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import org.terasology.joml.geom.AABBf; import org.terasology.engine.rendering.gltf.model.GLTFSkin; diff --git a/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFCommonFormat.java b/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFCommonFormat.java index 4f13089204b..e83a4f87b2d 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFCommonFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFCommonFormat.java @@ -23,10 +23,8 @@ import org.joml.Vector4i; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.AssetData; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.AssetData; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.skeletalmesh.Bone; import org.terasology.engine.rendering.gltf.deserializers.GLTFChannelPathDeserializer; import org.terasology.engine.rendering.gltf.deserializers.GLTFComponentTypeDeserializer; @@ -52,6 +50,8 @@ import org.terasology.engine.rendering.gltf.model.GLTFSkin; import org.terasology.engine.rendering.gltf.model.GLTFTargetBuffer; import org.terasology.engine.rendering.gltf.model.GLTFVersion; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.management.AssetManager; import java.io.IOException; import java.nio.ByteBuffer; diff --git a/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFMeshFormat.java b/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFMeshFormat.java index 09eaf4b5a0e..125410be8df 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFMeshFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFMeshFormat.java @@ -8,10 +8,7 @@ import org.joml.Vector3f; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.mesh.MeshData; import org.terasology.engine.rendering.assets.mesh.StandardMeshData; import org.terasology.engine.rendering.gltf.model.GLTF; @@ -20,6 +17,9 @@ import org.terasology.engine.rendering.gltf.model.GLTFMesh; import org.terasology.engine.rendering.gltf.model.GLTFNode; import org.terasology.engine.rendering.gltf.model.GLTFPrimitive; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import java.io.IOException; import java.io.InputStreamReader; diff --git a/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFSkeletalMeshFormat.java b/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFSkeletalMeshFormat.java index 0a11654ecec..aacfd174fe7 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFSkeletalMeshFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/gltf/GLTFSkeletalMeshFormat.java @@ -9,10 +9,7 @@ import org.joml.Vector3f; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.skeletalmesh.Bone; import org.terasology.engine.rendering.assets.skeletalmesh.BoneWeight; import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMeshData; @@ -23,6 +20,9 @@ import org.terasology.engine.rendering.gltf.model.GLTFMesh; import org.terasology.engine.rendering.gltf.model.GLTFPrimitive; import org.terasology.engine.rendering.gltf.model.GLTFSkin; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import java.io.IOException; import java.io.InputStreamReader; diff --git a/engine/src/main/java/org/terasology/engine/rendering/iconmesh/IconMeshDataProducer.java b/engine/src/main/java/org/terasology/engine/rendering/iconmesh/IconMeshDataProducer.java index b6e888af433..da385608481 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/iconmesh/IconMeshDataProducer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/iconmesh/IconMeshDataProducer.java @@ -5,11 +5,11 @@ import com.google.common.base.Function; import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableSet; -import org.terasology.assets.AssetDataProducer; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.annotations.RegisterAssetDataProducer; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.AssetDataProducer; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetDataProducer; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.rendering.assets.mesh.MeshData; import org.terasology.engine.rendering.assets.texture.TextureRegionAsset; diff --git a/engine/src/main/java/org/terasology/engine/rendering/iconmesh/IconMeshFactory.java b/engine/src/main/java/org/terasology/engine/rendering/iconmesh/IconMeshFactory.java index 84c51b5d921..4fbe11fd220 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/iconmesh/IconMeshFactory.java +++ b/engine/src/main/java/org/terasology/engine/rendering/iconmesh/IconMeshFactory.java @@ -3,13 +3,13 @@ package org.terasology.engine.rendering.iconmesh; import org.joml.Vector4f; -import org.terasology.assets.Asset; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.primitives.Tessellator; import org.terasology.engine.rendering.primitives.TessellatorHelper; import org.terasology.joml.geom.Rectanglei; -import org.terasology.module.sandbox.API; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.rendering.assets.mesh.Mesh; import org.terasology.engine.rendering.assets.mesh.MeshData; import org.terasology.engine.rendering.assets.texture.TextureRegion; diff --git a/engine/src/main/java/org/terasology/engine/rendering/logic/FloatingTextRenderer.java b/engine/src/main/java/org/terasology/engine/rendering/logic/FloatingTextRenderer.java index cf84efbdd48..c3b7aa30a58 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/logic/FloatingTextRenderer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/logic/FloatingTextRenderer.java @@ -7,7 +7,6 @@ import org.joml.Vector3fc; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.management.AssetManager; import org.terasology.engine.entitySystem.entity.EntityManager; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.entity.lifecycleEvents.BeforeDeactivateComponent; @@ -23,6 +22,7 @@ import org.terasology.engine.rendering.assets.material.Material; import org.terasology.engine.rendering.cameras.Camera; import org.terasology.engine.rendering.opengl.OpenGLUtils; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.nui.Color; import org.terasology.nui.HorizontalAlign; import org.terasology.engine.registry.In; diff --git a/engine/src/main/java/org/terasology/engine/rendering/logic/MeshRenderer.java b/engine/src/main/java/org/terasology/engine/rendering/logic/MeshRenderer.java index 5d203e293cf..f713e3673bf 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/logic/MeshRenderer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/logic/MeshRenderer.java @@ -23,6 +23,7 @@ import org.terasology.engine.entitySystem.systems.RegisterSystem; import org.terasology.engine.entitySystem.systems.RenderSystem; import org.terasology.engine.rendering.assets.material.Material; +import org.terasology.engine.rendering.assets.shader.ShaderProgramFeature; import org.terasology.engine.rendering.opengl.OpenGLMesh; import org.terasology.engine.rendering.world.WorldRenderer; import org.terasology.joml.geom.AABBf; diff --git a/engine/src/main/java/org/terasology/engine/rendering/logic/RegionOutlineRenderer.java b/engine/src/main/java/org/terasology/engine/rendering/logic/RegionOutlineRenderer.java index e04b07fc6a6..f43ac446413 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/logic/RegionOutlineRenderer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/logic/RegionOutlineRenderer.java @@ -11,7 +11,6 @@ import org.joml.Vector3f; import org.lwjgl.BufferUtils; import org.lwjgl.opengl.GL11; -import org.terasology.assets.management.AssetManager; import org.terasology.engine.entitySystem.entity.EntityManager; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.entity.lifecycleEvents.BeforeDeactivateComponent; @@ -23,6 +22,7 @@ import org.terasology.engine.entitySystem.systems.RenderSystem; import org.terasology.engine.rendering.assets.material.Material; import org.terasology.engine.rendering.world.WorldRenderer; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.joml.geom.AABBf; import org.terasology.engine.registry.In; import org.terasology.engine.world.block.BlockRegion; diff --git a/engine/src/main/java/org/terasology/engine/rendering/logic/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/logic/package-info.java index 9f64181b9f1..81de14d6493 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/logic/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/logic/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.logic; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/CanvasUtility.java b/engine/src/main/java/org/terasology/engine/rendering/nui/CanvasUtility.java index b0245414321..80bd9365f0f 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/CanvasUtility.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/CanvasUtility.java @@ -5,7 +5,7 @@ import org.joml.Quaternionfc; import org.joml.Vector2ic; import org.joml.Vector3fc; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.material.Material; import org.terasology.engine.rendering.assets.mesh.Mesh; import org.terasology.engine.rendering.assets.texture.Texture; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/CoreLayout.java b/engine/src/main/java/org/terasology/engine/rendering/nui/CoreLayout.java deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/CoreScreenLayer.java b/engine/src/main/java/org/terasology/engine/rendering/nui/CoreScreenLayer.java index b2555331560..68f6bcf337a 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/CoreScreenLayer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/CoreScreenLayer.java @@ -4,7 +4,7 @@ package org.terasology.engine.rendering.nui; import org.joml.Vector2i; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystem; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystemStub; import org.terasology.input.ButtonState; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/CoreWidget.java b/engine/src/main/java/org/terasology/engine/rendering/nui/CoreWidget.java deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/NUIManager.java b/engine/src/main/java/org/terasology/engine/rendering/nui/NUIManager.java index 736b0b488cc..43c4be1e080 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/NUIManager.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/NUIManager.java @@ -2,15 +2,15 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.entitySystem.systems.ComponentSystem; -import org.terasology.engine.rendering.nui.internal.WidgetLibrary; import org.terasology.engine.rendering.nui.layers.hud.HUDScreenLayer; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.nui.ControlWidget; import org.terasology.nui.FocusManager; import org.terasology.nui.UIWidget; import org.terasology.nui.asset.UIElement; import org.terasology.nui.canvas.CanvasControl; +import org.terasology.nui.reflection.WidgetLibrary; import java.util.Deque; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/ScreenLayerClosedEvent.java b/engine/src/main/java/org/terasology/engine/rendering/nui/ScreenLayerClosedEvent.java index 0586ba1806e..a9b0db9b8a4 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/ScreenLayerClosedEvent.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/ScreenLayerClosedEvent.java @@ -2,9 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.event.Event; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.network.OwnerEvent; /** diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/UIWidget.java b/engine/src/main/java/org/terasology/engine/rendering/nui/UIWidget.java deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/asset/UIDeltaFormat.java b/engine/src/main/java/org/terasology/engine/rendering/nui/asset/UIDeltaFormat.java index ed7932d3d7f..8c6b8ec5960 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/asset/UIDeltaFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/asset/UIDeltaFormat.java @@ -8,9 +8,9 @@ import com.google.gson.stream.JsonReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.format.AbstractAssetAlterationFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.annotations.RegisterAssetDeltaFileFormat; +import org.terasology.gestalt.assets.format.AbstractAssetAlterationFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetDeltaFileFormat; import org.terasology.nui.asset.UIData; import org.terasology.nui.skin.UISkin; import org.terasology.engine.utilities.Assets; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/asset/UIFormat.java b/engine/src/main/java/org/terasology/engine/rendering/nui/asset/UIFormat.java index a3f6b7f7f36..567132e2eea 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/asset/UIFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/asset/UIFormat.java @@ -16,10 +16,7 @@ import com.google.gson.stream.JsonReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.module.ModuleContext; import org.terasology.engine.i18n.TranslationSystem; import org.terasology.engine.persistence.typeHandling.extensionTypes.AssetTypeHandler; @@ -30,6 +27,9 @@ import org.terasology.engine.rendering.nui.NUIManager; import org.terasology.engine.utilities.ReflectionUtil; import org.terasology.engine.utilities.gson.CaseInsensitiveEnumTypeAdapterFactory; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import org.terasology.nui.LayoutHint; import org.terasology.nui.UILayout; import org.terasology.nui.UIWidget; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/contextMenu/ContextMenuScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/contextMenu/ContextMenuScreen.java index 91ea0f057b5..6e21861b225 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/contextMenu/ContextMenuScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/contextMenu/ContextMenuScreen.java @@ -4,7 +4,7 @@ import com.google.common.collect.Lists; import org.joml.Vector2i; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.joml.geom.Rectanglei; import org.terasology.nui.BaseInteractionListener; import org.terasology.nui.Canvas; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/contextMenu/ContextMenuUtils.java b/engine/src/main/java/org/terasology/engine/rendering/nui/contextMenu/ContextMenuUtils.java index e67f696c20f..1f93adc1cd2 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/contextMenu/ContextMenuUtils.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/contextMenu/ContextMenuUtils.java @@ -4,7 +4,7 @@ import com.google.common.collect.Lists; import org.joml.Vector2i; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.nui.databinding.Binding; import org.terasology.nui.databinding.ReadOnlyBinding; import org.terasology.nui.widgets.UIList; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/contextMenu/MenuTree.java b/engine/src/main/java/org/terasology/engine/rendering/nui/contextMenu/MenuTree.java index c47b2e134c5..b663aaf7758 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/contextMenu/MenuTree.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/contextMenu/MenuTree.java @@ -3,7 +3,7 @@ package org.terasology.engine.rendering.nui.contextMenu; import com.google.common.collect.Lists; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.util.List; import java.util.function.Consumer; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/binds/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/binds/package-info.java index 306678fb850..0c429dfe274 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/binds/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/binds/package-info.java @@ -5,4 +5,4 @@ package org.terasology.engine.rendering.nui.editor.binds; import org.terasology.input.InputCategory; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/AbstractEditorScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/AbstractEditorScreen.java index f9cf5123a0a..e8d7c1e9acd 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/AbstractEditorScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/AbstractEditorScreen.java @@ -10,25 +10,26 @@ import com.google.gson.stream.JsonReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.exceptions.InvalidUrnException; -import org.terasology.assets.format.AssetDataFile; import org.terasology.engine.core.module.ModuleManager; +import org.terasology.engine.registry.In; +import org.terasology.engine.rendering.nui.CoreScreenLayer; import org.terasology.engine.rendering.nui.editor.systems.AbstractEditorSystem; import org.terasology.engine.rendering.nui.layers.mainMenu.ConfirmPopup; import org.terasology.engine.rendering.nui.widgets.JsonEditorTreeView; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.exceptions.InvalidUrnException; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.resources.DirectoryFileSource; +import org.terasology.gestalt.naming.Name; import org.terasology.input.Keyboard; import org.terasology.input.device.KeyboardDevice; -import org.terasology.module.PathModule; -import org.terasology.naming.Name; import org.terasology.nui.Canvas; import org.terasology.nui.events.NUIKeyEvent; import org.terasology.nui.widgets.UITextEntry; import org.terasology.nui.widgets.treeView.JsonTree; import org.terasology.nui.widgets.treeView.JsonTreeConverter; import org.terasology.nui.widgets.treeView.JsonTreeValue; -import org.terasology.engine.registry.In; -import org.terasology.engine.rendering.nui.CoreScreenLayer; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; @@ -44,9 +45,12 @@ import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Arrays; import java.util.List; +import static com.google.common.base.Verify.verifyNotNull; + /** * A base screen for the NUI screen/skin editors. */ @@ -329,14 +333,18 @@ private void saveToFile(BufferedOutputStream outputStream) throws IOException { protected Path getPath(AssetDataFile source) { List path = source.getPath(); Name moduleName = new Name(path.get(0)); - if (moduleManager.getEnvironment().get(moduleName) instanceof PathModule) { + Module module = verifyNotNull(moduleManager.getEnvironment().get(moduleName), + "Module \"%s\" not found in current module environment.", moduleName); + if (module.getResources() instanceof DirectoryFileSource) { path.add(source.getFilename()); String[] pathArray = path.toArray(new String[path.size()]); // Copy all the elements after the first to a separate array for getPath(). String first = pathArray[0]; String[] more = Arrays.copyOfRange(pathArray, 1, pathArray.length); - return moduleManager.getEnvironment().getFileSystem().getPath(first, more); + return Paths.get("", moduleManager.getEnvironment().getResources() + .getFile(first, more) + .orElseThrow(()-> new RuntimeException("Cannot get path for "+source.getFilename())).getPath().stream().toArray(String[]::new)); } return null; } diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/EnumEditorScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/EnumEditorScreen.java index c2a64e1cb6a..b176a4282a1 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/EnumEditorScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/EnumEditorScreen.java @@ -4,7 +4,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.nui.WidgetUtil; import org.terasology.nui.databinding.ReadOnlyBinding; import org.terasology.nui.widgets.UIButton; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/NUIEditorScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/NUIEditorScreen.java index 0ed4d0e088c..997d9bf0b1a 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/NUIEditorScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/NUIEditorScreen.java @@ -11,15 +11,15 @@ import org.codehaus.plexus.util.ExceptionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.exceptions.InvalidUrnException; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.NUIEditorConfig; import org.terasology.engine.core.paths.PathManager; import org.terasology.engine.rendering.nui.editor.systems.NUIEditorSystem; import org.terasology.engine.rendering.nui.widgets.JsonEditorTreeView; +import org.terasology.gestalt.assets.exceptions.InvalidUrnException; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.nui.UIWidget; import org.terasology.nui.WidgetUtil; import org.terasology.nui.asset.UIElement; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/NUIEditorSettingsScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/NUIEditorSettingsScreen.java index 0ebce0c687d..1a691230c2a 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/NUIEditorSettingsScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/NUIEditorSettingsScreen.java @@ -3,7 +3,7 @@ package org.terasology.engine.rendering.nui.editor.layers; import com.google.common.collect.Lists; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.SystemConfig; import org.terasology.engine.core.SimpleUri; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/NUISkinEditorScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/NUISkinEditorScreen.java index 36513973ad9..c7bf49ebac4 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/NUISkinEditorScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/NUISkinEditorScreen.java @@ -11,15 +11,15 @@ import org.codehaus.plexus.util.ExceptionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.exceptions.InvalidUrnException; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.NUIEditorConfig; import org.terasology.engine.core.paths.PathManager; import org.terasology.engine.rendering.nui.editor.systems.NUISkinEditorSystem; import org.terasology.engine.rendering.nui.widgets.JsonEditorTreeView; +import org.terasology.gestalt.assets.exceptions.InvalidUrnException; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.nui.UIWidget; import org.terasology.nui.WidgetUtil; import org.terasology.nui.asset.UIElement; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/WidgetSelectionScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/WidgetSelectionScreen.java index 0e016a815f1..f4ddb2c4844 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/WidgetSelectionScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/layers/WidgetSelectionScreen.java @@ -5,7 +5,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.nui.UILayout; import org.terasology.nui.UIWidget; import org.terasology.nui.WidgetUtil; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/utils/NUIEditorNodeUtils.java b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/utils/NUIEditorNodeUtils.java index d21ce3e6888..ab8a326dce8 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/editor/utils/NUIEditorNodeUtils.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/editor/utils/NUIEditorNodeUtils.java @@ -6,22 +6,25 @@ import com.google.gson.annotations.SerializedName; import org.reflections.ReflectionUtils; import org.terasology.engine.core.module.ModuleContext; +import org.terasology.engine.rendering.nui.NUIManager; import org.terasology.engine.rendering.nui.editor.layers.NUIEditorScreen; import org.terasology.engine.rendering.nui.editor.layers.NUISkinEditorScreen; +import org.terasology.engine.utilities.ReflectionUtil; import org.terasology.nui.UILayout; import org.terasology.nui.UIWidget; import org.terasology.nui.layouts.relative.RelativeLayout; import org.terasology.nui.skin.UIStyleFragment; import org.terasology.nui.widgets.treeView.JsonTree; import org.terasology.nui.widgets.treeView.JsonTreeValue; -import org.terasology.engine.rendering.nui.NUIManager; -import org.terasology.engine.utilities.ReflectionUtil; import java.lang.reflect.Field; import java.util.Deque; import java.util.List; import java.util.Optional; import java.util.Set; +import java.util.function.Function; + +import static com.google.common.base.Verify.verifyNotNull; @SuppressWarnings("unchecked") public final class NUIEditorNodeUtils { @@ -116,16 +119,18 @@ public static NodeInfo getNodeInfo(JsonTree node, NUIManager nuiManager) { Deque pathToRoot = getPathToRoot(node); // Start iterating from top to bottom. - Class currentClass = null; - Class activeLayoutClass = null; + Class currentClass = null; + Class activeLayoutClass = null; + + Function> resolve = (String type) -> + verifyNotNull(nuiManager.getWidgetMetadataLibrary().resolve(type, ModuleContext.getContext()), "Failed to resolve widget %s in %s", type, ModuleContext.getContext()) + .getType(); + for (JsonTree n : pathToRoot) { if (n.isRoot()) { // currentClass is not set - set it to the screen type. String type = (String) n.getChildWithKey("type").getValue().getValue(); - currentClass = nuiManager - .getWidgetMetadataLibrary() - .resolve(type, ModuleContext.getContext()) - .getType(); + currentClass = resolve.apply(type); } else { if (List.class.isAssignableFrom(currentClass) && n.getValue().getKey() == null @@ -136,14 +141,11 @@ public static NodeInfo getNodeInfo(JsonTree node, NUIManager nuiManager) { // Retrieve the type of an unspecified UIWidget. if (currentClass == UIWidget.class && n.hasSiblingWithKey("type")) { String type = (String) n.getSiblingWithKey("type").getValue().getValue(); - currentClass = nuiManager - .getWidgetMetadataLibrary() - .resolve(type, ModuleContext.getContext()) - .getType(); + currentClass = resolve.apply(type); } // If the current class is a layout, remember its' value (but do not set until later on!) - Class layoutClass = null; + Class layoutClass = null; if (UILayout.class.isAssignableFrom(currentClass)) { layoutClass = currentClass; } @@ -153,7 +155,7 @@ public static NodeInfo getNodeInfo(JsonTree node, NUIManager nuiManager) { currentClass = List.class; } else if (UIWidget.class.isAssignableFrom(currentClass) && "layoutInfo".equals(n.getValue().getKey())) { // Set currentClass to the layout hint type for the active layout. - currentClass = (Class) ReflectionUtil.getTypeParameter(activeLayoutClass.getGenericSuperclass(), 0); + currentClass = (Class) ReflectionUtil.getTypeParameter(activeLayoutClass.getGenericSuperclass(), 0); } else { String value = n.getValue().toString(); Set fields = ReflectionUtils.getAllFields(currentClass); @@ -183,13 +185,10 @@ public static NodeInfo getNodeInfo(JsonTree node, NUIManager nuiManager) { } } - // If the final result is a generic UIWidget, attempt to retrieve its' type. + // If the final result is a generic UIWidget, attempt to retrieve its type. if (currentClass == UIWidget.class && node.hasChildWithKey("type")) { String type = (String) node.getChildWithKey("type").getValue().getValue(); - currentClass = nuiManager - .getWidgetMetadataLibrary() - .resolve(type, ModuleContext.getContext()) - .getType(); + currentClass = resolve.apply(type); } return new NodeInfo(currentClass, activeLayoutClass); } diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/LwjglCanvasRenderer.java b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/LwjglCanvasRenderer.java index d8b1ca89586..bdf3a3cac2a 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/LwjglCanvasRenderer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/LwjglCanvasRenderer.java @@ -16,8 +16,7 @@ import org.joml.Vector3f; import org.joml.Vector3fc; import org.lwjgl.opengl.GL11; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.RenderingConfig; import org.terasology.engine.context.Context; @@ -30,6 +29,7 @@ import org.terasology.engine.rendering.opengl.FrameBufferObject; import org.terasology.engine.rendering.opengl.LwjglFrameBufferObject; import org.terasology.engine.utilities.Assets; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.joml.geom.AABBfc; import org.terasology.joml.geom.Rectanglef; import org.terasology.joml.geom.Rectanglei; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/NUIManagerInternal.java b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/NUIManagerInternal.java index 77ae1ff4214..529bf44b93f 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/NUIManagerInternal.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/NUIManagerInternal.java @@ -11,9 +11,6 @@ import org.joml.Vector2i; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.audio.StaticSound; import org.terasology.engine.config.Config; import org.terasology.engine.config.RenderingConfig; @@ -30,18 +27,32 @@ import org.terasology.engine.i18n.TranslationSystem; import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.input.InputSystem; -import org.terasology.engine.rendering.assets.texture.Texture; -import org.terasology.input.device.KeyboardDevice; -import org.terasology.input.device.MouseDevice; import org.terasology.engine.input.events.CharEvent; import org.terasology.engine.input.events.KeyEvent; import org.terasology.engine.input.events.MouseAxisEvent; import org.terasology.engine.input.events.MouseButtonEvent; import org.terasology.engine.input.events.MouseWheelEvent; import org.terasology.engine.logic.players.LocalPlayer; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; import org.terasology.engine.network.ClientComponent; +import org.terasology.engine.registry.InjectionHelper; +import org.terasology.engine.rendering.assets.texture.Texture; +import org.terasology.engine.rendering.nui.CoreScreenLayer; +import org.terasology.engine.rendering.nui.NUIManager; +import org.terasology.engine.rendering.nui.ScreenLayerClosedEvent; +import org.terasology.engine.rendering.nui.SortOrderSystem; +import org.terasology.engine.rendering.nui.UIScreenLayer; +import org.terasology.engine.rendering.nui.layers.hud.HUDScreenLayer; +import org.terasology.engine.rendering.nui.layers.ingame.OnlinePlayersOverlay; +import org.terasology.engine.rendering.nui.widgets.TypeWidgetFactoryRegistryImpl; +import org.terasology.engine.utilities.Assets; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.naming.Name; +import org.terasology.input.device.KeyboardDevice; +import org.terasology.input.device.MouseDevice; import org.terasology.nui.AbstractWidget; import org.terasology.nui.ControlWidget; import org.terasology.nui.TabbingManager; @@ -53,6 +64,7 @@ import org.terasology.nui.events.NUIKeyEvent; import org.terasology.nui.events.NUIMouseButtonEvent; import org.terasology.nui.events.NUIMouseWheelEvent; +import org.terasology.nui.reflection.WidgetLibrary; import org.terasology.nui.widgets.UIButton; import org.terasology.nui.widgets.UIText; import org.terasology.nui.widgets.types.RegisterTypeWidgetFactory; @@ -60,18 +72,7 @@ import org.terasology.nui.widgets.types.TypeWidgetFactoryRegistry; import org.terasology.nui.widgets.types.TypeWidgetLibrary; import org.terasology.reflection.copy.CopyStrategyLibrary; -import org.terasology.reflection.metadata.ClassLibrary; import org.terasology.reflection.reflect.ReflectFactory; -import org.terasology.engine.registry.InjectionHelper; -import org.terasology.engine.rendering.nui.CoreScreenLayer; -import org.terasology.engine.rendering.nui.NUIManager; -import org.terasology.engine.rendering.nui.ScreenLayerClosedEvent; -import org.terasology.engine.rendering.nui.SortOrderSystem; -import org.terasology.engine.rendering.nui.UIScreenLayer; -import org.terasology.engine.rendering.nui.layers.hud.HUDScreenLayer; -import org.terasology.engine.rendering.nui.layers.ingame.OnlinePlayersOverlay; -import org.terasology.engine.rendering.nui.widgets.TypeWidgetFactoryRegistryImpl; -import org.terasology.engine.utilities.Assets; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -82,6 +83,8 @@ import java.util.Optional; import java.util.Set; +import static com.google.common.base.Verify.verifyNotNull; + /** */ public class NUIManagerInternal extends BaseComponentSystem implements NUIManager, PropertyChangeListener { @@ -187,7 +190,8 @@ public void refreshWidgetsLibrary() { widgetsLibrary = new WidgetLibrary(context.get(ModuleManager.class).getEnvironment(), context.get(ReflectFactory.class), context.get(CopyStrategyLibrary.class)); ModuleEnvironment environment = context.get(ModuleManager.class).getEnvironment(); for (Class type : environment.getSubtypesOf(UIWidget.class)) { - widgetsLibrary.register(new ResourceUrn(environment.getModuleProviding(type).toString(), type.getSimpleName()), type); + Name module = verifyNotNull(environment.getModuleProviding(type), "No module provides %s", type); + widgetsLibrary.register(new ResourceUrn(module.toString(), type.getSimpleName()), type); } } diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/TerasologyCanvasImpl.java b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/TerasologyCanvasImpl.java index 1ed4c7ef34a..a8282d79b2f 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/TerasologyCanvasImpl.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/TerasologyCanvasImpl.java @@ -7,7 +7,7 @@ import org.joml.Vector3fc; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.RenderingConfig; import org.terasology.engine.context.Context; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/TerasologyCanvasRenderer.java b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/TerasologyCanvasRenderer.java index e83b9596d9e..2418c065c9a 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/TerasologyCanvasRenderer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/TerasologyCanvasRenderer.java @@ -5,7 +5,7 @@ import org.joml.Quaternionfc; import org.joml.Vector2ic; import org.joml.Vector3fc; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.material.Material; import org.terasology.engine.rendering.opengl.FrameBufferObject; import org.terasology.joml.geom.Rectanglei; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/TypeWidgetLibraryImpl.java b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/TypeWidgetLibraryImpl.java index a80ea161f4a..a3c19862ca4 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/TypeWidgetLibraryImpl.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/TypeWidgetLibraryImpl.java @@ -7,7 +7,7 @@ import org.terasology.engine.context.Context; import org.terasology.engine.core.module.ModuleContext; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.module.Module; +import org.terasology.gestalt.module.Module; import org.terasology.nui.UIWidget; import org.terasology.nui.databinding.Binding; import org.terasology.nui.widgets.types.TypeWidgetBuilder; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/WidgetLibrary.java b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/WidgetLibrary.java deleted file mode 100644 index f7c02733da2..00000000000 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/WidgetLibrary.java +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2021 The Terasology Foundation -// SPDX-License-Identifier: Apache-2.0 -package org.terasology.engine.rendering.nui.internal; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.module.ModuleEnvironment; -import org.terasology.nui.UIWidget; -import org.terasology.reflection.copy.CopyStrategyLibrary; -import org.terasology.reflection.metadata.ClassMetadata; -import org.terasology.reflection.metadata.ModuleClassLibrary; -import org.terasology.reflection.reflect.ReflectFactory; - -/** - */ -public class WidgetLibrary extends ModuleClassLibrary { - - private static final Logger logger = LoggerFactory.getLogger(WidgetLibrary.class); - - public WidgetLibrary(ModuleEnvironment environment, ReflectFactory reflectFactory, CopyStrategyLibrary copyStrategyLibrary) { - super(environment, reflectFactory, copyStrategyLibrary); - } - - @Override - protected ClassMetadata createMetadata(Class type, ReflectFactory factory, CopyStrategyLibrary copyStrategies, ResourceUrn name) { - try { - return new WidgetMetadata<>(name, type, factory, copyStrategies); - } catch (NoSuchMethodException e) { - logger.error("Unable to register class {}: Default Constructor Required", type.getSimpleName(), e); - return null; - - } - } -} diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/WidgetMetadata.java b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/WidgetMetadata.java index 8553ae17c5e..4913a7c15d0 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/internal/WidgetMetadata.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/internal/WidgetMetadata.java @@ -3,7 +3,7 @@ package org.terasology.engine.rendering.nui.internal; import com.google.common.base.Predicate; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.nui.LayoutConfig; import org.terasology.nui.UIWidget; import org.terasology.reflection.copy.CopyStrategyLibrary; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/hud/HUDScreenLayer.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/hud/HUDScreenLayer.java index 5bf316550b7..82a89b0c2f6 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/hud/HUDScreenLayer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/hud/HUDScreenLayer.java @@ -4,8 +4,8 @@ import com.google.common.collect.Maps; import org.joml.Vector2i; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.joml.geom.Rectanglef; import org.terasology.joml.geom.Rectanglefc; import org.terasology.joml.geom.Rectanglei; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/hud/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/hud/package-info.java index 50f419e4721..2c286a9aa8a 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/hud/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/hud/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.nui.layers.hud; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/DevToolsMenuScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/DevToolsMenuScreen.java index 2fbb8c1b48f..c7d088d3ba0 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/DevToolsMenuScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/DevToolsMenuScreen.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.ingame; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; import org.terasology.nui.WidgetUtil; import org.terasology.engine.registry.In; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/ExtraMenuScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/ExtraMenuScreen.java index 7e4ff10a1d4..0f98fdfce5d 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/ExtraMenuScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/ExtraMenuScreen.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.ingame; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.crashreporter.CrashReporter; import org.terasology.engine.core.LoggingContext; import org.terasology.engine.core.Time; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/PauseMenu.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/PauseMenu.java index 8adeb9bf34a..0766a36af70 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/PauseMenu.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/PauseMenu.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.ingame; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.Time; import org.terasology.engine.core.modes.StateMainMenu; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/metrics/DebugMetricsSystem.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/metrics/DebugMetricsSystem.java index c1fc87747da..4a82c26ba37 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/metrics/DebugMetricsSystem.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/metrics/DebugMetricsSystem.java @@ -5,7 +5,7 @@ import com.google.common.base.Preconditions; import org.terasology.engine.entitySystem.systems.BaseComponentSystem; import org.terasology.engine.entitySystem.systems.RegisterSystem; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.registry.Share; import java.util.ArrayList; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/metrics/MetricsMode.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/metrics/MetricsMode.java index a3d68919a27..9925418814d 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/metrics/MetricsMode.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/metrics/MetricsMode.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.ingame.metrics; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * A metrics mode is a named entry in the {@link DebugOverlay}. diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/package-info.java index 718aec7e7f0..aed51ddb9f0 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/ingame/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.nui.layers.ingame; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/AddServerPopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/AddServerPopup.java index bf03e2306ed..b8118505d31 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/AddServerPopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/AddServerPopup.java @@ -3,7 +3,7 @@ package org.terasology.engine.rendering.nui.layers.mainMenu; import com.google.common.primitives.Ints; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.ServerInfo; import org.terasology.engine.core.TerasologyConstants; import org.terasology.nui.databinding.ReadOnlyBinding; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ConfirmPopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ConfirmPopup.java index 27e40bb00d7..ea51d4ffdba 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ConfirmPopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ConfirmPopup.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.nui.WidgetUtil; import org.terasology.nui.widgets.UILabel; import org.terasology.engine.rendering.nui.CoreScreenLayer; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ConfirmUrlPopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ConfirmUrlPopup.java index c753c868c5c..8cf6c6252f6 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ConfirmUrlPopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ConfirmUrlPopup.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.WebBrowserConfig; import org.terasology.nui.WidgetUtil; import org.terasology.nui.widgets.UIButton; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/CreditsScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/CreditsScreen.java index c1968e691a2..792d38583da 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/CreditsScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/CreditsScreen.java @@ -4,7 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.i18n.TranslationSystem; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; @@ -88,7 +88,7 @@ public void onOpened() { creditsScroll.resetScrolling(); } } - + @Override public boolean isLowerLayerVisible() { return false; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/EnterUsernamePopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/EnterUsernamePopup.java index d4832ef74ea..3fa54aa7f1e 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/EnterUsernamePopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/EnterUsernamePopup.java @@ -3,7 +3,7 @@ package org.terasology.engine.rendering.nui.layers.mainMenu; import com.google.common.base.Strings; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.PlayerConfig; import org.terasology.engine.i18n.TranslationSystem; import org.terasology.engine.registry.In; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ExtrasMenuScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ExtrasMenuScreen.java index 9911bd9b99d..c241334cfb7 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ExtrasMenuScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ExtrasMenuScreen.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.crashreporter.CrashReporter; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.LoggingContext; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/FilePickerPopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/FilePickerPopup.java index 945c546a099..9b553a696b3 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/FilePickerPopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/FilePickerPopup.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.i18n.TranslationSystem; import org.terasology.nui.WidgetUtil; import org.terasology.nui.databinding.Binding; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/GameManifestProvider.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/GameManifestProvider.java index bba80681ef4..cafaeb16055 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/GameManifestProvider.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/GameManifestProvider.java @@ -11,12 +11,12 @@ import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.game.GameManifest; import org.terasology.engine.rendering.nui.layers.mainMenu.savedGames.GameProvider; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.module.ResolutionResult; +import org.terasology.gestalt.module.Module; import org.terasology.engine.registry.In; import org.terasology.engine.world.internal.WorldInfo; import org.terasology.engine.world.time.WorldTime; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; /** diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/JoinGameScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/JoinGameScreen.java index 01a768f1a96..9eb2636cb34 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/JoinGameScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/JoinGameScreen.java @@ -7,7 +7,6 @@ import com.google.common.collect.Collections2; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.PlayerConfig; import org.terasology.engine.config.ServerInfo; @@ -27,9 +26,10 @@ import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; import org.terasology.engine.world.internal.WorldInfo; import org.terasology.engine.world.time.WorldTime; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.module.ModuleRegistry; +import org.terasology.gestalt.naming.NameVersion; import org.terasology.input.Keyboard; -import org.terasology.module.ModuleRegistry; -import org.terasology.naming.NameVersion; import org.terasology.nui.Color; import org.terasology.nui.FontColor; import org.terasology.nui.WidgetUtil; @@ -63,7 +63,7 @@ public class JoinGameScreen extends CoreScreenLayer { @In private Config config; - @In + @In private PlayerConfig playerConfig; @In diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/LaunchPopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/LaunchPopup.java index 7e7b7205982..f50a165539e 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/LaunchPopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/LaunchPopup.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.nui.WidgetUtil; import org.terasology.nui.databinding.BindHelper; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/MessagePopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/MessagePopup.java index 54900aa8630..66a8a949dde 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/MessagePopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/MessagePopup.java @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu; -import org.terasology.assets.ResourceUrn; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.nui.WidgetUtil; import org.terasology.nui.widgets.ActivateEventListener; import org.terasology.nui.widgets.UILabel; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/NameRecordingScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/NameRecordingScreen.java index 9a8c88c3cc7..13fd2f8832a 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/NameRecordingScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/NameRecordingScreen.java @@ -5,7 +5,7 @@ import org.codehaus.plexus.util.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.modes.StateLoading; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/NewGameScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/NewGameScreen.java index 488d22c8f17..cb47b27b028 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/NewGameScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/NewGameScreen.java @@ -5,7 +5,6 @@ import com.google.common.collect.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.ModuleConfig; import org.terasology.engine.core.GameEngine; @@ -15,14 +14,20 @@ import org.terasology.engine.core.module.StandardModuleExtension; import org.terasology.engine.game.GameManifest; import org.terasology.engine.i18n.TranslationSystem; +import org.terasology.engine.network.NetworkMode; +import org.terasology.engine.registry.In; +import org.terasology.engine.rendering.nui.CoreScreenLayer; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; import org.terasology.engine.rendering.nui.layers.mainMenu.advancedGameSetupScreen.AdvancedGameSetupScreen; import org.terasology.engine.rendering.nui.layers.mainMenu.savedGames.GameProvider; +import org.terasology.engine.world.generator.internal.WorldGeneratorInfo; +import org.terasology.engine.world.generator.internal.WorldGeneratorManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.resources.DirectoryFileSource; +import org.terasology.gestalt.naming.Name; import org.terasology.input.Keyboard; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.naming.Name; -import org.terasology.engine.network.NetworkMode; import org.terasology.nui.Canvas; import org.terasology.nui.Color; import org.terasology.nui.WidgetUtil; @@ -34,10 +39,6 @@ import org.terasology.nui.widgets.UIDropdownScrollable; import org.terasology.nui.widgets.UILabel; import org.terasology.nui.widgets.UIText; -import org.terasology.engine.registry.In; -import org.terasology.engine.rendering.nui.CoreScreenLayer; -import org.terasology.engine.world.generator.internal.WorldGeneratorInfo; -import org.terasology.engine.world.generator.internal.WorldGeneratorManager; import java.util.Comparator; import java.util.List; @@ -185,10 +186,8 @@ private List getGameplayModules() { List gameplayModules = Lists.newArrayList(); for (Name moduleId : moduleManager.getRegistry().getModuleIds()) { Module latestVersion = moduleManager.getRegistry().getLatestModuleVersion(moduleId); - if (!latestVersion.isOnClasspath()) { - if (StandardModuleExtension.isGameplayModule(latestVersion)) { - gameplayModules.add(latestVersion); - } + if (StandardModuleExtension.isGameplayModule(latestVersion)) { + gameplayModules.add(latestVersion); } } gameplayModules.sort(Comparator.comparing(o -> o.getMetadata().getDisplayName().value())); diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/PreviewWorldScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/PreviewWorldScreen.java index 6af13bbd035..96cf521b499 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/PreviewWorldScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/PreviewWorldScreen.java @@ -5,14 +5,13 @@ import com.google.common.collect.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.engine.core.module.ModuleManager; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.context.Context; import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.core.SimpleUri; import org.terasology.engine.core.bootstrap.EnvironmentSwitchHandler; -import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.entitySystem.metadata.ComponentLibrary; import org.terasology.engine.rendering.assets.texture.Texture; @@ -20,11 +19,12 @@ import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; import org.terasology.engine.rendering.nui.layers.mainMenu.preview.FacetLayerPreview; import org.terasology.engine.rendering.nui.layers.mainMenu.preview.PreviewGenerator; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; +import org.terasology.gestalt.module.exceptions.UnresolvedDependencyException; import org.terasology.math.TeraMath; -import org.terasology.module.DependencyResolver; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.ResolutionResult; -import org.terasology.module.exceptions.UnresolvedDependencyException; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.nui.WidgetUtil; import org.terasology.nui.databinding.Binding; import org.terasology.nui.layouts.PropertyLayout; @@ -140,7 +140,7 @@ public void setEnvironment() throws Exception { configureProperties(); } else { - throw new UnresolvedDependencyException("Unable to resolve depencencies for " + worldGenUri); + throw new UnresolvedDependencyException("Unable to resolve dependencies for " + worldGenUri); } } diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/RecordScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/RecordScreen.java index 40a3480376a..f452ca35f60 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/RecordScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/RecordScreen.java @@ -4,7 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.paths.PathManager; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; import org.terasology.engine.rendering.nui.layers.mainMenu.savedGames.GameInfo; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ReplayScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ReplayScreen.java index 29f3e1628d2..917a2da735e 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ReplayScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ReplayScreen.java @@ -4,7 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.modes.StateLoading; import org.terasology.engine.core.paths.PathManager; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/SelectGameScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/SelectGameScreen.java index 84d8d70ac3d..e905a97551c 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/SelectGameScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/SelectGameScreen.java @@ -4,7 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.modes.StateLoading; import org.terasology.engine.core.paths.PathManager; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/SelectionScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/SelectionScreen.java index ea8cb66dca0..08702405e6c 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/SelectionScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/SelectionScreen.java @@ -4,7 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.PlayerConfig; import org.terasology.engine.core.TerasologyConstants; @@ -20,8 +20,8 @@ import org.terasology.engine.utilities.FilesUtil; import org.terasology.engine.world.generator.internal.WorldGeneratorInfo; import org.terasology.engine.world.generator.internal.WorldGeneratorManager; -import org.terasology.naming.Name; -import org.terasology.naming.NameVersion; +import org.terasology.gestalt.naming.Name; +import org.terasology.gestalt.naming.NameVersion; import org.terasology.nui.widgets.UIImage; import org.terasology.nui.widgets.UIImageSlideshow; import org.terasology.nui.widgets.UILabel; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/StartPlayingScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/StartPlayingScreen.java index 15e73fdcdf1..5cdc4cd9c91 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/StartPlayingScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/StartPlayingScreen.java @@ -3,7 +3,6 @@ package org.terasology.engine.rendering.nui.layers.mainMenu; import org.joml.Vector2i; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.context.Context; import org.terasology.engine.core.GameEngine; @@ -13,19 +12,20 @@ import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.game.GameManifest; import org.terasology.engine.i18n.TranslationSystem; +import org.terasology.engine.network.NetworkMode; +import org.terasology.engine.registry.In; import org.terasology.engine.rendering.assets.texture.Texture; +import org.terasology.engine.rendering.nui.CoreScreenLayer; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; import org.terasology.engine.rendering.nui.layers.mainMenu.videoSettings.RenderingModuleSettingScreen; import org.terasology.engine.rendering.world.WorldSetupWrapper; -import org.terasology.engine.network.NetworkMode; +import org.terasology.engine.world.internal.WorldInfo; +import org.terasology.engine.world.time.WorldTime; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.nui.Canvas; import org.terasology.nui.WidgetUtil; import org.terasology.nui.widgets.UIImage; import org.terasology.nui.widgets.UILabel; -import org.terasology.engine.registry.In; -import org.terasology.engine.rendering.nui.CoreScreenLayer; -import org.terasology.engine.world.internal.WorldInfo; -import org.terasology.engine.world.time.WorldTime; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/StorageServiceLoginPopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/StorageServiceLoginPopup.java index bb87287811b..fcb4028f773 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/StorageServiceLoginPopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/StorageServiceLoginPopup.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.i18n.TranslationSystem; import org.terasology.engine.identity.storageServiceClient.StorageServiceWorker; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ThreeButtonPopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ThreeButtonPopup.java index fb6a1dc17ac..c073b8c6b0e 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ThreeButtonPopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/ThreeButtonPopup.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.nui.WidgetUtil; import org.terasology.nui.widgets.UIButton; import org.terasology.nui.widgets.UILabel; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/TwoButtonPopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/TwoButtonPopup.java index ec87647a128..49342d7d8dc 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/TwoButtonPopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/TwoButtonPopup.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.nui.WidgetUtil; import org.terasology.nui.widgets.UIButton; import org.terasology.nui.widgets.UILabel; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/UniverseSetupScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/UniverseSetupScreen.java index 1eacd41c777..40c57eef7b9 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/UniverseSetupScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/UniverseSetupScreen.java @@ -6,63 +6,60 @@ import com.google.common.collect.Sets; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.AssetFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.config.Config; import org.terasology.engine.context.Context; import org.terasology.engine.context.internal.ContextImpl; import org.terasology.engine.core.bootstrap.EnvironmentSwitchHandler; import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.entitySystem.prefab.Prefab; -import org.terasology.engine.entitySystem.prefab.PrefabData; import org.terasology.engine.entitySystem.prefab.internal.PojoPrefab; import org.terasology.engine.logic.behavior.asset.BehaviorTree; import org.terasology.engine.logic.behavior.asset.BehaviorTreeData; -import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; -import org.terasology.engine.rendering.nui.layers.mainMenu.advancedGameSetupScreen.AdvancedGameSetupScreen; -import org.terasology.engine.rendering.world.WorldSetupWrapper; -import org.terasology.engine.world.generator.WorldGenerator; -import org.terasology.module.DependencyInfo; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.ResolutionResult; -import org.terasology.naming.Name; -import org.terasology.nui.WidgetUtil; -import org.terasology.nui.asset.UIData; -import org.terasology.nui.asset.UIElement; -import org.terasology.nui.databinding.Binding; -import org.terasology.nui.databinding.ReadOnlyBinding; -import org.terasology.nui.itemRendering.StringTextRenderer; -import org.terasology.nui.skin.UISkin; -import org.terasology.nui.skin.UISkinAsset; -import org.terasology.nui.skin.UISkinData; -import org.terasology.nui.widgets.UIDropdownScrollable; -import org.terasology.reflection.copy.CopyStrategyLibrary; -import org.terasology.reflection.reflect.ReflectFactory; -import org.terasology.reflection.reflect.ReflectionReflectFactory; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.registry.In; import org.terasology.engine.rendering.nui.CoreScreenLayer; import org.terasology.engine.rendering.nui.NUIManager; +import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; +import org.terasology.engine.rendering.nui.layers.mainMenu.advancedGameSetupScreen.AdvancedGameSetupScreen; +import org.terasology.engine.rendering.world.WorldSetupWrapper; import org.terasology.engine.world.block.family.BlockFamilyLibrary; import org.terasology.engine.world.block.loader.BlockFamilyDefinition; import org.terasology.engine.world.block.loader.BlockFamilyDefinitionData; import org.terasology.engine.world.block.loader.BlockFamilyDefinitionFormat; import org.terasology.engine.world.block.shapes.BlockShape; -import org.terasology.engine.world.block.shapes.BlockShapeData; import org.terasology.engine.world.block.shapes.BlockShapeImpl; import org.terasology.engine.world.block.sounds.BlockSounds; -import org.terasology.engine.world.block.sounds.BlockSoundsData; import org.terasology.engine.world.block.tiles.BlockTile; -import org.terasology.engine.world.block.tiles.TileData; import org.terasology.engine.world.generator.UnresolvedWorldGeneratorException; +import org.terasology.engine.world.generator.WorldGenerator; import org.terasology.engine.world.generator.internal.WorldGeneratorInfo; import org.terasology.engine.world.generator.internal.WorldGeneratorManager; import org.terasology.engine.world.generator.plugin.TempWorldGeneratorPluginLibrary; import org.terasology.engine.world.generator.plugin.WorldGeneratorPluginLibrary; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.gestalt.assets.module.autoreload.AutoReloadAssetTypeManager; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.dependencyresolution.DependencyInfo; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; +import org.terasology.gestalt.naming.Name; +import org.terasology.nui.WidgetUtil; +import org.terasology.nui.asset.UIData; +import org.terasology.nui.asset.UIElement; +import org.terasology.nui.databinding.Binding; +import org.terasology.nui.databinding.ReadOnlyBinding; +import org.terasology.nui.itemRendering.StringTextRenderer; +import org.terasology.nui.skin.UISkin; +import org.terasology.nui.skin.UISkinAsset; +import org.terasology.nui.skin.UISkinData; +import org.terasology.nui.widgets.UIDropdownScrollable; +import org.terasology.reflection.copy.CopyStrategyLibrary; +import org.terasology.reflection.reflect.ReflectFactory; +import org.terasology.reflection.reflect.ReflectionReflectFactory; import java.util.HashSet; import java.util.List; @@ -324,7 +321,7 @@ public void setEnvironment(UniverseWrapper wrapper) { context.put(CopyStrategyLibrary.class, copyStrategyLibrary); context.put(NUIManager.class, getManager()); context.put(UniverseSetupScreen.class, this); - assetTypeManager = new ModuleAwareAssetTypeManager(); + assetTypeManager = new AutoReloadAssetTypeManager(); context.put(AssetManager.class, assetTypeManager.getAssetManager()); context.put(ModuleAwareAssetTypeManager.class, assetTypeManager); context.put(ModuleManager.class, moduleManager); @@ -368,24 +365,18 @@ private void initAssets() { BlockFamilyLibrary library = new BlockFamilyLibrary(environment, context); // cast lambdas explicitly to avoid inconsistent compiler behavior wrt. type inference - assetTypeManager.registerCoreAssetType(Prefab.class, - (AssetFactory) PojoPrefab::new, false, "prefabs"); - assetTypeManager.registerCoreAssetType(BlockShape.class, - (AssetFactory) BlockShapeImpl::new, "shapes"); - assetTypeManager.registerCoreAssetType(BlockSounds.class, - (AssetFactory) BlockSounds::new, "blockSounds"); - assetTypeManager.registerCoreAssetType(BlockTile.class, - (AssetFactory) BlockTile::new, "blockTiles"); - assetTypeManager.registerCoreAssetType(BlockFamilyDefinition.class, - (AssetFactory) BlockFamilyDefinition::new, "blocks"); - assetTypeManager.registerCoreFormat(BlockFamilyDefinition.class, + assetTypeManager.createAssetType(Prefab.class, PojoPrefab::new, "prefabs"); + assetTypeManager.createAssetType(BlockShape.class, BlockShapeImpl::new, "shapes"); + assetTypeManager.createAssetType(BlockSounds.class, BlockSounds::new, "blockSounds"); + assetTypeManager.createAssetType(BlockTile.class, BlockTile::new, "blockTiles"); + + AssetType blockFamilyDefinitionDataAssetType = assetTypeManager.createAssetType( + BlockFamilyDefinition.class, BlockFamilyDefinition::new, "blocks"); + assetTypeManager.getAssetFileDataProducer(blockFamilyDefinitionDataAssetType).addAssetFormat( new BlockFamilyDefinitionFormat(assetTypeManager.getAssetManager())); - assetTypeManager.registerCoreAssetType(UISkinAsset.class, - (AssetFactory) UISkinAsset::new, "skins"); - assetTypeManager.registerCoreAssetType(BehaviorTree.class, - (AssetFactory) BehaviorTree::new, false, "behaviors"); - assetTypeManager.registerCoreAssetType(UIElement.class, - (AssetFactory) UIElement::new, "ui"); + assetTypeManager.createAssetType(UISkinAsset.class, UISkinAsset::new, "skins"); + assetTypeManager.createAssetType(BehaviorTree.class, BehaviorTree::new, "behaviors"); + assetTypeManager.createAssetType(UIElement.class, UIElement::new, "ui"); } /** diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/WaitPopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/WaitPopup.java index aa857a10476..b3c7dedff21 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/WaitPopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/WaitPopup.java @@ -5,7 +5,7 @@ import com.google.common.base.Preconditions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.nui.WidgetUtil; import org.terasology.nui.databinding.Binding; import org.terasology.nui.databinding.ReadOnlyBinding; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/WorldPreGenerationScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/WorldPreGenerationScreen.java index 4fa5b321088..e15f1e7c303 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/WorldPreGenerationScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/WorldPreGenerationScreen.java @@ -5,10 +5,10 @@ import com.google.common.collect.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.engine.core.module.ModuleManager; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.context.Context; -import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.rendering.assets.texture.Texture; import org.terasology.engine.rendering.assets.texture.TextureData; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; @@ -16,8 +16,8 @@ import org.terasology.engine.rendering.nui.layers.mainMenu.preview.PreviewGenerator; import org.terasology.engine.rendering.world.WorldSetupWrapper; import org.terasology.math.TeraMath; -import org.terasology.module.ModuleEnvironment; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.WidgetUtil; import org.terasology.nui.databinding.Binding; import org.terasology.nui.widgets.UIDropdownScrollable; @@ -197,7 +197,7 @@ public void onOpened() { e.printStackTrace(); } } - + /** * Set seletedWorld when configure from WorldPreGenerationScreen * @param newNameToSet diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/WorldSetupScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/WorldSetupScreen.java index 9ce4bfce92b..408ccc32263 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/WorldSetupScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/WorldSetupScreen.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.context.Context; import org.terasology.engine.core.SimpleUri; @@ -11,8 +11,8 @@ import org.terasology.engine.i18n.TranslationSystem; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; import org.terasology.engine.rendering.world.WorldSetupWrapper; -import org.terasology.module.ModuleEnvironment; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.WidgetUtil; import org.terasology.nui.databinding.Binding; import org.terasology.nui.layouts.PropertyLayout; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/advancedGameSetupScreen/AdvancedGameSetupScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/advancedGameSetupScreen/AdvancedGameSetupScreen.java index 678db9ae801..04847b2e495 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/advancedGameSetupScreen/AdvancedGameSetupScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/advancedGameSetupScreen/AdvancedGameSetupScreen.java @@ -11,7 +11,6 @@ import org.joml.Vector2i; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.ModuleConfig; import org.terasology.engine.config.SelectModulesConfig; @@ -25,14 +24,26 @@ import org.terasology.engine.core.module.StandardModuleExtension; import org.terasology.engine.game.GameManifest; import org.terasology.engine.i18n.TranslationSystem; -import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; -import org.terasology.module.DependencyInfo; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.module.ModuleMetadata; -import org.terasology.module.ResolutionResult; -import org.terasology.naming.Name; import org.terasology.engine.network.NetworkMode; +import org.terasology.engine.registry.In; +import org.terasology.engine.rendering.nui.CoreScreenLayer; +import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; +import org.terasology.engine.rendering.nui.layers.mainMenu.ConfirmPopup; +import org.terasology.engine.rendering.nui.layers.mainMenu.GameManifestProvider; +import org.terasology.engine.rendering.nui.layers.mainMenu.MessagePopup; +import org.terasology.engine.rendering.nui.layers.mainMenu.UniverseSetupScreen; +import org.terasology.engine.rendering.nui.layers.mainMenu.UniverseWrapper; +import org.terasology.engine.rendering.nui.layers.mainMenu.WaitPopup; +import org.terasology.engine.rendering.nui.layers.mainMenu.moduleDetailsScreen.ModuleDetailsScreen; +import org.terasology.engine.utilities.random.FastRandom; +import org.terasology.engine.world.generator.internal.WorldGeneratorManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleMetadata; +import org.terasology.gestalt.module.dependencyresolution.DependencyInfo; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.Canvas; import org.terasology.nui.WidgetUtil; import org.terasology.nui.databinding.Binding; @@ -45,17 +56,6 @@ import org.terasology.nui.widgets.UILabel; import org.terasology.nui.widgets.UIList; import org.terasology.nui.widgets.UIText; -import org.terasology.engine.registry.In; -import org.terasology.engine.rendering.nui.CoreScreenLayer; -import org.terasology.engine.rendering.nui.layers.mainMenu.ConfirmPopup; -import org.terasology.engine.rendering.nui.layers.mainMenu.GameManifestProvider; -import org.terasology.engine.rendering.nui.layers.mainMenu.MessagePopup; -import org.terasology.engine.rendering.nui.layers.mainMenu.UniverseSetupScreen; -import org.terasology.engine.rendering.nui.layers.mainMenu.UniverseWrapper; -import org.terasology.engine.rendering.nui.layers.mainMenu.WaitPopup; -import org.terasology.engine.rendering.nui.layers.mainMenu.moduleDetailsScreen.ModuleDetailsScreen; -import org.terasology.engine.utilities.random.FastRandom; -import org.terasology.engine.world.generator.internal.WorldGeneratorManager; import java.util.ArrayList; import java.util.Collection; @@ -143,11 +143,9 @@ public void initialise() { sortedModules = Lists.newArrayList(); for (Name moduleId : moduleManager.getRegistry().getModuleIds()) { Module latestVersion = moduleManager.getRegistry().getLatestModuleVersion(moduleId); - if (!latestVersion.isOnClasspath()) { - ModuleSelectionInfo info = ModuleSelectionInfo.local(latestVersion); - modulesLookup.put(info.getMetadata().getId(), info); - sortedModules.add(info); - } + ModuleSelectionInfo info = ModuleSelectionInfo.local(latestVersion); + modulesLookup.put(info.getMetadata().getId(), info); + sortedModules.add(info); } sortedModules.sort(moduleInfoComparator); diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/advancedGameSetupScreen/ModuleSelectionInfo.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/advancedGameSetupScreen/ModuleSelectionInfo.java index 76ebfc14655..adcac827ba0 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/advancedGameSetupScreen/ModuleSelectionInfo.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/advancedGameSetupScreen/ModuleSelectionInfo.java @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu.advancedGameSetupScreen; -import org.terasology.module.Module; -import org.terasology.module.ModuleMetadata; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleMetadata; final class ModuleSelectionInfo { private Module latestVersion; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/gameDetailsScreen/GameDetailsScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/gameDetailsScreen/GameDetailsScreen.java index 4e45165a42a..d7c80af4a0c 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/gameDetailsScreen/GameDetailsScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/gameDetailsScreen/GameDetailsScreen.java @@ -8,18 +8,27 @@ import org.joml.Vector2i; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.context.Context; import org.terasology.engine.core.SimpleUri; import org.terasology.engine.core.TerasologyConstants; import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.i18n.TranslationSystem; +import org.terasology.engine.registry.In; +import org.terasology.engine.rendering.nui.CoreScreenLayer; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; +import org.terasology.engine.rendering.nui.layers.mainMenu.MessagePopup; +import org.terasology.engine.rendering.nui.layers.mainMenu.SelectGameScreen; import org.terasology.engine.rendering.nui.layers.mainMenu.moduleDetailsScreen.ModuleDetailsScreen; -import org.terasology.module.DependencyInfo; -import org.terasology.module.Module; -import org.terasology.module.ModuleMetadata; -import org.terasology.naming.NameVersion; +import org.terasology.engine.rendering.nui.layers.mainMenu.savedGames.GameInfo; +import org.terasology.engine.utilities.time.DateTimeHelper; +import org.terasology.engine.world.generator.internal.WorldGeneratorInfo; +import org.terasology.engine.world.generator.internal.WorldGeneratorManager; +import org.terasology.engine.world.internal.WorldInfo; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleMetadata; +import org.terasology.gestalt.module.dependencyresolution.DependencyInfo; +import org.terasology.gestalt.naming.NameVersion; import org.terasology.nui.Canvas; import org.terasology.nui.databinding.Binding; import org.terasology.nui.databinding.ReadOnlyBinding; @@ -31,15 +40,6 @@ import org.terasology.nui.widgets.UIList; import org.terasology.nui.widgets.UITabBox; import org.terasology.nui.widgets.UIText; -import org.terasology.engine.registry.In; -import org.terasology.engine.rendering.nui.CoreScreenLayer; -import org.terasology.engine.rendering.nui.layers.mainMenu.MessagePopup; -import org.terasology.engine.rendering.nui.layers.mainMenu.SelectGameScreen; -import org.terasology.engine.rendering.nui.layers.mainMenu.savedGames.GameInfo; -import org.terasology.engine.utilities.time.DateTimeHelper; -import org.terasology.engine.world.generator.internal.WorldGeneratorInfo; -import org.terasology.engine.world.generator.internal.WorldGeneratorManager; -import org.terasology.engine.world.internal.WorldInfo; import java.text.DateFormat; import java.text.SimpleDateFormat; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/gameDetailsScreen/ModuleSelectionInfo.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/gameDetailsScreen/ModuleSelectionInfo.java index aa5a6e5e877..1b5bad3b3bf 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/gameDetailsScreen/ModuleSelectionInfo.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/gameDetailsScreen/ModuleSelectionInfo.java @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu.gameDetailsScreen; -import org.terasology.module.Module; -import org.terasology.module.ModuleMetadata; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleMetadata; /** * Contains objects that used by {@link GameDetailsScreen} to select a module on tab Modules. diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/ChangeBindingPopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/ChangeBindingPopup.java index 1d292e489da..5fce85010a4 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/ChangeBindingPopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/ChangeBindingPopup.java @@ -2,12 +2,12 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu.inputSettings; -import org.terasology.assets.ResourceUrn; +import org.terasology.engine.core.module.ModuleManager; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.BindsConfig; import org.terasology.engine.config.Config; import org.terasology.engine.context.Context; import org.terasology.engine.core.SimpleUri; -import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.core.subsystem.config.BindsManager; import org.terasology.engine.i18n.TranslationSystem; import org.terasology.input.Input; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/ConfirmChangePopup.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/ConfirmChangePopup.java index 34b3f0a5281..d443a7bae51 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/ConfirmChangePopup.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/ConfirmChangePopup.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu.inputSettings; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.i18n.TranslationSystem; import org.terasology.nui.WidgetUtil; import org.terasology.nui.widgets.UILabel; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/InputSettingsScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/InputSettingsScreen.java index 81235870149..dbed3c454c2 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/InputSettingsScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/inputSettings/InputSettingsScreen.java @@ -6,17 +6,21 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import org.joml.Vector2i; -import org.terasology.assets.ResourceUrn; +import org.terasology.engine.core.module.ModuleManager; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.BindsConfig; import org.terasology.engine.config.ControllerConfig.ControllerInfo; import org.terasology.engine.config.facade.InputDeviceConfiguration; import org.terasology.engine.context.Context; import org.terasology.engine.core.SimpleUri; -import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.core.subsystem.config.BindsManager; import org.terasology.engine.i18n.TranslationSystem; import org.terasology.engine.input.BindButtonEvent; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; +import org.terasology.gestalt.module.predicates.FromModule; +import org.terasology.gestalt.module.resources.DirectoryFileSource; import org.terasology.input.Input; import org.terasology.input.InputCategory; import org.terasology.engine.input.InputSystem; @@ -24,12 +28,9 @@ import org.terasology.input.Keyboard.KeyId; import org.terasology.engine.input.RegisterBindButton; import org.terasology.engine.input.internal.BindCommands; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.ResolutionResult; -import org.terasology.module.predicates.FromModule; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.TabbingManager; import org.terasology.nui.WidgetUtil; import org.terasology.nui.databinding.BindHelper; @@ -133,7 +134,7 @@ public void initialise() { DependencyResolver resolver = new DependencyResolver(moduleManager.getRegistry()); for (Name moduleId : moduleManager.getRegistry().getModuleIds()) { Module module = moduleManager.getRegistry().getLatestModuleVersion(moduleId); - if (module.isCodeModule()) { + if (module.getResources() instanceof DirectoryFileSource) { ResolutionResult result = resolver.resolve(moduleId); if (result.isSuccess()) { try (ModuleEnvironment environment = moduleManager.loadEnvironment(result.getModules(), false)) { diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/moduleDetailsScreen/ModuleDetailsScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/moduleDetailsScreen/ModuleDetailsScreen.java index b397e2cfc1f..8f0d0eb4c72 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/moduleDetailsScreen/ModuleDetailsScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/moduleDetailsScreen/ModuleDetailsScreen.java @@ -6,7 +6,6 @@ import org.joml.Vector2i; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.context.Context; import org.terasology.engine.core.module.DependencyResolutionFailedException; import org.terasology.engine.core.module.ExtraDataModuleExtension; @@ -15,15 +14,21 @@ import org.terasology.engine.core.module.RemoteModuleExtension; import org.terasology.engine.core.module.StandardModuleExtension; import org.terasology.engine.i18n.TranslationSystem; +import org.terasology.engine.registry.In; +import org.terasology.engine.rendering.nui.CoreScreenLayer; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; +import org.terasology.engine.rendering.nui.layers.mainMenu.ConfirmPopup; +import org.terasology.engine.rendering.nui.layers.mainMenu.MessagePopup; +import org.terasology.engine.rendering.nui.layers.mainMenu.WaitPopup; import org.terasology.engine.rendering.nui.layers.mainMenu.advancedGameSetupScreen.DownloadPopupProgressListener; import org.terasology.engine.rendering.nui.widgets.UIButtonWebBrowser; -import org.terasology.module.DependencyInfo; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.module.ModuleMetadata; -import org.terasology.naming.Name; -import org.terasology.naming.Version; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleMetadata; +import org.terasology.gestalt.module.dependencyresolution.DependencyInfo; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.naming.Name; +import org.terasology.gestalt.naming.Version; import org.terasology.nui.Canvas; import org.terasology.nui.Color; import org.terasology.nui.databinding.Binding; @@ -34,11 +39,6 @@ import org.terasology.nui.widgets.UILabel; import org.terasology.nui.widgets.UIList; import org.terasology.nui.widgets.UIText; -import org.terasology.engine.registry.In; -import org.terasology.engine.rendering.nui.CoreScreenLayer; -import org.terasology.engine.rendering.nui.layers.mainMenu.ConfirmPopup; -import org.terasology.engine.rendering.nui.layers.mainMenu.MessagePopup; -import org.terasology.engine.rendering.nui.layers.mainMenu.WaitPopup; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -305,7 +305,7 @@ private String getString(DependencyInfo value) { public void draw(DependencyInfo value, Canvas canvas) { Module module = moduleManager.getRegistry().getLatestModuleVersion(value.getId()); - if (module == null || !(value.versionRange().contains(module.getVersion()))) { + if (module == null || !(value.versionPredicate().test(module.getVersion()))) { canvas.setMode("invalid"); } else { canvas.setMode("available"); diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/preview/FacetLayerPreview.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/preview/FacetLayerPreview.java index 5153c767666..b44cc92fab1 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/preview/FacetLayerPreview.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/preview/FacetLayerPreview.java @@ -10,7 +10,7 @@ import org.slf4j.LoggerFactory; import org.terasology.engine.rendering.assets.texture.TextureData; import org.terasology.joml.geom.Rectanglei; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.engine.rendering.nui.layers.mainMenu.ProgressListener; import org.terasology.engine.world.block.BlockRegion; import org.terasology.engine.world.chunks.Chunks; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/settings/AudioSettingsScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/settings/AudioSettingsScreen.java index 19e355e64cd..171faab22b4 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/settings/AudioSettingsScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/settings/AudioSettingsScreen.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu.settings; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.AudioConfig; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; import org.terasology.nui.WidgetUtil; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/settings/PlayerSettingsScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/settings/PlayerSettingsScreen.java index efe3ddd9a7e..b86f8c6d3a7 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/settings/PlayerSettingsScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/settings/PlayerSettingsScreen.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu.settings; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.PlayerConfig; import org.terasology.engine.config.SystemConfig; import org.terasology.engine.context.Context; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/settings/SettingsMenuScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/settings/SettingsMenuScreen.java index d0e9886ec81..5ec1057f547 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/settings/SettingsMenuScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/settings/SettingsMenuScreen.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.nui.layers.mainMenu.settings; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.flexible.ui.AutoConfigScreen; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/videoSettings/RenderingModuleSettingScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/videoSettings/RenderingModuleSettingScreen.java index d4c0ec7c82e..4893d053a26 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/videoSettings/RenderingModuleSettingScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/videoSettings/RenderingModuleSettingScreen.java @@ -5,13 +5,13 @@ import org.joml.Vector2i; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.context.Context; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.modes.StateMainMenu; import org.terasology.engine.core.module.rendering.RenderingModuleRegistry; import org.terasology.engine.i18n.TranslationSystem; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.nui.Canvas; import org.terasology.nui.WidgetUtil; import org.terasology.nui.databinding.Binding; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/videoSettings/VideoSettingsScreen.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/videoSettings/VideoSettingsScreen.java index 30d2c330363..57464d62f51 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/videoSettings/VideoSettingsScreen.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/layers/mainMenu/videoSettings/VideoSettingsScreen.java @@ -5,7 +5,7 @@ import com.google.common.collect.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.core.GameEngine; import org.terasology.engine.core.Time; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/layouts/RowLayout.java b/engine/src/main/java/org/terasology/engine/rendering/nui/layouts/RowLayout.java deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/package-info.java index 7114b4460e0..10c55f52574 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/package-info.java @@ -16,4 +16,4 @@ */ @API package org.terasology.engine.rendering.nui; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/skin/UISkinFormat.java b/engine/src/main/java/org/terasology/engine/rendering/nui/skin/UISkinFormat.java index bbc2f53dc75..deac88e7406 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/skin/UISkinFormat.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/skin/UISkinFormat.java @@ -12,28 +12,28 @@ import com.google.gson.stream.JsonReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; import org.terasology.engine.core.module.ModuleContext; -import org.terasology.engine.rendering.nui.internal.WidgetLibrary; +import org.terasology.engine.persistence.typeHandling.extensionTypes.ColorTypeHandler; +import org.terasology.engine.persistence.typeHandling.gson.GsonTypeHandlerAdapterFactory; +import org.terasology.engine.registry.CoreRegistry; +import org.terasology.engine.rendering.nui.NUIManager; +import org.terasology.engine.utilities.Assets; +import org.terasology.engine.utilities.gson.AssetTypeAdapter; +import org.terasology.engine.utilities.gson.CaseInsensitiveEnumTypeAdapterFactory; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import org.terasology.nui.Color; import org.terasology.nui.UITextureRegion; import org.terasology.nui.UIWidget; import org.terasology.nui.asset.font.Font; +import org.terasology.nui.reflection.WidgetLibrary; import org.terasology.nui.skin.UISkinAsset; import org.terasology.nui.skin.UISkinBuilder; import org.terasology.nui.skin.UISkinData; import org.terasology.nui.skin.UIStyleFragment; -import org.terasology.engine.persistence.typeHandling.extensionTypes.ColorTypeHandler; -import org.terasology.engine.persistence.typeHandling.gson.GsonTypeHandlerAdapterFactory; import org.terasology.reflection.metadata.ClassMetadata; -import org.terasology.engine.registry.CoreRegistry; -import org.terasology.engine.rendering.nui.NUIManager; -import org.terasology.engine.utilities.Assets; -import org.terasology.engine.utilities.gson.AssetTypeAdapter; -import org.terasology.engine.utilities.gson.CaseInsensitiveEnumTypeAdapterFactory; import java.io.IOException; import java.io.InputStreamReader; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/skin/UISkinWithUrn.java b/engine/src/main/java/org/terasology/engine/rendering/nui/skin/UISkinWithUrn.java index 4372a7ba3b6..e16917cd39c 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/skin/UISkinWithUrn.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/skin/UISkinWithUrn.java @@ -3,7 +3,7 @@ package org.terasology.engine.rendering.nui.skin; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.nui.skin.UISkin; import org.terasology.nui.skin.UIStyleFamily; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/skin/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/skin/package-info.java index c2c49b7c09b..6f9320dc76f 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/skin/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/skin/package-info.java @@ -6,4 +6,4 @@ */ @API package org.terasology.engine.rendering.nui.skin; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/basic/flow/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/basic/flow/package-info.java index f2940a95e88..cc61d7cbd9b 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/basic/flow/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/basic/flow/package-info.java @@ -6,4 +6,4 @@ */ @API package org.terasology.engine.rendering.nui.widgets.browser.data.basic.flow; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/basic/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/basic/package-info.java index 670fa8160a2..55a988127d8 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/basic/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/basic/package-info.java @@ -6,4 +6,4 @@ */ @API package org.terasology.engine.rendering.nui.widgets.browser.data.basic; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/html/basic/list/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/html/basic/list/package-info.java index 2cd6e20fd6f..7a28c65130f 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/html/basic/list/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/html/basic/list/package-info.java @@ -6,4 +6,4 @@ */ @API package org.terasology.engine.rendering.nui.widgets.browser.data.html.basic.list; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/html/basic/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/html/basic/package-info.java index e9fdaf27113..74dac4c8c85 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/html/basic/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/html/basic/package-info.java @@ -6,4 +6,4 @@ */ @API package org.terasology.engine.rendering.nui.widgets.browser.data.html.basic; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/html/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/html/package-info.java index 2d98d04aea4..972bc93f407 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/html/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/html/package-info.java @@ -6,4 +6,4 @@ */ @API package org.terasology.engine.rendering.nui.widgets.browser.data.html; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/package-info.java index 34172a69a5a..4c07730fbf2 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/data/package-info.java @@ -6,4 +6,4 @@ */ @API package org.terasology.engine.rendering.nui.widgets.browser.data; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/ui/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/ui/package-info.java index 2efd0172431..d7a2624fa1d 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/ui/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/ui/package-info.java @@ -6,4 +6,4 @@ */ @API package org.terasology.engine.rendering.nui.widgets.browser.ui; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/ui/style/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/ui/style/package-info.java index d1dd1344016..3f502999319 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/ui/style/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/browser/ui/style/package-info.java @@ -6,4 +6,4 @@ */ @API package org.terasology.engine.rendering.nui.widgets.browser.ui.style; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/package-info.java index ced23347365..d0f497af672 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/package-info.java @@ -6,4 +6,4 @@ */ @API package org.terasology.engine.rendering.nui.widgets; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/types/object/SubtypeLayoutBuilder.java b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/types/object/SubtypeLayoutBuilder.java index 249ece8da16..0d0ee365c92 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/types/object/SubtypeLayoutBuilder.java +++ b/engine/src/main/java/org/terasology/engine/rendering/nui/widgets/types/object/SubtypeLayoutBuilder.java @@ -7,10 +7,11 @@ import org.slf4j.LoggerFactory; import org.terasology.engine.core.module.ModuleContext; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.sandbox.PermissionProvider; -import org.terasology.naming.Name; +import org.terasology.engine.utilities.ReflectionUtil; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.sandbox.PermissionProvider; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.databinding.Binding; import org.terasology.nui.databinding.NotifyingBinding; import org.terasology.nui.itemRendering.StringTextRenderer; @@ -21,7 +22,6 @@ import org.terasology.nui.widgets.types.builtin.util.ExpandableLayoutBuilder; import org.terasology.reflection.TypeInfo; import org.terasology.reflection.TypeRegistry; -import org.terasology.engine.utilities.ReflectionUtil; import java.lang.reflect.Modifier; import java.lang.reflect.Type; @@ -57,30 +57,30 @@ public SubtypeLayoutBuilder(TypeInfo baseType, ModuleEnvironment environment = moduleManager.getEnvironment(); Set allowedProvidingModules = - ImmutableSet.builder() - .add(contextModule.getId()) - .addAll(environment.getDependencyNamesOf(contextModule.getId())) - .build(); + ImmutableSet.builder() + .add(contextModule.getId()) + .addAll(environment.getDependencyNamesOf(contextModule.getId())) + .build(); List> allowedSubclasses = - typeRegistry.getSubtypesOf(baseType.getRawType()) - .stream() - // Type must come from an allowed module or be in the whitelist - .filter(clazz -> allowedProvidingModules.contains(getModuleProviding(clazz)) || - permissionProvider.isPermitted(clazz)) - // Filter public, instantiable types - .filter(clazz -> { - int modifiers = clazz.getModifiers(); - return Modifier.isPublic(modifiers) && !Modifier.isAbstract(modifiers) && !clazz.isInterface(); - }) - // Filter non-local, static inner classes - .filter(clazz -> { - if (clazz.isLocalClass()) { - return false; - } - return !clazz.isMemberClass() || Modifier.isStatic(clazz.getModifiers()); - }) - .collect(Collectors.toList()); + typeRegistry.getSubtypesOf(baseType.getRawType()) + .stream() + // Type must come from an allowed module or be in the whitelist + .filter(clazz -> allowedProvidingModules.contains(getModuleProviding(clazz)) || + permissionProvider.isPermitted(clazz)) + // Filter public, instantiable types + .filter(clazz -> { + int modifiers = clazz.getModifiers(); + return Modifier.isPublic(modifiers) && !Modifier.isAbstract(modifiers) && !clazz.isInterface(); + }) + // Filter non-local, static inner classes + .filter(clazz -> { + if (clazz.isLocalClass()) { + return false; + } + return !clazz.isMemberClass() || Modifier.isStatic(clazz.getModifiers()); + }) + .collect(Collectors.toList()); allowedSubclasses.add(baseType.getRawType()); @@ -101,13 +101,13 @@ public SubtypeLayoutBuilder(TypeInfo baseType, } allowedSubtypes = - allowedSubclasses - .stream() - .map(clazz -> { - Type parameterized = ReflectionUtil.parameterizeandResolveRawType(baseType.getType(), clazz); - return (TypeInfo) TypeInfo.of(parameterized); - }) - .collect(Collectors.toList()); + allowedSubclasses + .stream() + .map(clazz -> { + Type parameterized = ReflectionUtil.parameterizeandResolveRawType(baseType.getType(), clazz); + return (TypeInfo) TypeInfo.of(parameterized); + }) + .collect(Collectors.toList()); } private Name getModuleProviding(Class type) { diff --git a/engine/src/main/java/org/terasology/engine/rendering/opengl/GLSLMaterial.java b/engine/src/main/java/org/terasology/engine/rendering/opengl/GLSLMaterial.java index 606a44f9885..0f4236b229e 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/opengl/GLSLMaterial.java +++ b/engine/src/main/java/org/terasology/engine/rendering/opengl/GLSLMaterial.java @@ -19,8 +19,6 @@ import org.lwjgl.opengl.GL20; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.core.GameThread; import org.terasology.engine.core.subsystem.lwjgl.LwjglGraphicsProcessing; import org.terasology.engine.registry.CoreRegistry; @@ -30,6 +28,9 @@ import org.terasology.engine.rendering.assets.shader.ShaderParameterMetadata; import org.terasology.engine.rendering.assets.shader.ShaderProgramFeature; import org.terasology.engine.rendering.assets.texture.Texture; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import java.nio.FloatBuffer; import java.util.Arrays; @@ -60,11 +61,10 @@ public class GLSLMaterial extends BaseMaterial { private DisposalAction disposalAction; private MaterialData materialData; - public GLSLMaterial(ResourceUrn urn, AssetType assetType, MaterialData data, LwjglGraphicsProcessing graphicsProcessing) { - super(urn, assetType); + public GLSLMaterial(ResourceUrn urn, AssetType assetType, MaterialData data, LwjglGraphicsProcessing graphicsProcessing, GLSLMaterial.DisposalAction disposalAction) { + super(urn, assetType, disposalAction); this.graphicsProcessing = graphicsProcessing; - disposalAction = new DisposalAction(urn, graphicsProcessing); - getDisposalHook().setDisposeAction(disposalAction); + this.disposalAction = disposalAction; this.materialData = data; shaderManager = CoreRegistry.get(ShaderManager.class); graphicsProcessing.asynchToDisplayThread(() -> { @@ -72,6 +72,11 @@ public GLSLMaterial(ResourceUrn urn, AssetType assetType, Mater }); } + public static GLSLMaterial create(ResourceUrn urn, LwjglGraphicsProcessing graphicsProcessing, AssetType assetType, MaterialData data) { + return new GLSLMaterial(urn, assetType, data, graphicsProcessing, new DisposalAction(urn, graphicsProcessing)); + } + + @Override public void enable() { if (shaderManager.getActiveMaterial() != this || activeFeaturesChanged) { @@ -138,7 +143,7 @@ public void recompile() { public final void doReload(MaterialData data) { try { GameThread.synch(() -> { - disposalAction.run(); + disposalAction.close(); uniformLocationMap.clear(); shader = (GLSLShader) data.getShader(); @@ -619,7 +624,7 @@ public int hashCode() { } } - private static class DisposalAction implements Runnable { + private static class DisposalAction implements DisposableResource { private final ResourceUrn urn; private final LwjglGraphicsProcessing graphicsProcessing; @@ -632,8 +637,9 @@ private static class DisposalAction implements Runnable { this.graphicsProcessing = graphicsProcessing; } + @Override - public void run() { + public void close() { try { GameThread.synch(() -> { logger.debug("Disposing material {}.", urn); diff --git a/engine/src/main/java/org/terasology/engine/rendering/opengl/GLSLShader.java b/engine/src/main/java/org/terasology/engine/rendering/opengl/GLSLShader.java index b43840d4f3b..a38b4b066ae 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/opengl/GLSLShader.java +++ b/engine/src/main/java/org/terasology/engine/rendering/opengl/GLSLShader.java @@ -14,8 +14,9 @@ import org.lwjgl.opengl.GL32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.RenderingConfig; import org.terasology.engine.core.GameThread; @@ -51,7 +52,6 @@ public class GLSLShader extends Shader { private static final Logger logger = LoggerFactory.getLogger(GLSLShader.class); - private final LwjglGraphicsProcessing graphicsProcessing; // TODO this should be handled another way, we need to get ssao parameters here public int ssaoKernelElements = 32; @@ -64,10 +64,10 @@ public class GLSLShader extends Shader { static { try ( - InputStreamReader vertStream = getInputStreamReaderFromResource("org/terasology/include/globalFunctionsVertIncl.glsl"); - InputStreamReader fragStream = getInputStreamReaderFromResource("org/terasology/include/globalFunctionsFragIncl.glsl"); - InputStreamReader uniformsStream = getInputStreamReaderFromResource("org/terasology/include/globalUniformsIncl.glsl"); - InputStreamReader definesStream = getInputStreamReaderFromResource("org/terasology/include/globalDefinesIncl.glsl") + InputStreamReader vertStream = getInputStreamReaderFromResource("org/terasology/engine/include/globalFunctionsVertIncl.glsl"); + InputStreamReader fragStream = getInputStreamReaderFromResource("org/terasology/engine/include/globalFunctionsFragIncl.glsl"); + InputStreamReader uniformsStream = getInputStreamReaderFromResource("org/terasology/engine/include/globalUniformsIncl.glsl"); + InputStreamReader definesStream = getInputStreamReaderFromResource("org/terasology/engine/include/globalDefinesIncl.glsl") ) { includedFunctionsVertex = CharStreams.toString(vertStream); includedFunctionsFragment = CharStreams.toString(fragStream); @@ -79,24 +79,30 @@ public class GLSLShader extends Shader { } private EnumSet availableFeatures = Sets.newEnumSet(Collections.emptyList(), ShaderProgramFeature.class); - private ShaderData shaderProgramBase; + private final LwjglGraphicsProcessing graphicsProcessing; private Map parameters = Maps.newHashMap(); private Config config = CoreRegistry.get(Config.class); private DisposalAction disposalAction; - public GLSLShader(ResourceUrn urn, AssetType assetType, ShaderData data, LwjglGraphicsProcessing graphicsProcessing) { - super(urn, assetType); + + public GLSLShader(ResourceUrn urn, AssetType assetType, ShaderData data, + DisposalAction disposalAction, LwjglGraphicsProcessing graphicsProcessing) { + super(urn, assetType, disposalAction); + this.disposalAction = disposalAction; this.graphicsProcessing = graphicsProcessing; - disposalAction = new DisposalAction(urn, graphicsProcessing); - getDisposalHook().setDisposeAction(disposalAction); graphicsProcessing.asynchToDisplayThread(() -> { reload(data); }); } + + public static GLSLShader create(ResourceUrn urn, AssetType assetType, ShaderData data, LwjglGraphicsProcessing graphicsProcessing) { + return new GLSLShader(urn, assetType, data, new GLSLShader.DisposalAction(urn, graphicsProcessing), graphicsProcessing); + } + private static InputStreamReader getInputStreamReaderFromResource(String resource) { InputStream resourceStream = GLSLShader.class.getClassLoader().getResourceAsStream(resource); return new InputStreamReader(resourceStream, Charsets.UTF_8); @@ -124,14 +130,10 @@ int linkShaderProgram(int featureHash) { @Override public void recompile() { graphicsProcessing.asynchToDisplayThread(() -> { - recompileInt(); + registerAllShaderPermutations(); }); } - private void recompileInt() { - registerAllShaderPermutations(); - // TODO: reload materials - } @Override public ShaderParameterMetadata getParameter(String desc) { @@ -369,12 +371,10 @@ private boolean compileSuccess(int shaderId) { //int validateStatus = ARBShaderObjects.glGetObjectParameteriARB(shaderId, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB); - if (compileStatus == 0 /*|| linkStatus == 0 || validateStatus == 0*/) { - return false; - } + /*|| linkStatus == 0 || validateStatus == 0*/ + return compileStatus != 0; //logger.info("Shader '{}' successfully compiled.", getURI()); - return true; } @Override @@ -391,7 +391,7 @@ protected void doReload(ShaderData data) { } updateAvailableFeatures(); try { - recompileInt(); + registerAllShaderPermutations(); } catch (RuntimeException e) { logger.warn(e.getMessage()); } @@ -401,7 +401,7 @@ protected void doReload(ShaderData data) { } } - private static class DisposalAction implements Runnable { + public static class DisposalAction implements DisposableResource { private final ResourceUrn urn; private final LwjglGraphicsProcessing graphicsProcessing; @@ -411,21 +411,11 @@ private static class DisposalAction implements Runnable { private final TIntIntMap geometryPrograms = new TIntIntHashMap(); // made package-private after CheckStyle's suggestion - DisposalAction(ResourceUrn urn, LwjglGraphicsProcessing graphicsProcessing) { + public DisposalAction(ResourceUrn urn, LwjglGraphicsProcessing graphicsProcessing) { this.urn = urn; this.graphicsProcessing = graphicsProcessing; } - @Override - public void run() { - logger.debug("Disposing shader {}.", urn); - try { - GameThread.synch(this::disposeData); - } catch (InterruptedException e) { - logger.error("Failed to dispose {}", urn, e); - } - } - private void disposeData() { disposePrograms(fragmentPrograms); disposePrograms(vertexPrograms); @@ -438,10 +428,20 @@ private void disposePrograms(TIntIntMap programs) { TIntIntIterator it = disposedPrograms.iterator(); while (it.hasNext()) { it.advance(); - GL20.glDeleteShader(it.value()); + GL20.glDeleteShader(it.value()); } }); programs.clear(); } + + @Override + public void close() { + logger.debug("Disposing shader {}.", urn); + try { + GameThread.synch(this::disposeData); + } catch (InterruptedException e) { + logger.error("Failed to dispose {}", urn, e); + } + } } } diff --git a/engine/src/main/java/org/terasology/engine/rendering/opengl/LwjglFrameBufferObject.java b/engine/src/main/java/org/terasology/engine/rendering/opengl/LwjglFrameBufferObject.java index 1560e0c7fe7..5761974d7f2 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/opengl/LwjglFrameBufferObject.java +++ b/engine/src/main/java/org/terasology/engine/rendering/opengl/LwjglFrameBufferObject.java @@ -7,7 +7,7 @@ import org.lwjgl.BufferUtils; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL30; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.subsystem.DisplayDevice; import org.terasology.engine.rendering.assets.texture.Texture; import org.terasology.engine.rendering.assets.texture.TextureData; diff --git a/engine/src/main/java/org/terasology/engine/rendering/opengl/OpenGLMesh.java b/engine/src/main/java/org/terasology/engine/rendering/opengl/OpenGLMesh.java index 2f36ab12de0..9f157335068 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/opengl/OpenGLMesh.java +++ b/engine/src/main/java/org/terasology/engine/rendering/opengl/OpenGLMesh.java @@ -5,17 +5,11 @@ import gnu.trove.list.TFloatList; import gnu.trove.list.TIntList; import org.lwjgl.BufferUtils; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL20; import org.lwjgl.opengl.GL30; -import org.lwjgl.opengl.GL33; import org.lwjgl.opengl.GL41; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.core.GameThread; -import org.terasology.engine.core.subsystem.lwjgl.GLBufferPool; import org.terasology.engine.core.subsystem.lwjgl.LwjglGraphicsProcessing; import org.terasology.engine.rendering.assets.mesh.Mesh; import org.terasology.engine.rendering.assets.mesh.MeshData; @@ -25,6 +19,9 @@ import org.terasology.engine.rendering.assets.mesh.layout.IntLayout; import org.terasology.engine.rendering.assets.mesh.layout.Layout; import org.terasology.engine.rendering.assets.mesh.layout.ShortLayout; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.joml.geom.AABBf; import org.terasology.joml.geom.AABBfc; @@ -44,15 +41,20 @@ public class OpenGLMesh extends Mesh { private int indexCount; private DisposalAction disposalAction; - public OpenGLMesh(ResourceUrn urn, AssetType assetType, MeshData data, LwjglGraphicsProcessing graphicsProcessing) { + public OpenGLMesh(ResourceUrn urn, AssetType assetType, MeshData data, + DisposalAction disposalAction, LwjglGraphicsProcessing graphicsProcessing) { super(urn, assetType); - this.disposalAction = new DisposalAction(urn); - getDisposalHook().setDisposeAction(disposalAction); + this.disposalAction = disposalAction; graphicsProcessing.asynchToDisplayThread(() -> { reload(data); }); } + public static OpenGLMesh create(ResourceUrn urn, AssetType assetType, MeshData data, + LwjglGraphicsProcessing graphicsProcessing) { + return new OpenGLMesh(urn, assetType, data, new DisposalAction(urn), graphicsProcessing); + } + @Override protected void doReload(MeshData newData) { try { @@ -161,7 +163,7 @@ private void buildMesh(MeshData newData) { getBound(newData, aabb); } - private static class DisposalAction implements Runnable { + private static class DisposalAction implements DisposableResource { private final ResourceUrn urn; @@ -189,7 +191,7 @@ public void dispose() { } @Override - public void run() { + public void close() { try { GameThread.synch(() -> { dispose(); diff --git a/engine/src/main/java/org/terasology/engine/rendering/opengl/OpenGLSkeletalMesh.java b/engine/src/main/java/org/terasology/engine/rendering/opengl/OpenGLSkeletalMesh.java index dfd6c8020ba..26c26deb355 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/opengl/OpenGLSkeletalMesh.java +++ b/engine/src/main/java/org/terasology/engine/rendering/opengl/OpenGLSkeletalMesh.java @@ -9,14 +9,15 @@ import org.lwjgl.opengl.GL30; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.core.GameThread; import org.terasology.engine.core.subsystem.lwjgl.LwjglGraphicsProcessing; import org.terasology.engine.rendering.assets.mesh.StandardMeshData; import org.terasology.engine.rendering.assets.skeletalmesh.Bone; import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMesh; import org.terasology.engine.rendering.assets.skeletalmesh.SkeletalMeshData; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.joml.geom.AABBf; import java.nio.ByteBuffer; @@ -45,15 +46,21 @@ public class OpenGLSkeletalMesh extends SkeletalMesh { private DisposalAction disposalAction; public OpenGLSkeletalMesh(ResourceUrn urn, AssetType assetType, - SkeletalMeshData data, LwjglGraphicsProcessing graphicsProcessing) { - super(urn, assetType); - disposalAction = new DisposalAction(urn); - getDisposalHook().setDisposeAction(disposalAction); + SkeletalMeshData data, LwjglGraphicsProcessing graphicsProcessing, + OpenGLSkeletalMesh.DisposalAction disposalAction) { + super(urn, assetType, disposalAction); + this.disposalAction = disposalAction; graphicsProcessing.asynchToDisplayThread(() -> { reload(data); }); } + public static OpenGLSkeletalMesh create(ResourceUrn urn, AssetType assetType, + SkeletalMeshData data, LwjglGraphicsProcessing graphicsProcessing) { + return new OpenGLSkeletalMesh(urn, assetType, data, graphicsProcessing, new DisposalAction(urn)); + } + + public void setScaleTranslate(org.joml.Vector3f newScale, org.joml.Vector3f newTranslate) { this.scale = newScale; this.translate = newTranslate; @@ -163,7 +170,7 @@ public AABBf getStaticAabb() { return data.getStaticAABB(); } - private static class DisposalAction implements Runnable { + private static class DisposalAction implements DisposableResource { private final ResourceUrn urn; @@ -171,7 +178,7 @@ private static class DisposalAction implements Runnable { private int vbo = 0; private int ebo = 0; - DisposalAction(ResourceUrn urn) { + DisposalAction(ResourceUrn urn) { this.urn = urn; } @@ -191,7 +198,7 @@ public void dispose() { } @Override - public void run() { + public void close() { try { GameThread.synch(() -> { dispose(); diff --git a/engine/src/main/java/org/terasology/engine/rendering/opengl/OpenGLTexture.java b/engine/src/main/java/org/terasology/engine/rendering/opengl/OpenGLTexture.java index fa7a03408ad..7c80938a826 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/opengl/OpenGLTexture.java +++ b/engine/src/main/java/org/terasology/engine/rendering/opengl/OpenGLTexture.java @@ -6,8 +6,10 @@ import org.joml.Vector2i; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.engine.core.subsystem.lwjgl.LwjglGraphics; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.DisposableResource; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.subsystem.lwjgl.LwjglGraphicsManager; import org.terasology.joml.geom.Rectanglef; import org.terasology.joml.geom.Rectanglei; @@ -25,13 +27,17 @@ public class OpenGLTexture extends Texture { private final TextureResources resources; - public OpenGLTexture(ResourceUrn urn, AssetType assetType, TextureData data, LwjglGraphicsManager graphicsManager) { - super(urn, assetType); - this.resources = new TextureResources(graphicsManager); - getDisposalHook().setDisposeAction(resources); + public OpenGLTexture(ResourceUrn urn, AssetType assetType, TextureData data, TextureResources textureResources) { + super(urn, assetType, textureResources); + this.resources = textureResources; reload(data); } + public static OpenGLTexture create(ResourceUrn urn, AssetType assetType, TextureData data, LwjglGraphicsManager graphicsManager) { + return new OpenGLTexture(urn, assetType, data, new TextureResources(graphicsManager)); + } + + public void setId(int id) { resources.id = id; } @@ -177,12 +183,12 @@ public Rectanglei getPixelRegion() { } @Override - public synchronized void subscribeToDisposal(Runnable subscriber) { + public synchronized void subscribeToDisposal(DisposableResource subscriber) { resources.disposalSubscribers.add(subscriber); } @Override - public synchronized void unsubscribeToDisposal(Runnable subscriber) { + public synchronized void unsubscribeToDisposal(DisposableResource subscriber) { resources.disposalSubscribers.remove(subscriber); } @@ -233,13 +239,13 @@ public TextureData getTextureData() { } } - private static class TextureResources implements Runnable { + private static class TextureResources implements DisposableResource { private final LwjglGraphicsManager graphicsManager; private volatile int id; private volatile LoadedTextureInfo loadedTextureInfo; - private final List disposalSubscribers = Lists.newArrayList(); + private final List disposalSubscribers = Lists.newArrayList(); TextureResources(LwjglGraphicsManager graphicsManager) { this.graphicsManager = graphicsManager; @@ -247,9 +253,9 @@ private static class TextureResources implements Runnable { @Override - public void run() { + public void close() { if (loadedTextureInfo != null) { - disposalSubscribers.forEach(java.lang.Runnable::run); + disposalSubscribers.forEach(DisposableResource::close); graphicsManager.disposeTexture(id); loadedTextureInfo = null; id = 0; diff --git a/engine/src/main/java/org/terasology/engine/rendering/opengl/fbms/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/opengl/fbms/package-info.java index 6f944e73167..7c8f0350a7f 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/opengl/fbms/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/opengl/fbms/package-info.java @@ -16,4 +16,4 @@ @API package org.terasology.engine.rendering.opengl.fbms; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/opengl/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/opengl/package-info.java index a703a4d9017..70911100b7e 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/opengl/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/opengl/package-info.java @@ -4,4 +4,4 @@ @API package org.terasology.engine.rendering.opengl; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/openvrprovider/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/openvrprovider/package-info.java index 224b0c3d672..ef8dfad121a 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/openvrprovider/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/openvrprovider/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.openvrprovider; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/primitives/BlockMeshGenerator.java b/engine/src/main/java/org/terasology/engine/rendering/primitives/BlockMeshGenerator.java index df46e5144c0..12425cbee9d 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/primitives/BlockMeshGenerator.java +++ b/engine/src/main/java/org/terasology/engine/rendering/primitives/BlockMeshGenerator.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.primitives; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.rendering.assets.mesh.Mesh; import org.terasology.engine.world.ChunkView; diff --git a/engine/src/main/java/org/terasology/engine/rendering/primitives/BlockMeshGeneratorSingleShape.java b/engine/src/main/java/org/terasology/engine/rendering/primitives/BlockMeshGeneratorSingleShape.java index 365e39ef19c..4e413102df3 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/primitives/BlockMeshGeneratorSingleShape.java +++ b/engine/src/main/java/org/terasology/engine/rendering/primitives/BlockMeshGeneratorSingleShape.java @@ -4,7 +4,7 @@ import com.google.common.collect.Maps; import org.joml.Vector3ic; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.math.Side; import org.terasology.engine.rendering.assets.mesh.Mesh; import org.terasology.engine.world.ChunkView; diff --git a/engine/src/main/java/org/terasology/engine/rendering/primitives/ChunkMesh.java b/engine/src/main/java/org/terasology/engine/rendering/primitives/ChunkMesh.java index 0977aac5c27..93416e8edb5 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/primitives/ChunkMesh.java +++ b/engine/src/main/java/org/terasology/engine/rendering/primitives/ChunkMesh.java @@ -13,9 +13,9 @@ import org.lwjgl.opengl.GL13; import org.lwjgl.opengl.GL15; import org.terasology.engine.core.subsystem.lwjgl.GLBufferPool; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.rendering.VertexBufferObjectUtil; import org.terasology.engine.rendering.assets.material.Material; -import org.terasology.module.sandbox.API; import java.nio.IntBuffer; import java.util.Map; diff --git a/engine/src/main/java/org/terasology/engine/rendering/primitives/ChunkVertexFlag.java b/engine/src/main/java/org/terasology/engine/rendering/primitives/ChunkVertexFlag.java index c5177acda88..9989a9a739b 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/primitives/ChunkVertexFlag.java +++ b/engine/src/main/java/org/terasology/engine/rendering/primitives/ChunkVertexFlag.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.primitives; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** */ diff --git a/engine/src/main/java/org/terasology/engine/rendering/primitives/Tessellator.java b/engine/src/main/java/org/terasology/engine/rendering/primitives/Tessellator.java index 63f2e68b022..ab75f8da62a 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/primitives/Tessellator.java +++ b/engine/src/main/java/org/terasology/engine/rendering/primitives/Tessellator.java @@ -8,9 +8,9 @@ import org.joml.Vector3f; import org.joml.Vector3fc; import org.joml.Vector4f; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.rendering.assets.mesh.StandardMeshData; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.rendering.assets.mesh.Mesh; import org.terasology.engine.rendering.assets.mesh.MeshData; import org.terasology.engine.utilities.Assets; diff --git a/engine/src/main/java/org/terasology/engine/rendering/primitives/TessellatorHelper.java b/engine/src/main/java/org/terasology/engine/rendering/primitives/TessellatorHelper.java index 541ff13ae57..2aeac7b1938 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/primitives/TessellatorHelper.java +++ b/engine/src/main/java/org/terasology/engine/rendering/primitives/TessellatorHelper.java @@ -5,7 +5,7 @@ import org.joml.Vector2f; import org.joml.Vector3f; import org.joml.Vector4f; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; @API public final class TessellatorHelper { diff --git a/engine/src/main/java/org/terasology/engine/rendering/primitives/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/primitives/package-info.java index e2673143af0..b00a0084d40 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/primitives/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/primitives/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.primitives; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/world/WorldRenderer.java b/engine/src/main/java/org/terasology/engine/rendering/world/WorldRenderer.java index f65db94293d..5b8a126ee84 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/world/WorldRenderer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/world/WorldRenderer.java @@ -7,8 +7,8 @@ import org.terasology.engine.rendering.assets.material.Material; import org.terasology.engine.rendering.cameras.SubmersibleCamera; import org.terasology.engine.rendering.world.viewDistance.ViewDistance; -import org.terasology.module.sandbox.API; import org.terasology.engine.rendering.dag.RenderGraph; +import org.terasology.gestalt.module.sandbox.API; /** * Implementations of this class are responsible for rendering the whole 3D world, diff --git a/engine/src/main/java/org/terasology/engine/rendering/world/WorldSetupWrapper.java b/engine/src/main/java/org/terasology/engine/rendering/world/WorldSetupWrapper.java index a03c08c94bc..144d7285029 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/world/WorldSetupWrapper.java +++ b/engine/src/main/java/org/terasology/engine/rendering/world/WorldSetupWrapper.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.rendering.world; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.world.generator.WorldConfigurator; import org.terasology.engine.world.generator.WorldGenerator; import org.terasology.engine.world.generator.internal.WorldGeneratorInfo; diff --git a/engine/src/main/java/org/terasology/engine/rendering/world/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/world/package-info.java index 1d80944bdc9..3b7a15eaf9d 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/world/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/world/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.world; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/rendering/world/selection/BlockSelectionRenderer.java b/engine/src/main/java/org/terasology/engine/rendering/world/selection/BlockSelectionRenderer.java index d3bcaa9bcb5..396e20048c0 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/world/selection/BlockSelectionRenderer.java +++ b/engine/src/main/java/org/terasology/engine/rendering/world/selection/BlockSelectionRenderer.java @@ -17,7 +17,7 @@ import org.terasology.engine.rendering.primitives.Tessellator; import org.terasology.engine.rendering.primitives.TessellatorHelper; import org.terasology.joml.geom.Rectanglef; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.rendering.assets.mesh.Mesh; import org.terasology.engine.rendering.world.WorldRenderer; diff --git a/engine/src/main/java/org/terasology/engine/rendering/world/viewDistance/package-info.java b/engine/src/main/java/org/terasology/engine/rendering/world/viewDistance/package-info.java index 66da61c247d..26cd93ad2ad 100644 --- a/engine/src/main/java/org/terasology/engine/rendering/world/viewDistance/package-info.java +++ b/engine/src/main/java/org/terasology/engine/rendering/world/viewDistance/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.rendering.world.viewDistance; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/telemetry/Metrics.java b/engine/src/main/java/org/terasology/engine/telemetry/Metrics.java index f1731dfe270..30d8e6e2cb2 100644 --- a/engine/src/main/java/org/terasology/engine/telemetry/Metrics.java +++ b/engine/src/main/java/org/terasology/engine/telemetry/Metrics.java @@ -19,13 +19,14 @@ import org.slf4j.LoggerFactory; import org.terasology.engine.context.Context; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.ResolutionResult; -import org.terasology.module.predicates.FromModule; -import org.terasology.module.sandbox.API; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; +import org.terasology.gestalt.module.predicates.FromModule; +import org.terasology.gestalt.module.resources.DirectoryFileSource; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.telemetry.metrics.Metric; import java.lang.reflect.Constructor; @@ -60,7 +61,7 @@ private Set fetchMetricsClassFromEnvironemnt(Context context) { DependencyResolver resolver = new DependencyResolver(moduleManager.getRegistry()); for (Name moduleId : moduleManager.getRegistry().getModuleIds()) { Module module = moduleManager.getRegistry().getLatestModuleVersion(moduleId); - if (module.isCodeModule()) { + if (module.getResources() instanceof DirectoryFileSource) { ResolutionResult result = resolver.resolve(moduleId); if (result.isSuccess()) { try (ModuleEnvironment environment = moduleManager.loadEnvironment(result.getModules(), false)) { diff --git a/engine/src/main/java/org/terasology/engine/telemetry/TelemetryCategory.java b/engine/src/main/java/org/terasology/engine/telemetry/TelemetryCategory.java index 368ea5906ca..e5694c4a1ad 100644 --- a/engine/src/main/java/org/terasology/engine/telemetry/TelemetryCategory.java +++ b/engine/src/main/java/org/terasology/engine/telemetry/TelemetryCategory.java @@ -15,7 +15,7 @@ */ package org.terasology.engine.telemetry; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/engine/src/main/java/org/terasology/engine/telemetry/TelemetryField.java b/engine/src/main/java/org/terasology/engine/telemetry/TelemetryField.java index 0d68caaad61..34379ccec60 100644 --- a/engine/src/main/java/org/terasology/engine/telemetry/TelemetryField.java +++ b/engine/src/main/java/org/terasology/engine/telemetry/TelemetryField.java @@ -15,7 +15,7 @@ */ package org.terasology.engine.telemetry; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/engine/src/main/java/org/terasology/engine/telemetry/TelemetryParams.java b/engine/src/main/java/org/terasology/engine/telemetry/TelemetryParams.java index 0f417a84730..febb4ac1d25 100644 --- a/engine/src/main/java/org/terasology/engine/telemetry/TelemetryParams.java +++ b/engine/src/main/java/org/terasology/engine/telemetry/TelemetryParams.java @@ -18,7 +18,7 @@ import com.snowplowanalytics.snowplow.tracker.DevicePlatform; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.net.InetAddress; import java.net.NetworkInterface; diff --git a/engine/src/main/java/org/terasology/engine/telemetry/TelemetryScreen.java b/engine/src/main/java/org/terasology/engine/telemetry/TelemetryScreen.java index ccd377e97ec..9709307ffb9 100644 --- a/engine/src/main/java/org/terasology/engine/telemetry/TelemetryScreen.java +++ b/engine/src/main/java/org/terasology/engine/telemetry/TelemetryScreen.java @@ -20,34 +20,35 @@ import org.reflections.ReflectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; import org.terasology.engine.config.Config; import org.terasology.engine.config.ServerInfo; import org.terasology.engine.config.TelemetryConfig; import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.i18n.TranslationSystem; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.ResolutionResult; -import org.terasology.module.predicates.FromModule; -import org.terasology.naming.Name; -import org.terasology.nui.WidgetUtil; import org.terasology.engine.registry.In; import org.terasology.engine.rendering.nui.CoreScreenLayer; import org.terasology.engine.rendering.nui.NUIManager; import org.terasology.engine.rendering.nui.animation.MenuAnimationSystems; +import org.terasology.engine.rendering.nui.layers.mainMenu.AddServerPopup; +import org.terasology.engine.telemetry.logstash.TelemetryLogstashAppender; +import org.terasology.engine.telemetry.metrics.Metric; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; +import org.terasology.gestalt.module.predicates.FromModule; +import org.terasology.gestalt.module.resources.DirectoryFileSource; +import org.terasology.gestalt.naming.Name; +import org.terasology.nui.WidgetUtil; import org.terasology.nui.databinding.BindHelper; import org.terasology.nui.databinding.Binding; -import org.terasology.engine.rendering.nui.layers.mainMenu.AddServerPopup; import org.terasology.nui.layouts.ColumnLayout; import org.terasology.nui.layouts.RowLayout; import org.terasology.nui.layouts.ScrollableArea; import org.terasology.nui.widgets.UICheckbox; import org.terasology.nui.widgets.UILabel; import org.terasology.nui.widgets.UISpace; -import org.terasology.engine.telemetry.logstash.TelemetryLogstashAppender; -import org.terasology.engine.telemetry.metrics.Metric; import java.lang.reflect.Field; import java.net.URL; @@ -292,7 +293,7 @@ private void fetchTelemetryCategoriesFromEnvironment() { DependencyResolver resolver = new DependencyResolver(moduleManager.getRegistry()); for (Name moduleId : moduleManager.getRegistry().getModuleIds()) { Module module = moduleManager.getRegistry().getLatestModuleVersion(moduleId); - if (module.isCodeModule()) { + if (module.getResources() instanceof DirectoryFileSource) { ResolutionResult result = resolver.resolve(moduleId); if (result.isSuccess()) { try (ModuleEnvironment environment = moduleManager.loadEnvironment(result.getModules(), false)) { diff --git a/engine/src/main/java/org/terasology/engine/telemetry/TelemetryUtils.java b/engine/src/main/java/org/terasology/engine/telemetry/TelemetryUtils.java index ad2df53cad8..1f9aa9d0230 100644 --- a/engine/src/main/java/org/terasology/engine/telemetry/TelemetryUtils.java +++ b/engine/src/main/java/org/terasology/engine/telemetry/TelemetryUtils.java @@ -25,7 +25,7 @@ import org.terasology.engine.config.facade.TelemetryConfiguration; import org.terasology.engine.context.Context; import org.terasology.engine.core.subsystem.DisplayDevice; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.telemetry.logstash.TelemetryLogstashAppender; import org.terasology.engine.telemetry.metrics.Metric; diff --git a/engine/src/main/java/org/terasology/engine/telemetry/metrics/Metric.java b/engine/src/main/java/org/terasology/engine/telemetry/metrics/Metric.java index e894c169027..129da58ace0 100644 --- a/engine/src/main/java/org/terasology/engine/telemetry/metrics/Metric.java +++ b/engine/src/main/java/org/terasology/engine/telemetry/metrics/Metric.java @@ -23,7 +23,7 @@ import org.terasology.engine.config.facade.TelemetryConfiguration; import org.terasology.engine.context.Context; import org.terasology.engine.core.subsystem.DisplayDevice; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.telemetry.Metrics; import org.terasology.engine.telemetry.TelemetryCategory; diff --git a/engine/src/main/java/org/terasology/engine/telemetry/metrics/ModulesMetric.java b/engine/src/main/java/org/terasology/engine/telemetry/metrics/ModulesMetric.java index 3b92f72c275..003e28aec2a 100644 --- a/engine/src/main/java/org/terasology/engine/telemetry/metrics/ModulesMetric.java +++ b/engine/src/main/java/org/terasology/engine/telemetry/metrics/ModulesMetric.java @@ -18,8 +18,8 @@ import com.snowplowanalytics.snowplow.tracker.events.Unstructured; import org.terasology.engine.context.Context; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.engine.telemetry.TelemetryCategory; import org.terasology.engine.telemetry.TelemetryField; diff --git a/engine/src/main/java/org/terasology/engine/utilities/Assets.java b/engine/src/main/java/org/terasology/engine/utilities/Assets.java index eb531cf89b2..6acda811d94 100644 --- a/engine/src/main/java/org/terasology/engine/utilities/Assets.java +++ b/engine/src/main/java/org/terasology/engine/utilities/Assets.java @@ -5,16 +5,16 @@ import com.google.common.base.Preconditions; import com.google.common.base.Strings; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetData; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.engine.core.module.ModuleManager; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetData; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.audio.StaticSound; import org.terasology.engine.audio.StreamingSound; -import org.terasology.engine.core.module.ModuleManager; import org.terasology.engine.entitySystem.prefab.Prefab; -import org.terasology.module.sandbox.API; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.sandbox.API; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.asset.UIElement; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.rendering.assets.font.Font; diff --git a/engine/src/main/java/org/terasology/engine/utilities/OrdinalIndicator.java b/engine/src/main/java/org/terasology/engine/utilities/OrdinalIndicator.java index 1d4d82ca7d5..19839aaf5cd 100644 --- a/engine/src/main/java/org/terasology/engine/utilities/OrdinalIndicator.java +++ b/engine/src/main/java/org/terasology/engine/utilities/OrdinalIndicator.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.utilities; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Contains functions to get the ordinal indicator string for an integer. diff --git a/engine/src/main/java/org/terasology/engine/utilities/ReflectionUtil.java b/engine/src/main/java/org/terasology/engine/utilities/ReflectionUtil.java index 018c235d399..c371e25df02 100644 --- a/engine/src/main/java/org/terasology/engine/utilities/ReflectionUtil.java +++ b/engine/src/main/java/org/terasology/engine/utilities/ReflectionUtil.java @@ -8,8 +8,8 @@ import com.google.common.collect.Sets; import org.reflections.ReflectionUtils; import org.terasology.engine.core.SimpleUri; -import org.terasology.module.ModuleEnvironment; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.naming.Name; import org.terasology.nui.UIWidget; import org.terasology.reflection.TypeInfo; diff --git a/engine/src/main/java/org/terasology/engine/utilities/collection/package-info.java b/engine/src/main/java/org/terasology/engine/utilities/collection/package-info.java index 577608f170d..1235abe09ec 100644 --- a/engine/src/main/java/org/terasology/engine/utilities/collection/package-info.java +++ b/engine/src/main/java/org/terasology/engine/utilities/collection/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.utilities.collection; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/utilities/concurrency/package-info.java b/engine/src/main/java/org/terasology/engine/utilities/concurrency/package-info.java index 052d31becbc..bf54dda3866 100644 --- a/engine/src/main/java/org/terasology/engine/utilities/concurrency/package-info.java +++ b/engine/src/main/java/org/terasology/engine/utilities/concurrency/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.utilities.concurrency; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/utilities/gson/AssetTypeAdapter.java b/engine/src/main/java/org/terasology/engine/utilities/gson/AssetTypeAdapter.java index 4fbb9395242..11f43c4e618 100644 --- a/engine/src/main/java/org/terasology/engine/utilities/gson/AssetTypeAdapter.java +++ b/engine/src/main/java/org/terasology/engine/utilities/gson/AssetTypeAdapter.java @@ -7,7 +7,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonParseException; import org.terasology.engine.utilities.Assets; -import org.terasology.assets.Asset; +import org.terasology.gestalt.assets.Asset; import java.lang.reflect.Type; diff --git a/engine/src/main/java/org/terasology/engine/utilities/modifiable/ModifiableValue.java b/engine/src/main/java/org/terasology/engine/utilities/modifiable/ModifiableValue.java index 7884e4db53a..7bd9b756372 100644 --- a/engine/src/main/java/org/terasology/engine/utilities/modifiable/ModifiableValue.java +++ b/engine/src/main/java/org/terasology/engine/utilities/modifiable/ModifiableValue.java @@ -3,7 +3,7 @@ package org.terasology.engine.utilities.modifiable; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * A helper type to get and modify the value of a component without changing its actual value. diff --git a/engine/src/main/java/org/terasology/engine/utilities/procedural/package-info.java b/engine/src/main/java/org/terasology/engine/utilities/procedural/package-info.java index ee8b1cdb0f0..05a3d626de8 100644 --- a/engine/src/main/java/org/terasology/engine/utilities/procedural/package-info.java +++ b/engine/src/main/java/org/terasology/engine/utilities/procedural/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.utilities.procedural; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/utilities/random/FastRandom.java b/engine/src/main/java/org/terasology/engine/utilities/random/FastRandom.java index cac522b030d..4a8ca0fbdf1 100644 --- a/engine/src/main/java/org/terasology/engine/utilities/random/FastRandom.java +++ b/engine/src/main/java/org/terasology/engine/utilities/random/FastRandom.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.utilities.random; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Random number generator based on the Xorshift generator by George Marsaglia. diff --git a/engine/src/main/java/org/terasology/engine/utilities/random/MersenneRandom.java b/engine/src/main/java/org/terasology/engine/utilities/random/MersenneRandom.java index bdbfcfbe057..05687b81b02 100644 --- a/engine/src/main/java/org/terasology/engine/utilities/random/MersenneRandom.java +++ b/engine/src/main/java/org/terasology/engine/utilities/random/MersenneRandom.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.utilities.random; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import ec.util.MersenneTwisterFast; diff --git a/engine/src/main/java/org/terasology/engine/utilities/random/Random.java b/engine/src/main/java/org/terasology/engine/utilities/random/Random.java index 5c0091b40a4..806d8acc196 100644 --- a/engine/src/main/java/org/terasology/engine/utilities/random/Random.java +++ b/engine/src/main/java/org/terasology/engine/utilities/random/Random.java @@ -5,7 +5,7 @@ import org.joml.Vector3f; import org.terasology.math.TeraMath; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/world/block/Block.java b/engine/src/main/java/org/terasology/engine/world/block/Block.java index 73cdcf6fdbb..cbaba0dd260 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/Block.java +++ b/engine/src/main/java/org/terasology/engine/world/block/Block.java @@ -8,7 +8,7 @@ import org.joml.Vector3f; import org.joml.Vector3i; import org.joml.Vector3ic; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.world.block.family.BlockFamily; diff --git a/engine/src/main/java/org/terasology/engine/world/block/BlockExplorer.java b/engine/src/main/java/org/terasology/engine/world/block/BlockExplorer.java index 47950ec8a16..08fb42366e4 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/BlockExplorer.java +++ b/engine/src/main/java/org/terasology/engine/world/block/BlockExplorer.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.world.block; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.world.block.loader.BlockFamilyDefinition; import java.util.Optional; diff --git a/engine/src/main/java/org/terasology/engine/world/block/BlockManager.java b/engine/src/main/java/org/terasology/engine/world/block/BlockManager.java index 35449572195..e442e6fb670 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/BlockManager.java +++ b/engine/src/main/java/org/terasology/engine/world/block/BlockManager.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.world.block; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.world.block.family.BlockFamily; import java.util.Collection; diff --git a/engine/src/main/java/org/terasology/engine/world/block/BlockUri.java b/engine/src/main/java/org/terasology/engine/world/block/BlockUri.java index 8c85eca7553..bc5f03a3459 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/BlockUri.java +++ b/engine/src/main/java/org/terasology/engine/world/block/BlockUri.java @@ -4,10 +4,10 @@ package org.terasology.engine.world.block; import com.google.common.base.Objects; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.exceptions.InvalidUrnException; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.Uri; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.exceptions.InvalidUrnException; +import org.terasology.gestalt.naming.Name; import java.util.Optional; diff --git a/engine/src/main/java/org/terasology/engine/world/block/Blocks.java b/engine/src/main/java/org/terasology/engine/world/block/Blocks.java index 0bfb18720cd..dbcdf9e8b86 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/Blocks.java +++ b/engine/src/main/java/org/terasology/engine/world/block/Blocks.java @@ -6,7 +6,7 @@ import org.joml.Vector3fc; import org.joml.Vector3i; import org.terasology.math.TeraMath; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * Utility class for common block-related operations. diff --git a/engine/src/main/java/org/terasology/engine/world/block/entity/BlockCommands.java b/engine/src/main/java/org/terasology/engine/world/block/entity/BlockCommands.java index ca8270f32d7..ee6514e3758 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/entity/BlockCommands.java +++ b/engine/src/main/java/org/terasology/engine/world/block/entity/BlockCommands.java @@ -6,8 +6,8 @@ import com.google.common.base.Joiner; import com.google.common.collect.Lists; import org.joml.Vector3f; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.entitySystem.entity.EntityManager; import org.terasology.engine.entitySystem.entity.EntityRef; import org.terasology.engine.entitySystem.prefab.PrefabManager; diff --git a/engine/src/main/java/org/terasology/engine/world/block/entity/damage/package-info.java b/engine/src/main/java/org/terasology/engine/world/block/entity/damage/package-info.java index a6f76889413..2adef5036ff 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/entity/damage/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/block/entity/damage/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.block.entity.damage; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/block/entity/neighbourUpdate/package-info.java b/engine/src/main/java/org/terasology/engine/world/block/entity/neighbourUpdate/package-info.java index bf11aca1aba..026e5dd9c54 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/entity/neighbourUpdate/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/block/entity/neighbourUpdate/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.block.entity.neighbourUpdate; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/block/entity/package-info.java b/engine/src/main/java/org/terasology/engine/world/block/entity/package-info.java index 615d31612a1..fba92d9d0d3 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/entity/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/block/entity/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.block.entity; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/block/entity/placement/package-info.java b/engine/src/main/java/org/terasology/engine/world/block/entity/placement/package-info.java index 2e1f4ae6ac7..7e51d8a9519 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/entity/placement/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/block/entity/placement/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.block.entity.placement; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/block/family/AttachedToSurfaceFamily.java b/engine/src/main/java/org/terasology/engine/world/block/family/AttachedToSurfaceFamily.java index 2a8ea2006ff..8b6cb1a6fca 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/family/AttachedToSurfaceFamily.java +++ b/engine/src/main/java/org/terasology/engine/world/block/family/AttachedToSurfaceFamily.java @@ -8,7 +8,7 @@ import org.terasology.engine.math.Side; import org.terasology.engine.world.block.loader.BlockFamilyDefinition; import org.terasology.engine.world.block.shapes.BlockShape; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.world.block.Block; import org.terasology.engine.world.block.BlockBuilderHelper; import org.terasology.engine.world.block.BlockUri; diff --git a/engine/src/main/java/org/terasology/engine/world/block/family/BlockFamily.java b/engine/src/main/java/org/terasology/engine/world/block/family/BlockFamily.java index 5c729b142c3..51ede9a36e5 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/family/BlockFamily.java +++ b/engine/src/main/java/org/terasology/engine/world/block/family/BlockFamily.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.world.block.family; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.world.block.Block; import org.terasology.engine.world.block.BlockUri; diff --git a/engine/src/main/java/org/terasology/engine/world/block/family/BlockFamilyLibrary.java b/engine/src/main/java/org/terasology/engine/world/block/family/BlockFamilyLibrary.java index 33ec28d93bd..b57c7cc8319 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/family/BlockFamilyLibrary.java +++ b/engine/src/main/java/org/terasology/engine/world/block/family/BlockFamilyLibrary.java @@ -4,19 +4,19 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.context.Context; import org.terasology.engine.world.block.loader.BlockFamilyDefinition; import org.terasology.engine.world.block.shapes.BlockShape; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.util.reflection.ParameterProvider; +import org.terasology.gestalt.util.reflection.SimpleClassFactory; import org.terasology.reflection.copy.CopyStrategyLibrary; import org.terasology.reflection.metadata.ClassLibrary; import org.terasology.reflection.metadata.ClassMetadata; import org.terasology.reflection.metadata.DefaultModuleClassLibrary; import org.terasology.reflection.reflect.ReflectFactory; import org.terasology.engine.registry.InjectionHelper; -import org.terasology.util.reflection.ParameterProvider; -import org.terasology.util.reflection.SimpleClassFactory; import org.terasology.engine.world.block.BlockBuilderHelper; import java.util.Optional; diff --git a/engine/src/main/java/org/terasology/engine/world/block/family/CeilingSupportingHorizontalFamily.java b/engine/src/main/java/org/terasology/engine/world/block/family/CeilingSupportingHorizontalFamily.java index b962d1023c0..8d7a840ba0c 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/family/CeilingSupportingHorizontalFamily.java +++ b/engine/src/main/java/org/terasology/engine/world/block/family/CeilingSupportingHorizontalFamily.java @@ -10,7 +10,7 @@ import org.terasology.engine.math.Yaw; import org.terasology.engine.world.block.loader.BlockFamilyDefinition; import org.terasology.engine.world.block.shapes.BlockShape; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.world.block.Block; import org.terasology.engine.world.block.BlockBuilderHelper; import org.terasology.engine.world.block.BlockUri; diff --git a/engine/src/main/java/org/terasology/engine/world/block/family/FreeformFamily.java b/engine/src/main/java/org/terasology/engine/world/block/family/FreeformFamily.java index 17b4f474105..30aea9d0fd1 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/family/FreeformFamily.java +++ b/engine/src/main/java/org/terasology/engine/world/block/family/FreeformFamily.java @@ -9,7 +9,7 @@ import org.terasology.engine.math.Side; import org.terasology.engine.world.block.loader.BlockFamilyDefinition; import org.terasology.engine.world.block.shapes.BlockShape; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.world.block.Block; import org.terasology.engine.world.block.BlockBuilderHelper; import org.terasology.engine.world.block.BlockUri; diff --git a/engine/src/main/java/org/terasology/engine/world/block/family/HorizontalFamily.java b/engine/src/main/java/org/terasology/engine/world/block/family/HorizontalFamily.java index bb357478ac8..ef7da930a85 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/family/HorizontalFamily.java +++ b/engine/src/main/java/org/terasology/engine/world/block/family/HorizontalFamily.java @@ -7,7 +7,7 @@ import org.terasology.engine.math.Side; import org.terasology.engine.world.block.loader.BlockFamilyDefinition; import org.terasology.engine.world.block.shapes.BlockShape; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.world.block.Block; import org.terasology.engine.world.block.BlockBuilderHelper; import org.terasology.engine.world.block.BlockUri; diff --git a/engine/src/main/java/org/terasology/engine/world/block/family/MultiConnectFamily.java b/engine/src/main/java/org/terasology/engine/world/block/family/MultiConnectFamily.java index de99c98aa20..2170425d70d 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/family/MultiConnectFamily.java +++ b/engine/src/main/java/org/terasology/engine/world/block/family/MultiConnectFamily.java @@ -13,7 +13,7 @@ import org.terasology.engine.math.SideBitFlag; import org.terasology.engine.world.block.loader.BlockFamilyDefinition; import org.terasology.engine.world.block.shapes.BlockShape; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.registry.In; import org.terasology.engine.world.BlockEntityRegistry; import org.terasology.engine.world.WorldProvider; diff --git a/engine/src/main/java/org/terasology/engine/world/block/family/package-info.java b/engine/src/main/java/org/terasology/engine/world/block/family/package-info.java index cbbc1811277..9e1b82a3e54 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/family/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/block/family/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.block.family; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/block/internal/BlockManagerImpl.java b/engine/src/main/java/org/terasology/engine/world/block/internal/BlockManagerImpl.java index 4dc7e2fdba0..3c616db1083 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/internal/BlockManagerImpl.java +++ b/engine/src/main/java/org/terasology/engine/world/block/internal/BlockManagerImpl.java @@ -14,8 +14,8 @@ import gnu.trove.map.hash.TShortObjectHashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.management.AssetManager; import org.terasology.engine.world.block.Block; import org.terasology.engine.world.block.BlockManager; import org.terasology.engine.world.block.BlockUri; diff --git a/engine/src/main/java/org/terasology/engine/world/block/items/package-info.java b/engine/src/main/java/org/terasology/engine/world/block/items/package-info.java index 254f8e3baee..d1e85d8136b 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/items/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/block/items/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.block.items; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/block/loader/AutoBlockProvider.java b/engine/src/main/java/org/terasology/engine/world/block/loader/AutoBlockProvider.java index fd993c8515b..793bb78dc8a 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/loader/AutoBlockProvider.java +++ b/engine/src/main/java/org/terasology/engine/world/block/loader/AutoBlockProvider.java @@ -3,12 +3,12 @@ package org.terasology.engine.world.block.loader; import com.google.common.collect.Sets; -import org.terasology.assets.AssetDataProducer; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.annotations.RegisterAssetDataProducer; +import org.terasology.gestalt.assets.AssetDataProducer; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.world.block.sounds.BlockSounds; -import org.terasology.naming.Name; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetDataProducer; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.world.block.BlockPart; import org.terasology.engine.world.block.family.FreeformFamily; import org.terasology.engine.world.block.tiles.BlockTile; diff --git a/engine/src/main/java/org/terasology/engine/world/block/loader/BlockFamilyDefinition.java b/engine/src/main/java/org/terasology/engine/world/block/loader/BlockFamilyDefinition.java index 9d7108ec0b7..3cb463a6927 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/loader/BlockFamilyDefinition.java +++ b/engine/src/main/java/org/terasology/engine/world/block/loader/BlockFamilyDefinition.java @@ -3,11 +3,11 @@ package org.terasology.engine.world.block.loader; import com.google.common.base.Preconditions; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.world.block.shapes.BlockShape; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.world.block.BlockBuilderHelper; import org.terasology.engine.world.block.family.BlockFamily; import org.terasology.engine.world.block.family.BlockFamilyLibrary; diff --git a/engine/src/main/java/org/terasology/engine/world/block/loader/BlockFamilyDefinitionData.java b/engine/src/main/java/org/terasology/engine/world/block/loader/BlockFamilyDefinitionData.java index 00a1b6778ec..14a8f7a91e3 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/loader/BlockFamilyDefinitionData.java +++ b/engine/src/main/java/org/terasology/engine/world/block/loader/BlockFamilyDefinitionData.java @@ -4,8 +4,8 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import org.terasology.assets.AssetData; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.assets.AssetData; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.world.block.family.AbstractBlockFamily; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/world/block/loader/BlockFamilyDefinitionFormat.java b/engine/src/main/java/org/terasology/engine/world/block/loader/BlockFamilyDefinitionFormat.java index f3656b27748..ac070c09ecd 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/loader/BlockFamilyDefinitionFormat.java +++ b/engine/src/main/java/org/terasology/engine/world/block/loader/BlockFamilyDefinitionFormat.java @@ -19,11 +19,8 @@ import com.google.gson.stream.JsonWriter; import org.joml.Vector3f; import org.joml.Vector4f; -import org.terasology.assets.Asset; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.management.AssetManager; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.entitySystem.prefab.Prefab; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.world.block.shapes.BlockShape; @@ -39,6 +36,9 @@ import org.terasology.engine.world.block.family.MultiSection; import org.terasology.engine.world.block.family.SymmetricFamily; import org.terasology.engine.world.block.tiles.BlockTile; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.management.AssetManager; import java.io.BufferedReader; import java.io.IOException; diff --git a/engine/src/main/java/org/terasology/engine/world/block/loader/EntityData.java b/engine/src/main/java/org/terasology/engine/world/block/loader/EntityData.java index 1c68df8845b..bc8d88c91bc 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/loader/EntityData.java +++ b/engine/src/main/java/org/terasology/engine/world/block/loader/EntityData.java @@ -3,7 +3,7 @@ package org.terasology.engine.world.block.loader; import org.terasology.engine.entitySystem.prefab.Prefab; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** */ diff --git a/engine/src/main/java/org/terasology/engine/world/block/loader/InventoryData.java b/engine/src/main/java/org/terasology/engine/world/block/loader/InventoryData.java index 5ad3360c7d7..d74ff14d0c4 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/loader/InventoryData.java +++ b/engine/src/main/java/org/terasology/engine/world/block/loader/InventoryData.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.world.block.loader; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** */ diff --git a/engine/src/main/java/org/terasology/engine/world/block/loader/SectionDefinitionData.java b/engine/src/main/java/org/terasology/engine/world/block/loader/SectionDefinitionData.java index 347f3db2e28..b0c0f8d15d6 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/loader/SectionDefinitionData.java +++ b/engine/src/main/java/org/terasology/engine/world/block/loader/SectionDefinitionData.java @@ -6,7 +6,7 @@ import org.joml.Vector3f; import org.terasology.engine.world.block.shapes.BlockShape; import org.terasology.engine.world.block.sounds.BlockSounds; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.world.block.BlockPart; import org.terasology.engine.world.block.tiles.BlockTile; diff --git a/engine/src/main/java/org/terasology/engine/world/block/package-info.java b/engine/src/main/java/org/terasology/engine/world/block/package-info.java index 981295a2c85..0a9525d8431 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/block/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.block; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/block/regions/package-info.java b/engine/src/main/java/org/terasology/engine/world/block/regions/package-info.java index f2b863f4ea8..20c5d7d091f 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/regions/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/block/regions/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.block.regions; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/block/shapes/BlockShape.java b/engine/src/main/java/org/terasology/engine/world/block/shapes/BlockShape.java index 05145fe0cff..21ef63c6a4a 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/shapes/BlockShape.java +++ b/engine/src/main/java/org/terasology/engine/world/block/shapes/BlockShape.java @@ -3,9 +3,9 @@ package org.terasology.engine.world.block.shapes; import org.joml.Vector3f; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.math.Rotation; import org.terasology.engine.math.Side; import org.terasology.engine.physics.shapes.CollisionShape; diff --git a/engine/src/main/java/org/terasology/engine/world/block/shapes/BlockShapeData.java b/engine/src/main/java/org/terasology/engine/world/block/shapes/BlockShapeData.java index 0ab78166d90..fcc6a165f86 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/shapes/BlockShapeData.java +++ b/engine/src/main/java/org/terasology/engine/world/block/shapes/BlockShapeData.java @@ -4,7 +4,7 @@ import com.google.common.collect.Maps; import org.joml.Vector3f; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import org.terasology.engine.math.Side; import org.terasology.engine.physics.shapes.CollisionShape; import org.terasology.engine.utilities.collection.EnumBooleanMap; diff --git a/engine/src/main/java/org/terasology/engine/world/block/shapes/BlockShapeImpl.java b/engine/src/main/java/org/terasology/engine/world/block/shapes/BlockShapeImpl.java index 50f927482d6..286caf0cbd2 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/shapes/BlockShapeImpl.java +++ b/engine/src/main/java/org/terasology/engine/world/block/shapes/BlockShapeImpl.java @@ -5,8 +5,8 @@ import com.google.common.collect.Maps; import org.joml.Quaternionf; import org.joml.Vector3f; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.math.Pitch; import org.terasology.engine.math.Roll; import org.terasology.engine.math.Rotation; diff --git a/engine/src/main/java/org/terasology/engine/world/block/shapes/JsonBlockShapeLoader.java b/engine/src/main/java/org/terasology/engine/world/block/shapes/JsonBlockShapeLoader.java index 975dcdbc194..2d154c4b3b4 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/shapes/JsonBlockShapeLoader.java +++ b/engine/src/main/java/org/terasology/engine/world/block/shapes/JsonBlockShapeLoader.java @@ -17,10 +17,10 @@ import gnu.trove.list.array.TIntArrayList; import org.joml.Vector2f; import org.joml.Vector3f; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import org.terasology.engine.math.Rotation; import org.terasology.engine.physics.shapes.CollisionShape; import org.terasology.engine.physics.shapes.CompoundShape; diff --git a/engine/src/main/java/org/terasology/engine/world/block/shapes/package-info.java b/engine/src/main/java/org/terasology/engine/world/block/shapes/package-info.java index 1f5e340655c..95dbee7ab4e 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/shapes/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/block/shapes/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.block.shapes; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/block/sounds/BlockSounds.java b/engine/src/main/java/org/terasology/engine/world/block/sounds/BlockSounds.java index 8acfdfd01c2..be9c8c80c67 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/sounds/BlockSounds.java +++ b/engine/src/main/java/org/terasology/engine/world/block/sounds/BlockSounds.java @@ -2,11 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.world.block.sounds; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.audio.StaticSound; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.util.ArrayList; import java.util.Collections; diff --git a/engine/src/main/java/org/terasology/engine/world/block/sounds/BlockSoundsData.java b/engine/src/main/java/org/terasology/engine/world/block/sounds/BlockSoundsData.java index 60c674782d5..e7c5d58d918 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/sounds/BlockSoundsData.java +++ b/engine/src/main/java/org/terasology/engine/world/block/sounds/BlockSoundsData.java @@ -2,9 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.world.block.sounds; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import org.terasology.engine.audio.StaticSound; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.util.ArrayList; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/world/block/sounds/BlockSoundsFormat.java b/engine/src/main/java/org/terasology/engine/world/block/sounds/BlockSoundsFormat.java index 40cf35e4c6d..890c5c6a665 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/sounds/BlockSoundsFormat.java +++ b/engine/src/main/java/org/terasology/engine/world/block/sounds/BlockSoundsFormat.java @@ -7,11 +7,11 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.management.AssetManager; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.management.AssetManager; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import org.terasology.engine.audio.StaticSound; import java.io.BufferedReader; diff --git a/engine/src/main/java/org/terasology/engine/world/block/tiles/BlockTile.java b/engine/src/main/java/org/terasology/engine/world/block/tiles/BlockTile.java index c80c3524b73..39f3f61f29a 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/tiles/BlockTile.java +++ b/engine/src/main/java/org/terasology/engine/world/block/tiles/BlockTile.java @@ -3,10 +3,10 @@ package org.terasology.engine.world.block.tiles; import com.google.common.collect.Lists; -import org.terasology.assets.Asset; -import org.terasology.assets.AssetType; -import org.terasology.assets.ResourceUrn; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.assets.Asset; +import org.terasology.gestalt.assets.AssetType; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.module.sandbox.API; import java.awt.image.BufferedImage; import java.util.Collections; @@ -33,7 +33,7 @@ public BufferedImage getImage() { public BufferedImage getImage(int i) { return images[i]; } - + public int getLength() { return images.length; } diff --git a/engine/src/main/java/org/terasology/engine/world/block/tiles/NullWorldAtlas.java b/engine/src/main/java/org/terasology/engine/world/block/tiles/NullWorldAtlas.java index 9aef968a3ff..354564af455 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/tiles/NullWorldAtlas.java +++ b/engine/src/main/java/org/terasology/engine/world/block/tiles/NullWorldAtlas.java @@ -4,7 +4,7 @@ package org.terasology.engine.world.block.tiles; import org.joml.Vector2f; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; /** * Dummy implementation of WorldAtlas diff --git a/engine/src/main/java/org/terasology/engine/world/block/tiles/TileData.java b/engine/src/main/java/org/terasology/engine/world/block/tiles/TileData.java index 795688caaea..847cce8852c 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/tiles/TileData.java +++ b/engine/src/main/java/org/terasology/engine/world/block/tiles/TileData.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.world.block.tiles; -import org.terasology.assets.AssetData; +import org.terasology.gestalt.assets.AssetData; import java.awt.image.BufferedImage; diff --git a/engine/src/main/java/org/terasology/engine/world/block/tiles/TileFormat.java b/engine/src/main/java/org/terasology/engine/world/block/tiles/TileFormat.java index 0f97ccbe2dd..ed70bc924e9 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/tiles/TileFormat.java +++ b/engine/src/main/java/org/terasology/engine/world/block/tiles/TileFormat.java @@ -4,10 +4,10 @@ package org.terasology.engine.world.block.tiles; import com.google.common.math.IntMath; -import org.terasology.assets.ResourceUrn; -import org.terasology.assets.format.AbstractAssetFileFormat; -import org.terasology.assets.format.AssetDataFile; -import org.terasology.assets.module.annotations.RegisterAssetFileFormat; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.assets.format.AbstractAssetFileFormat; +import org.terasology.gestalt.assets.format.AssetDataFile; +import org.terasology.gestalt.assets.module.annotations.RegisterAssetFileFormat; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; diff --git a/engine/src/main/java/org/terasology/engine/world/block/tiles/WorldAtlas.java b/engine/src/main/java/org/terasology/engine/world/block/tiles/WorldAtlas.java index 0ce9dc8efe8..b152bd2cdb9 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/tiles/WorldAtlas.java +++ b/engine/src/main/java/org/terasology/engine/world/block/tiles/WorldAtlas.java @@ -4,8 +4,8 @@ package org.terasology.engine.world.block.tiles; import org.joml.Vector2f; -import org.terasology.assets.ResourceUrn; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.assets.ResourceUrn; +import org.terasology.gestalt.module.sandbox.API; /** */ diff --git a/engine/src/main/java/org/terasology/engine/world/block/tiles/WorldAtlasImpl.java b/engine/src/main/java/org/terasology/engine/world/block/tiles/WorldAtlasImpl.java index 9f4eb93a362..e5535337838 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/tiles/WorldAtlasImpl.java +++ b/engine/src/main/java/org/terasology/engine/world/block/tiles/WorldAtlasImpl.java @@ -12,11 +12,11 @@ import org.joml.Vector2f; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.core.paths.PathManager; import org.terasology.joml.geom.Rectanglef; import org.terasology.math.TeraMath; -import org.terasology.naming.Name; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.rendering.assets.atlas.Atlas; import org.terasology.engine.rendering.assets.atlas.AtlasData; import org.terasology.engine.rendering.assets.material.Material; diff --git a/engine/src/main/java/org/terasology/engine/world/block/typeEntity/package-info.java b/engine/src/main/java/org/terasology/engine/world/block/typeEntity/package-info.java index abe89a8ae41..3c517815d0e 100644 --- a/engine/src/main/java/org/terasology/engine/world/block/typeEntity/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/block/typeEntity/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.block.typeEntity; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/chunks/Chunk.java b/engine/src/main/java/org/terasology/engine/world/chunks/Chunk.java index 85a9410e28b..9e19bf58ecc 100644 --- a/engine/src/main/java/org/terasology/engine/world/chunks/Chunk.java +++ b/engine/src/main/java/org/terasology/engine/world/chunks/Chunk.java @@ -9,8 +9,8 @@ import org.terasology.engine.rendering.primitives.ChunkMesh; import org.terasology.engine.world.block.Block; import org.terasology.engine.world.block.BlockRegionc; -import org.terasology.module.sandbox.API; import org.terasology.protobuf.EntityData; +import org.terasology.gestalt.module.sandbox.API; /** * Chunks are a box-shaped logical grouping of Terasology's blocks, for performance reasons. diff --git a/engine/src/main/java/org/terasology/engine/world/chunks/ChunkBlockIterator.java b/engine/src/main/java/org/terasology/engine/world/chunks/ChunkBlockIterator.java index 0e97a0505f3..dfc2a4111a9 100644 --- a/engine/src/main/java/org/terasology/engine/world/chunks/ChunkBlockIterator.java +++ b/engine/src/main/java/org/terasology/engine/world/chunks/ChunkBlockIterator.java @@ -3,7 +3,7 @@ package org.terasology.engine.world.chunks; import org.joml.Vector3ic; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.world.block.Block; /** diff --git a/engine/src/main/java/org/terasology/engine/world/chunks/Chunks.java b/engine/src/main/java/org/terasology/engine/world/chunks/Chunks.java index 65c93c8baa6..e791555e10a 100644 --- a/engine/src/main/java/org/terasology/engine/world/chunks/Chunks.java +++ b/engine/src/main/java/org/terasology/engine/world/chunks/Chunks.java @@ -8,7 +8,7 @@ import org.joml.Vector3fc; import org.joml.Vector3i; import org.joml.Vector3ic; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.world.block.BlockRegion; import org.terasology.engine.world.block.BlockRegionc; diff --git a/engine/src/main/java/org/terasology/engine/world/chunks/RenderableChunk.java b/engine/src/main/java/org/terasology/engine/world/chunks/RenderableChunk.java index 83c79240461..0391d6f0556 100644 --- a/engine/src/main/java/org/terasology/engine/world/chunks/RenderableChunk.java +++ b/engine/src/main/java/org/terasology/engine/world/chunks/RenderableChunk.java @@ -4,7 +4,7 @@ import org.joml.Vector3f; import org.terasology.joml.geom.AABBfc; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.rendering.primitives.ChunkMesh; /** diff --git a/engine/src/main/java/org/terasology/engine/world/chunks/blockdata/ExtraBlockDataManager.java b/engine/src/main/java/org/terasology/engine/world/chunks/blockdata/ExtraBlockDataManager.java index 39f2a668691..1420c704253 100644 --- a/engine/src/main/java/org/terasology/engine/world/chunks/blockdata/ExtraBlockDataManager.java +++ b/engine/src/main/java/org/terasology/engine/world/chunks/blockdata/ExtraBlockDataManager.java @@ -7,8 +7,8 @@ import org.slf4j.LoggerFactory; import org.terasology.engine.context.Context; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.world.block.Block; import org.terasology.engine.world.block.BlockManager; @@ -51,10 +51,10 @@ public class ExtraBlockDataManager { TERA_ARRAY_FACTORIES.put(8, new TeraSparseArray8Bit.Factory()); TERA_ARRAY_FACTORIES.put(16, new TeraSparseArray16Bit.Factory()); } - + private Map slots; private TeraArray.Factory[] slotFactories; - + /** * Construct a trivial instance for testing purposes: don't add any data-fields. */ @@ -62,13 +62,13 @@ public ExtraBlockDataManager() { slots = new HashMap<>(); slotFactories = new TeraArray.Factory[0]; } - + /** * Set extra-data fields based on the modules available through the context. */ public ExtraBlockDataManager(Context context) { Map>> fieldss = getFieldsFromAnnotations(context); - + // Work out which fields don't overlap and can be aliased together. slots = new HashMap<>(); ArrayList> tempSlotTypes = new ArrayList<>(); @@ -83,7 +83,7 @@ public ExtraBlockDataManager(Context context) { } }); slotFactories = tempSlotTypes.toArray(new TeraArray.Factory[0]); - + String loggingOutput = "Extra data slots registered:"; boolean first = true; for (Map.Entry entry : slots.entrySet()) { @@ -92,15 +92,15 @@ public ExtraBlockDataManager(Context context) { } logger.info(loggingOutput); } - + // Find requests for extensions and which blocks they apply to. private Map>> getFieldsFromAnnotations(Context context) { ModuleEnvironment environment = context.get(ModuleManager.class).getEnvironment(); Collection blocks = context.get(BlockManager.class).listRegisteredBlocks(); - + Map>> fieldss = new HashMap<>(); TERA_ARRAY_FACTORIES.forEach((size, fac) -> fieldss.put(size, new HashMap<>())); - + for (Class type : environment.getTypesAnnotatedWith(ExtraDataSystem.class)) { for (Method method : type.getMethods()) { RegisterExtraData registerAnnotation = method.getAnnotation(RegisterExtraData.class); @@ -132,7 +132,7 @@ private Map>> getFieldsFromAnnotations(Context c } return fieldss; } - + private static String validRegistrationMethod(Method method, RegisterExtraData annotation) { Class[] argumentTypes = method.getParameterTypes(); return method.getReturnType() != boolean.class ? "incorrect return type" @@ -142,7 +142,7 @@ private static String validRegistrationMethod(Method method, RegisterExtraData a : argumentTypes[0] != Block.class ? "incorrect argument type" : null; } - + private static Graph getDisjointnessGraph(Map> fields) { Graph graph = new Graph(fields.keySet().toArray(new String[0])); fields.forEach((name0, blockSet0) -> @@ -154,7 +154,7 @@ private static Graph getDisjointnessGraph(Map> fields) { ); return graph; } - + //This is exponential time, but the problem is known to be NP-hard in general and large cases are unlikely to come up. /** * Find the smallest-possible number of cliques that contain all of the vertices of the graph. @@ -163,7 +163,7 @@ private static Graph getDisjointnessGraph(Map> fields) { private static ArrayList> findCliqueCover(Graph graph) { return findCliqueCover(graph, Integer.MAX_VALUE, ""); } - + private static ArrayList> findCliqueCover(Graph graph, int bestSize, String tabs) { verboseLog(tabs + "findCliqueCover up to " + bestSize + ", " + graph.toString()); for (int i = 0; i < graph.size(); i++) { @@ -199,12 +199,12 @@ private static ArrayList> findCliqueCover(Graph graph, int bes } return bestCover; } - + // Log something, but only when this class is being tested. private static void verboseLog(String string) { //logger.info(string); } - + /** * Get the numerical index associated with the extra data field name. * This numerical index is needed for most extra-data access methods. @@ -216,7 +216,7 @@ public int getSlotNumber(String name) { } return index; } - + public TeraArray[] makeDataArrays(int sizeX, int sizeY, int sizeZ) { TeraArray[] extraData = new TeraArray[slotFactories.length]; for (int i = 0; i < extraData.length; i++) { @@ -224,7 +224,7 @@ public TeraArray[] makeDataArrays(int sizeX, int sizeY, int sizeZ) { } return extraData; } - + /** * Undirected graphs with string-labelled vertices. * Used to represent the overlaps between requested extra-data fields. @@ -232,12 +232,12 @@ public TeraArray[] makeDataArrays(int sizeX, int sizeY, int sizeZ) { private static class Graph { private String[] verts; private Map> edges; - + private Graph(String[] verts, Map> edges) { this.verts = verts; this.edges = edges; } - + Graph(String[] verts) { this.verts = verts.clone(); this.edges = new HashMap<>(); @@ -245,31 +245,31 @@ private Graph(String[] verts, Map> edges) { edges.put(vert, new HashSet()); } } - + public int size() { return verts.length; } - + public String getVert(int i) { return verts[i]; } - + public Set getEdges(String v) { return Collections.unmodifiableSet(edges.get(v)); } - + public Graph addEdge(String s0, String s1) { edges.get(s0).add(s1); edges.get(s1).add(s0); return this; } - + public Graph removeEdge(String s0, String s1) { edges.get(s0).remove(s1); edges.get(s1).remove(s0); return this; } - + // Creates a new graph containing the complement of the contraction of the complement. public Graph ntract(String s0, String s1) { int v0 = -1; @@ -303,7 +303,7 @@ public Graph ntract(String s0, String s1) { } return new Graph(newVerts, newEdges); } - + public String toString() { String result = "Graph:"; for (int i = 0; i < verts.length; i++) { diff --git a/engine/src/main/java/org/terasology/engine/world/chunks/blockdata/ExtraDataSystem.java b/engine/src/main/java/org/terasology/engine/world/chunks/blockdata/ExtraDataSystem.java index c0d8d0a661d..3d2ed2024c7 100644 --- a/engine/src/main/java/org/terasology/engine/world/chunks/blockdata/ExtraDataSystem.java +++ b/engine/src/main/java/org/terasology/engine/world/chunks/blockdata/ExtraDataSystem.java @@ -3,7 +3,7 @@ package org.terasology.engine.world.chunks.blockdata; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/engine/src/main/java/org/terasology/engine/world/chunks/blockdata/RegisterExtraData.java b/engine/src/main/java/org/terasology/engine/world/chunks/blockdata/RegisterExtraData.java index 39e14c44441..063e2d6b43f 100644 --- a/engine/src/main/java/org/terasology/engine/world/chunks/blockdata/RegisterExtraData.java +++ b/engine/src/main/java/org/terasology/engine/world/chunks/blockdata/RegisterExtraData.java @@ -3,7 +3,7 @@ package org.terasology.engine.world.chunks.blockdata; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/engine/src/main/java/org/terasology/engine/world/chunks/event/package-info.java b/engine/src/main/java/org/terasology/engine/world/chunks/event/package-info.java index 03c6250591e..1663c200805 100644 --- a/engine/src/main/java/org/terasology/engine/world/chunks/event/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/chunks/event/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.chunks.event; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/generation/facets/base/package-info.java b/engine/src/main/java/org/terasology/engine/world/generation/facets/base/package-info.java index ee39e9f6c08..5efb0955df7 100644 --- a/engine/src/main/java/org/terasology/engine/world/generation/facets/base/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/generation/facets/base/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.generation.facets.base; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/generation/facets/package-info.java b/engine/src/main/java/org/terasology/engine/world/generation/facets/package-info.java index 51acfb38059..651f52311e6 100644 --- a/engine/src/main/java/org/terasology/engine/world/generation/facets/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/generation/facets/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.generation.facets; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/generation/package-info.java b/engine/src/main/java/org/terasology/engine/world/generation/package-info.java index f1e6cd17c71..7bb422aa5c3 100644 --- a/engine/src/main/java/org/terasology/engine/world/generation/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/generation/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.generation; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/generator/internal/WorldGeneratorManager.java b/engine/src/main/java/org/terasology/engine/world/generator/internal/WorldGeneratorManager.java index 5a40da40b29..cd3d3379ca4 100644 --- a/engine/src/main/java/org/terasology/engine/world/generator/internal/WorldGeneratorManager.java +++ b/engine/src/main/java/org/terasology/engine/world/generator/internal/WorldGeneratorManager.java @@ -9,11 +9,12 @@ import org.terasology.engine.context.Context; import org.terasology.engine.core.SimpleUri; import org.terasology.engine.core.module.ModuleManager; -import org.terasology.module.DependencyResolver; -import org.terasology.module.Module; -import org.terasology.module.ModuleEnvironment; -import org.terasology.module.ResolutionResult; -import org.terasology.naming.Name; +import org.terasology.gestalt.module.Module; +import org.terasology.gestalt.module.ModuleEnvironment; +import org.terasology.gestalt.module.dependencyresolution.DependencyResolver; +import org.terasology.gestalt.module.dependencyresolution.ResolutionResult; +import org.terasology.gestalt.module.resources.DirectoryFileSource; +import org.terasology.gestalt.naming.Name; import org.terasology.engine.registry.InjectionHelper; import org.terasology.engine.world.generator.RegisterWorldGenerator; import org.terasology.engine.world.generator.UnresolvedWorldGeneratorException; @@ -42,7 +43,8 @@ public void refresh() { List infos = Lists.newArrayList(); for (Name moduleId : moduleManager.getRegistry().getModuleIds()) { Module module = moduleManager.getRegistry().getLatestModuleVersion(moduleId); - if (module.isCodeModule()) { + + if (module.getResources() instanceof DirectoryFileSource) { DependencyResolver resolver = new DependencyResolver(moduleManager.getRegistry()); ResolutionResult resolutionResult = resolver.resolve(module.getId()); if (resolutionResult.isSuccess()) { diff --git a/engine/src/main/java/org/terasology/engine/world/generator/package-info.java b/engine/src/main/java/org/terasology/engine/world/generator/package-info.java index e910564357e..d942cdf8467 100644 --- a/engine/src/main/java/org/terasology/engine/world/generator/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/generator/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.generator; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/generator/plugin/DefaultWorldGeneratorPluginLibrary.java b/engine/src/main/java/org/terasology/engine/world/generator/plugin/DefaultWorldGeneratorPluginLibrary.java index b4b37b26e79..e4fefaeceb8 100644 --- a/engine/src/main/java/org/terasology/engine/world/generator/plugin/DefaultWorldGeneratorPluginLibrary.java +++ b/engine/src/main/java/org/terasology/engine/world/generator/plugin/DefaultWorldGeneratorPluginLibrary.java @@ -3,9 +3,9 @@ package org.terasology.engine.world.generator.plugin; import com.google.common.collect.Lists; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.context.Context; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; import org.terasology.reflection.copy.CopyStrategyLibrary; import org.terasology.reflection.metadata.ClassLibrary; import org.terasology.reflection.metadata.ClassMetadata; diff --git a/engine/src/main/java/org/terasology/engine/world/generator/plugin/TempWorldGeneratorPluginLibrary.java b/engine/src/main/java/org/terasology/engine/world/generator/plugin/TempWorldGeneratorPluginLibrary.java index b07abb783ee..94d67f37fb8 100644 --- a/engine/src/main/java/org/terasology/engine/world/generator/plugin/TempWorldGeneratorPluginLibrary.java +++ b/engine/src/main/java/org/terasology/engine/world/generator/plugin/TempWorldGeneratorPluginLibrary.java @@ -3,7 +3,7 @@ package org.terasology.engine.world.generator.plugin; import org.terasology.engine.context.Context; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; /** * A fake environment so that plugins can be loaded for configuration. diff --git a/engine/src/main/java/org/terasology/engine/world/generator/plugin/package-info.java b/engine/src/main/java/org/terasology/engine/world/generator/plugin/package-info.java index 85f718af557..da073ff36cf 100644 --- a/engine/src/main/java/org/terasology/engine/world/generator/plugin/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/generator/plugin/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.generator.plugin; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/package-info.java b/engine/src/main/java/org/terasology/engine/world/package-info.java index c4aac5a73cd..83df44b6af1 100644 --- a/engine/src/main/java/org/terasology/engine/world/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/selection/BlockSelectionComponent.java b/engine/src/main/java/org/terasology/engine/world/selection/BlockSelectionComponent.java index 5b2c583297e..125539df133 100644 --- a/engine/src/main/java/org/terasology/engine/world/selection/BlockSelectionComponent.java +++ b/engine/src/main/java/org/terasology/engine/world/selection/BlockSelectionComponent.java @@ -5,7 +5,7 @@ import org.joml.Vector3i; import org.terasology.engine.entitySystem.Component; import org.terasology.engine.logic.selection.MovableSelectionStartEvent; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.rendering.assets.texture.Texture; import org.terasology.engine.world.block.BlockRegion; diff --git a/engine/src/main/java/org/terasology/engine/world/selection/event/package-info.java b/engine/src/main/java/org/terasology/engine/world/selection/event/package-info.java index 4656a61f69a..cddf691e75f 100644 --- a/engine/src/main/java/org/terasology/engine/world/selection/event/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/selection/event/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.selection.event; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/sun/package-info.java b/engine/src/main/java/org/terasology/engine/world/sun/package-info.java index 7c4235fb8e4..f13614ef44b 100644 --- a/engine/src/main/java/org/terasology/engine/world/sun/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/sun/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.sun; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/time/package-info.java b/engine/src/main/java/org/terasology/engine/world/time/package-info.java index e803393ae2f..34f81b4336f 100644 --- a/engine/src/main/java/org/terasology/engine/world/time/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/time/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.time; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/viewer/color/package-info.java b/engine/src/main/java/org/terasology/engine/world/viewer/color/package-info.java index 944cc6fa387..0c9f795a4f4 100644 --- a/engine/src/main/java/org/terasology/engine/world/viewer/color/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/viewer/color/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.viewer.color; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/viewer/layers/FacetLayerConfig.java b/engine/src/main/java/org/terasology/engine/world/viewer/layers/FacetLayerConfig.java index 7d78b05c1ca..d1d803a873e 100644 --- a/engine/src/main/java/org/terasology/engine/world/viewer/layers/FacetLayerConfig.java +++ b/engine/src/main/java/org/terasology/engine/world/viewer/layers/FacetLayerConfig.java @@ -3,7 +3,7 @@ package org.terasology.engine.world.viewer.layers; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; @API public interface FacetLayerConfig { diff --git a/engine/src/main/java/org/terasology/engine/world/viewer/layers/FacetLayers.java b/engine/src/main/java/org/terasology/engine/world/viewer/layers/FacetLayers.java index 3027401edcc..99dd18ceb68 100644 --- a/engine/src/main/java/org/terasology/engine/world/viewer/layers/FacetLayers.java +++ b/engine/src/main/java/org/terasology/engine/world/viewer/layers/FacetLayers.java @@ -6,7 +6,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.terasology.engine.world.generation.WorldFacet; -import org.terasology.module.ModuleEnvironment; +import org.terasology.gestalt.module.ModuleEnvironment; import java.lang.reflect.Modifier; import java.util.ArrayList; diff --git a/engine/src/main/java/org/terasology/engine/world/viewer/layers/engine/package-info.java b/engine/src/main/java/org/terasology/engine/world/viewer/layers/engine/package-info.java index 8e2189d69d7..f616cb92f96 100644 --- a/engine/src/main/java/org/terasology/engine/world/viewer/layers/engine/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/viewer/layers/engine/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.viewer.layers.engine; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/viewer/layers/package-info.java b/engine/src/main/java/org/terasology/engine/world/viewer/layers/package-info.java index 7fc02af3c17..f33be3df83f 100644 --- a/engine/src/main/java/org/terasology/engine/world/viewer/layers/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/viewer/layers/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.viewer.layers; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/viewer/picker/package-info.java b/engine/src/main/java/org/terasology/engine/world/viewer/picker/package-info.java index 70ca627f802..75b76f13e97 100644 --- a/engine/src/main/java/org/terasology/engine/world/viewer/picker/package-info.java +++ b/engine/src/main/java/org/terasology/engine/world/viewer/picker/package-info.java @@ -3,4 +3,4 @@ @API package org.terasology.engine.world.viewer.picker; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/engine/src/main/java/org/terasology/engine/world/zones/ConstantLayerThickness.java b/engine/src/main/java/org/terasology/engine/world/zones/ConstantLayerThickness.java index 0aac3520b3d..6eab0c92798 100644 --- a/engine/src/main/java/org/terasology/engine/world/zones/ConstantLayerThickness.java +++ b/engine/src/main/java/org/terasology/engine/world/zones/ConstantLayerThickness.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.world.zones; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * This is a {@link LayerThickness} for a layer that has a constant, predetermined thickness at all paints. diff --git a/engine/src/main/java/org/terasology/engine/world/zones/LayerThickness.java b/engine/src/main/java/org/terasology/engine/world/zones/LayerThickness.java index c41e6e5dce6..e6a0b4333a3 100644 --- a/engine/src/main/java/org/terasology/engine/world/zones/LayerThickness.java +++ b/engine/src/main/java/org/terasology/engine/world/zones/LayerThickness.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.world.zones; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * This function is used to determine the thickness of a {@link LayeredZoneRegionFunction} at each point on the layer. diff --git a/engine/src/main/java/org/terasology/engine/world/zones/LayeredZoneRegionFunction.java b/engine/src/main/java/org/terasology/engine/world/zones/LayeredZoneRegionFunction.java index 05c1b708b26..bb2c91e507b 100644 --- a/engine/src/main/java/org/terasology/engine/world/zones/LayeredZoneRegionFunction.java +++ b/engine/src/main/java/org/terasology/engine/world/zones/LayeredZoneRegionFunction.java @@ -6,7 +6,7 @@ import org.terasology.engine.world.chunks.Chunks; import org.terasology.engine.world.generation.Region; import org.terasology.engine.world.generation.facets.ElevationFacet; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.util.Comparator; import java.util.List; diff --git a/engine/src/main/java/org/terasology/engine/world/zones/MinMaxLayerThickness.java b/engine/src/main/java/org/terasology/engine/world/zones/MinMaxLayerThickness.java index 5327cc2b6bd..6876ca09002 100644 --- a/engine/src/main/java/org/terasology/engine/world/zones/MinMaxLayerThickness.java +++ b/engine/src/main/java/org/terasology/engine/world/zones/MinMaxLayerThickness.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.world.zones; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.utilities.procedural.BrownianNoise; import org.terasology.engine.utilities.procedural.SimplexNoise; diff --git a/engine/src/main/java/org/terasology/engine/world/zones/SeededNoiseLayerThickness.java b/engine/src/main/java/org/terasology/engine/world/zones/SeededNoiseLayerThickness.java index 559a1c6e24f..bc76ac15d2d 100644 --- a/engine/src/main/java/org/terasology/engine/world/zones/SeededNoiseLayerThickness.java +++ b/engine/src/main/java/org/terasology/engine/world/zones/SeededNoiseLayerThickness.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.world.zones; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.utilities.procedural.Noise; import java.util.function.LongFunction; diff --git a/engine/src/main/java/org/terasology/engine/world/zones/SingleBlockRasterizer.java b/engine/src/main/java/org/terasology/engine/world/zones/SingleBlockRasterizer.java index 0e52307a282..a14fbd10109 100644 --- a/engine/src/main/java/org/terasology/engine/world/zones/SingleBlockRasterizer.java +++ b/engine/src/main/java/org/terasology/engine/world/zones/SingleBlockRasterizer.java @@ -5,7 +5,7 @@ import org.terasology.engine.world.chunks.Chunk; import org.terasology.engine.world.generation.Region; import org.terasology.engine.world.generation.WorldRasterizer; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.registry.CoreRegistry; import org.terasology.engine.world.block.Block; import org.terasology.engine.world.block.BlockManager; diff --git a/engine/src/main/java/org/terasology/engine/world/zones/Zone.java b/engine/src/main/java/org/terasology/engine/world/zones/Zone.java index 69b4960205c..1f6577ad3f3 100644 --- a/engine/src/main/java/org/terasology/engine/world/zones/Zone.java +++ b/engine/src/main/java/org/terasology/engine/world/zones/Zone.java @@ -14,7 +14,7 @@ import org.terasology.engine.world.generation.WorldRasterizer; import org.terasology.engine.world.generator.WorldGenerator; import org.terasology.engine.world.viewer.layers.FacetLayer; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import org.terasology.engine.rendering.nui.layers.mainMenu.preview.FacetLayerPreview; import org.terasology.engine.rendering.nui.layers.mainMenu.preview.PreviewGenerator; import org.terasology.engine.world.block.Block; diff --git a/engine/src/main/java/org/terasology/engine/world/zones/ZonePlugin.java b/engine/src/main/java/org/terasology/engine/world/zones/ZonePlugin.java index 289afe1e3ad..ddec7ff1628 100644 --- a/engine/src/main/java/org/terasology/engine/world/zones/ZonePlugin.java +++ b/engine/src/main/java/org/terasology/engine/world/zones/ZonePlugin.java @@ -5,7 +5,7 @@ import org.joml.Vector3ic; import org.terasology.engine.world.generation.Region; import org.terasology.engine.world.generator.plugin.WorldGeneratorPlugin; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; import java.util.function.BiPredicate; import java.util.function.BooleanSupplier; diff --git a/engine/src/main/java/org/terasology/engine/world/zones/ZoneRegionFunction.java b/engine/src/main/java/org/terasology/engine/world/zones/ZoneRegionFunction.java index 6b7608c6012..b949c8157a6 100644 --- a/engine/src/main/java/org/terasology/engine/world/zones/ZoneRegionFunction.java +++ b/engine/src/main/java/org/terasology/engine/world/zones/ZoneRegionFunction.java @@ -3,7 +3,7 @@ package org.terasology.engine.world.zones; import org.terasology.engine.world.generation.Region; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; /** * The ZoneRegionFunction determines which blocks are part of a given region. diff --git a/engine/src/main/resources/assets/atlas/gui.atlas b/engine/src/main/resources/org/terasology/engine/assets/atlas/gui.atlas similarity index 100% rename from engine/src/main/resources/assets/atlas/gui.atlas rename to engine/src/main/resources/org/terasology/engine/assets/atlas/gui.atlas diff --git a/engine/src/main/resources/assets/atlas/icons.atlas b/engine/src/main/resources/org/terasology/engine/assets/atlas/icons.atlas similarity index 100% rename from engine/src/main/resources/assets/atlas/icons.atlas rename to engine/src/main/resources/org/terasology/engine/assets/atlas/icons.atlas diff --git a/engine/src/main/resources/assets/atlas/items.atlas b/engine/src/main/resources/org/terasology/engine/assets/atlas/items.atlas similarity index 100% rename from engine/src/main/resources/assets/atlas/items.atlas rename to engine/src/main/resources/org/terasology/engine/assets/atlas/items.atlas diff --git a/engine/src/main/resources/assets/behaviors/default.behavior b/engine/src/main/resources/org/terasology/engine/assets/behaviors/default.behavior similarity index 100% rename from engine/src/main/resources/assets/behaviors/default.behavior rename to engine/src/main/resources/org/terasology/engine/assets/behaviors/default.behavior diff --git a/engine/src/main/resources/assets/blockSounds/default.blocksounds b/engine/src/main/resources/org/terasology/engine/assets/blockSounds/default.blocksounds similarity index 100% rename from engine/src/main/resources/assets/blockSounds/default.blocksounds rename to engine/src/main/resources/org/terasology/engine/assets/blockSounds/default.blocksounds diff --git a/engine/src/main/resources/assets/blockSounds/none.blocksounds b/engine/src/main/resources/org/terasology/engine/assets/blockSounds/none.blocksounds similarity index 100% rename from engine/src/main/resources/assets/blockSounds/none.blocksounds rename to engine/src/main/resources/org/terasology/engine/assets/blockSounds/none.blocksounds diff --git a/engine/src/main/resources/assets/blocks/air.block b/engine/src/main/resources/org/terasology/engine/assets/blocks/air.block similarity index 100% rename from engine/src/main/resources/assets/blocks/air.block rename to engine/src/main/resources/org/terasology/engine/assets/blocks/air.block diff --git a/engine/src/main/resources/assets/blocks/unloaded.block b/engine/src/main/resources/org/terasology/engine/assets/blocks/unloaded.block similarity index 100% rename from engine/src/main/resources/assets/blocks/unloaded.block rename to engine/src/main/resources/org/terasology/engine/assets/blocks/unloaded.block diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Bold.fnt b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Bold.fnt similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Bold.fnt rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Bold.fnt diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Bold_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Bold_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Bold_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Bold_0.png diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular-Large.fnt b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Large.fnt similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular-Large.fnt rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Large.fnt diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular-Large_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Large_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular-Large_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Large_0.png diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular-Large_1.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Large_1.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular-Large_1.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Large_1.png diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular-Large_2.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Large_2.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular-Large_2.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Large_2.png diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular-Large_3.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Large_3.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular-Large_3.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Large_3.png diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular-Medium.fnt b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Medium.fnt similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular-Medium.fnt rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Medium.fnt diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular-Medium_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Medium_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular-Medium_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Medium_0.png diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular-Medium_1.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Medium_1.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular-Medium_1.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Medium_1.png diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular-Title.fnt b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Title.fnt similarity index 98% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular-Title.fnt rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Title.fnt index 0ab69c61e62..02b2c3af8ca 100644 --- a/engine/src/main/resources/assets/fonts/NotoSans-Regular-Title.fnt +++ b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Title.fnt @@ -1,2086 +1,2086 @@ -info face="Noto Sans" size=24 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=2,1 outline=0 -common lineHeight=24 base=19 scaleW=512 scaleH=512 pages=2 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4 -page id=0 file="NotoSans-Regular-Title_0.png" -page id=1 file="NotoSans-Regular-Title_1.png" -chars count=1624 -char id=32 x=487 y=70 width=3 height=1 xoffset=-1 yoffset=23 xadvance=6 page=1 chnl=15 -char id=33 x=362 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 -char id=34 x=133 y=505 width=6 height=5 xoffset=1 yoffset=4 xadvance=7 page=0 chnl=15 -char id=35 x=180 y=393 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=36 x=457 y=223 width=9 height=18 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=37 x=229 y=311 width=17 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 -char id=38 x=173 y=377 width=13 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=39 x=223 y=505 width=2 height=5 xoffset=1 yoffset=4 xadvance=4 page=0 chnl=15 -char id=40 x=448 y=184 width=5 height=19 xoffset=1 yoffset=4 xadvance=7 page=0 chnl=15 -char id=41 x=441 y=184 width=5 height=19 xoffset=1 yoffset=4 xadvance=7 page=0 chnl=15 -char id=42 x=12 y=505 width=8 height=6 xoffset=0 yoffset=4 xadvance=8 page=0 chnl=15 -char id=43 x=390 y=501 width=10 height=10 xoffset=1 yoffset=7 xadvance=12 page=0 chnl=15 -char id=44 x=414 y=501 width=2 height=5 xoffset=2 yoffset=17 xadvance=6 page=0 chnl=15 -char id=45 x=252 y=121 width=6 height=2 xoffset=0 yoffset=12 xadvance=7 page=1 chnl=15 -char id=46 x=325 y=117 width=2 height=2 xoffset=2 yoffset=17 xadvance=6 page=1 chnl=15 -char id=47 x=147 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 -char id=48 x=221 y=440 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=49 x=155 y=16 width=6 height=15 xoffset=2 yoffset=4 xadvance=12 page=1 chnl=15 -char id=50 x=245 y=439 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=51 x=257 y=439 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=52 x=269 y=439 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=53 x=281 y=439 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=54 x=293 y=438 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=55 x=305 y=438 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=56 x=317 y=438 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=57 x=329 y=438 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=58 x=241 y=97 width=2 height=11 xoffset=2 yoffset=8 xadvance=6 page=1 chnl=15 -char id=59 x=188 y=47 width=2 height=14 xoffset=2 yoffset=8 xadvance=6 page=1 chnl=15 -char id=60 x=349 y=73 width=10 height=11 xoffset=1 yoffset=6 xadvance=12 page=1 chnl=15 -char id=61 x=63 y=110 width=10 height=7 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=62 x=373 y=73 width=10 height=11 xoffset=1 yoffset=6 xadvance=12 page=1 chnl=15 -char id=63 x=341 y=437 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=64 x=393 y=44 width=19 height=19 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=65 x=150 y=393 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=66 x=143 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=67 x=120 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=68 x=376 y=388 width=12 height=15 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 -char id=69 x=156 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=70 x=353 y=437 width=10 height=15 xoffset=2 yoffset=4 xadvance=13 page=0 chnl=15 -char id=71 x=80 y=377 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=72 x=418 y=388 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=73 x=358 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 -char id=74 x=412 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=75 x=460 y=387 width=12 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=76 x=374 y=485 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 -char id=77 x=204 y=343 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=78 x=488 y=387 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=79 x=448 y=355 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=80 x=221 y=424 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=81 x=330 y=243 width=14 height=16 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=82 x=14 y=409 width=12 height=15 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 -char id=83 x=28 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=84 x=42 y=409 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=85 x=56 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=86 x=128 y=377 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=87 x=92 y=281 width=21 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 -char id=88 x=320 y=357 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=89 x=96 y=361 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=90 x=70 y=409 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=91 x=455 y=184 width=4 height=19 xoffset=1 yoffset=4 xadvance=6 page=0 chnl=15 -char id=92 x=235 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 -char id=93 x=467 y=184 width=4 height=19 xoffset=1 yoffset=4 xadvance=6 page=0 chnl=15 -char id=94 x=431 y=97 width=8 height=8 xoffset=0 yoffset=4 xadvance=8 page=1 chnl=15 -char id=95 x=94 y=122 width=12 height=2 xoffset=0 yoffset=21 xadvance=12 page=1 chnl=15 -char id=96 x=426 y=111 width=3 height=3 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 -char id=97 x=84 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=98 x=385 y=485 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=99 x=449 y=84 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=100 x=407 y=485 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=101 x=228 y=85 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=102 x=503 y=307 width=7 height=15 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15 -char id=103 x=440 y=484 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=104 x=462 y=484 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=105 x=398 y=16 width=2 height=15 xoffset=1 yoffset=4 xadvance=5 page=1 chnl=15 -char id=106 x=473 y=184 width=4 height=19 xoffset=-1 yoffset=4 xadvance=4 page=0 chnl=15 -char id=107 x=484 y=483 width=9 height=15 xoffset=1 yoffset=4 xadvance=10 page=0 chnl=15 -char id=108 x=394 y=16 width=2 height=15 xoffset=1 yoffset=4 xadvance=4 page=1 chnl=15 -char id=109 x=396 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 -char id=110 x=295 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=111 x=433 y=72 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=112 x=22 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=113 x=33 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=114 x=201 y=98 width=6 height=11 xoffset=1 yoffset=8 xadvance=7 page=1 chnl=15 -char id=115 x=471 y=84 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=116 x=272 y=16 width=5 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 -char id=117 x=372 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=118 x=487 y=58 width=13 height=11 xoffset=-1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=119 x=19 y=62 width=17 height=11 xoffset=-1 yoffset=8 xadvance=15 page=1 chnl=15 -char id=120 x=204 y=86 width=10 height=11 xoffset=0 yoffset=8 xadvance=10 page=1 chnl=15 -char id=121 x=485 y=435 width=10 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 -char id=122 x=445 y=72 width=10 height=11 xoffset=0 yoffset=8 xadvance=9 page=1 chnl=15 -char id=123 x=395 y=184 width=6 height=19 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15 -char id=124 x=75 y=46 width=2 height=20 xoffset=2 yoffset=4 xadvance=6 page=0 chnl=15 -char id=125 x=387 y=184 width=6 height=19 xoffset=1 yoffset=4 xadvance=7 page=0 chnl=15 -char id=126 x=321 y=108 width=10 height=4 xoffset=1 yoffset=10 xadvance=12 page=1 chnl=15 -char id=160 x=263 y=114 width=3 height=1 xoffset=-1 yoffset=23 xadvance=6 page=1 chnl=15 -char id=161 x=382 y=16 width=2 height=15 xoffset=2 yoffset=8 xadvance=6 page=1 chnl=15 -char id=162 x=99 y=168 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=163 x=481 y=419 width=11 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=164 x=409 y=97 width=10 height=8 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=165 x=378 y=404 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=166 x=71 y=46 width=2 height=20 xoffset=2 yoffset=4 xadvance=6 page=0 chnl=15 -char id=167 x=111 y=168 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=168 x=308 y=117 width=6 height=2 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 -char id=169 x=272 y=342 width=15 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=170 x=299 y=503 width=7 height=8 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15 -char id=171 x=330 y=502 width=9 height=9 xoffset=1 yoffset=9 xadvance=12 page=0 chnl=15 -char id=172 x=0 y=505 width=10 height=6 xoffset=1 yoffset=9 xadvance=12 page=0 chnl=15 -char id=173 x=300 y=117 width=6 height=2 xoffset=0 yoffset=12 xadvance=7 page=1 chnl=15 -char id=174 x=306 y=341 width=15 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=175 x=79 y=122 width=13 height=2 xoffset=-1 yoffset=1 xadvance=12 page=1 chnl=15 -char id=176 x=40 y=505 width=6 height=6 xoffset=1 yoffset=4 xadvance=8 page=0 chnl=15 -char id=177 x=414 y=47 width=10 height=13 xoffset=1 yoffset=6 xadvance=12 page=1 chnl=15 -char id=178 x=8 y=110 width=6 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=179 x=0 y=110 width=6 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=180 x=30 y=123 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=181 x=297 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=182 x=330 y=145 width=11 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=183 x=337 y=117 width=2 height=2 xoffset=2 yoffset=10 xadvance=7 page=1 chnl=15 -char id=184 x=448 y=105 width=5 height=4 xoffset=1 yoffset=19 xadvance=7 page=1 chnl=15 -char id=185 x=16 y=110 width=4 height=8 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 -char id=186 x=421 y=97 width=8 height=8 xoffset=0 yoffset=4 xadvance=8 page=1 chnl=15 -char id=187 x=319 y=502 width=9 height=9 xoffset=2 yoffset=9 xadvance=12 page=0 chnl=15 -char id=188 x=378 y=324 width=16 height=15 xoffset=2 yoffset=4 xadvance=18 page=0 chnl=15 -char id=189 x=270 y=326 width=16 height=15 xoffset=2 yoffset=4 xadvance=18 page=0 chnl=15 -char id=190 x=367 y=292 width=18 height=15 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 -char id=191 x=88 y=0 width=9 height=15 xoffset=2 yoffset=8 xadvance=13 page=1 chnl=15 -char id=192 x=0 y=108 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=193 x=15 y=108 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=194 x=30 y=108 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=195 x=45 y=108 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=196 x=75 y=227 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 -char id=197 x=75 y=108 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=198 x=488 y=259 width=21 height=15 xoffset=-1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=199 x=105 y=107 width=13 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=200 x=473 y=144 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 -char id=201 x=460 y=144 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 -char id=202 x=447 y=144 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 -char id=203 x=253 y=224 width=11 height=18 xoffset=2 yoffset=1 xadvance=14 page=0 chnl=15 -char id=204 x=500 y=184 width=3 height=19 xoffset=1 yoffset=0 xadvance=6 page=0 chnl=15 -char id=205 x=485 y=184 width=3 height=19 xoffset=2 yoffset=0 xadvance=6 page=0 chnl=15 -char id=206 x=139 y=187 width=8 height=19 xoffset=-1 yoffset=0 xadvance=6 page=0 chnl=15 -char id=207 x=468 y=223 width=6 height=18 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15 -char id=208 x=176 y=361 width=14 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=209 x=339 y=125 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=210 x=256 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=211 x=272 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=212 x=288 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=213 x=496 y=83 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=214 x=318 y=205 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 -char id=215 x=308 y=502 width=9 height=9 xoffset=1 yoffset=7 xadvance=12 page=0 chnl=15 -char id=216 x=93 y=246 width=14 height=17 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=217 x=353 y=124 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=218 x=367 y=124 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=219 x=381 y=124 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=220 x=120 y=227 width=12 height=18 xoffset=1 yoffset=1 xadvance=14 page=0 chnl=15 -char id=221 x=448 y=84 width=14 height=19 xoffset=0 yoffset=0 xadvance=14 page=0 chnl=15 -char id=222 x=26 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=223 x=39 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=13 page=0 chnl=15 -char id=224 x=60 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=225 x=72 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=226 x=84 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=227 x=96 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=228 x=500 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=229 x=196 y=244 width=10 height=17 xoffset=1 yoffset=2 xadvance=12 page=0 chnl=15 -char id=230 x=57 y=62 width=17 height=11 xoffset=1 yoffset=8 xadvance=19 page=1 chnl=15 -char id=231 x=77 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=232 x=120 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=233 x=132 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=234 x=144 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=235 x=488 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=236 x=507 y=275 width=3 height=15 xoffset=1 yoffset=4 xadvance=6 page=0 chnl=15 -char id=237 x=507 y=291 width=3 height=15 xoffset=2 yoffset=4 xadvance=6 page=0 chnl=15 -char id=238 x=432 y=0 width=8 height=15 xoffset=-1 yoffset=4 xadvance=6 page=1 chnl=15 -char id=239 x=172 y=47 width=6 height=14 xoffset=0 yoffset=5 xadvance=6 page=1 chnl=15 -char id=240 x=192 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=241 x=154 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=242 x=216 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=243 x=228 y=456 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=244 x=168 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=245 x=240 y=456 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=246 x=248 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=247 x=397 y=97 width=10 height=8 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=248 x=402 y=47 width=10 height=13 xoffset=1 yoffset=7 xadvance=12 page=1 chnl=15 -char id=249 x=132 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=250 x=99 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=251 x=55 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=252 x=44 y=47 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 -char id=253 x=219 y=166 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=254 x=183 y=166 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=255 x=291 y=224 width=10 height=18 xoffset=0 yoffset=5 xadvance=11 page=0 chnl=15 -char id=256 x=60 y=227 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 -char id=257 x=284 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=258 x=495 y=104 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=259 x=480 y=467 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=260 x=480 y=84 width=14 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=261 x=468 y=467 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=262 x=30 y=128 width=13 height=19 xoffset=1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=263 x=341 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=264 x=15 y=128 width=13 height=19 xoffset=1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=265 x=330 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=266 x=30 y=227 width=13 height=18 xoffset=1 yoffset=1 xadvance=15 page=0 chnl=15 -char id=267 x=77 y=47 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 -char id=268 x=180 y=106 width=13 height=19 xoffset=1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=269 x=319 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=270 x=437 y=124 width=12 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 -char id=271 x=112 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 -char id=272 x=112 y=361 width=14 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=273 x=442 y=420 width=11 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=274 x=227 y=225 width=11 height=18 xoffset=2 yoffset=1 xadvance=14 page=0 chnl=15 -char id=275 x=404 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=276 x=317 y=145 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 -char id=277 x=444 y=468 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=278 x=240 y=225 width=11 height=18 xoffset=2 yoffset=1 xadvance=14 page=0 chnl=15 -char id=279 x=440 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=280 x=382 y=144 width=11 height=19 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=281 x=360 y=469 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=282 x=0 y=168 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 -char id=283 x=324 y=470 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=284 x=240 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=285 x=473 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=286 x=400 y=84 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=287 x=440 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=288 x=286 y=205 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 -char id=289 x=446 y=223 width=9 height=18 xoffset=1 yoffset=5 xadvance=11 page=0 chnl=15 -char id=290 x=172 y=25 width=14 height=20 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=291 x=37 y=25 width=9 height=21 xoffset=1 yoffset=2 xadvance=12 page=0 chnl=15 -char id=292 x=451 y=124 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=293 x=451 y=164 width=9 height=19 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 -char id=294 x=458 y=371 width=13 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=295 x=96 y=473 width=10 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=296 x=304 y=185 width=7 height=19 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 -char id=297 x=503 y=371 width=7 height=15 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15 -char id=298 x=476 y=223 width=6 height=18 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15 -char id=299 x=148 y=47 width=6 height=14 xoffset=0 yoffset=5 xadvance=6 page=1 chnl=15 -char id=300 x=347 y=185 width=6 height=19 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 -char id=301 x=243 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 -char id=302 x=507 y=124 width=3 height=19 xoffset=1 yoffset=4 xadvance=6 page=0 chnl=15 -char id=303 x=490 y=184 width=3 height=19 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15 -char id=304 x=505 y=184 width=2 height=18 xoffset=2 yoffset=1 xadvance=6 page=0 chnl=15 -char id=305 x=249 y=97 width=2 height=11 xoffset=2 yoffset=8 xadvance=6 page=1 chnl=15 -char id=306 x=182 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 -char id=307 x=322 y=185 width=7 height=19 xoffset=1 yoffset=4 xadvance=9 page=0 chnl=15 -char id=308 x=421 y=144 width=11 height=19 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 -char id=309 x=169 y=186 width=8 height=19 xoffset=-2 yoffset=4 xadvance=4 page=0 chnl=15 -char id=310 x=276 y=24 width=12 height=20 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=311 x=498 y=22 width=9 height=20 xoffset=1 yoffset=4 xadvance=10 page=0 chnl=15 -char id=312 x=385 y=73 width=10 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 -char id=313 x=462 y=164 width=9 height=19 xoffset=2 yoffset=0 xadvance=12 page=0 chnl=15 -char id=314 x=495 y=184 width=3 height=19 xoffset=1 yoffset=0 xadvance=4 page=0 chnl=15 -char id=315 x=465 y=23 width=9 height=20 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 -char id=316 x=79 y=46 width=2 height=20 xoffset=1 yoffset=4 xadvance=4 page=0 chnl=15 -char id=317 x=286 y=0 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=1 chnl=15 -char id=318 x=279 y=16 width=5 height=15 xoffset=1 yoffset=4 xadvance=6 page=1 chnl=15 -char id=319 x=451 y=484 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 -char id=320 x=219 y=16 width=6 height=15 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 -char id=321 x=169 y=425 width=11 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=322 x=300 y=16 width=4 height=15 xoffset=0 yoffset=4 xadvance=4 page=1 chnl=15 -char id=323 x=493 y=124 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=324 x=429 y=484 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=325 x=262 y=24 width=12 height=20 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=326 x=108 y=264 width=9 height=16 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=327 x=0 y=148 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=328 x=396 y=485 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=329 x=91 y=425 width=11 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=330 x=252 y=407 width=12 height=15 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 -char id=331 x=341 y=486 width=9 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=332 x=446 y=204 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 -char id=333 x=368 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=334 x=176 y=86 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=335 x=144 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=336 x=112 y=86 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=337 x=132 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=338 x=42 y=297 width=19 height=15 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=339 x=438 y=500 width=18 height=11 xoffset=1 yoffset=8 xadvance=20 page=0 chnl=15 -char id=340 x=14 y=148 width=12 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 -char id=341 x=203 y=16 width=6 height=15 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 -char id=342 x=220 y=24 width=12 height=20 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 -char id=343 x=271 y=260 width=6 height=16 xoffset=1 yoffset=8 xadvance=7 page=0 chnl=15 -char id=344 x=28 y=148 width=12 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 -char id=345 x=502 y=0 width=8 height=15 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=346 x=42 y=148 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=347 x=297 y=487 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=348 x=56 y=148 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=349 x=286 y=487 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=350 x=465 y=124 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=351 x=275 y=487 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=352 x=70 y=148 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=353 x=220 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=354 x=84 y=148 width=12 height=19 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=355 x=355 y=185 width=6 height=19 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15 -char id=356 x=98 y=148 width=12 height=19 xoffset=0 yoffset=0 xadvance=12 page=0 chnl=15 -char id=357 x=38 y=16 width=7 height=15 xoffset=1 yoffset=4 xadvance=8 page=1 chnl=15 -char id=358 x=126 y=409 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=359 x=251 y=16 width=5 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 -char id=360 x=112 y=148 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=361 x=198 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=362 x=148 y=226 width=12 height=18 xoffset=1 yoffset=1 xadvance=14 page=0 chnl=15 -char id=363 x=55 y=47 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 -char id=364 x=126 y=147 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=365 x=187 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=366 x=140 y=146 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=367 x=208 y=244 width=9 height=17 xoffset=1 yoffset=2 xadvance=11 page=0 chnl=15 -char id=368 x=154 y=146 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=369 x=165 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=370 x=168 y=146 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=371 x=154 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=372 x=213 y=45 width=21 height=19 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15 -char id=373 x=96 y=313 width=17 height=15 xoffset=-1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=374 x=192 y=86 width=14 height=19 xoffset=0 yoffset=0 xadvance=14 page=0 chnl=15 -char id=375 x=279 y=165 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=376 x=270 y=205 width=14 height=18 xoffset=0 yoffset=1 xadvance=14 page=0 chnl=15 -char id=377 x=182 y=146 width=12 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=378 x=36 y=473 width=10 height=15 xoffset=0 yoffset=4 xadvance=9 page=0 chnl=15 -char id=379 x=134 y=227 width=12 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 -char id=380 x=272 y=32 width=10 height=14 xoffset=0 yoffset=5 xadvance=9 page=1 chnl=15 -char id=381 x=196 y=146 width=12 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=382 x=36 y=457 width=10 height=15 xoffset=0 yoffset=4 xadvance=9 page=0 chnl=15 -char id=383 x=286 y=16 width=5 height=15 xoffset=1 yoffset=4 xadvance=5 page=1 chnl=15 -char id=384 x=156 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=385 x=289 y=342 width=15 height=15 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 -char id=386 x=182 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=387 x=264 y=0 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=1 chnl=15 -char id=388 x=263 y=375 width=13 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=389 x=473 y=435 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=390 x=278 y=374 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=391 x=76 y=246 width=15 height=17 xoffset=1 yoffset=2 xadvance=15 page=0 chnl=15 -char id=392 x=311 y=47 width=12 height=13 xoffset=1 yoffset=6 xadvance=11 page=1 chnl=15 -char id=393 x=336 y=357 width=14 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=394 x=485 y=307 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=395 x=299 y=422 width=11 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=396 x=0 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=397 x=336 y=454 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=398 x=416 y=420 width=11 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=399 x=256 y=359 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=400 x=468 y=419 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 -char id=401 x=210 y=146 width=12 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=402 x=224 y=145 width=12 height=19 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=403 x=58 y=246 width=16 height=17 xoffset=1 yoffset=2 xadvance=16 page=0 chnl=15 -char id=404 x=255 y=105 width=13 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=405 x=172 y=312 width=17 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 -char id=406 x=386 y=16 width=2 height=15 xoffset=1 yoffset=4 xadvance=5 page=1 chnl=15 -char id=407 x=131 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 -char id=408 x=0 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=409 x=0 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=410 x=318 y=16 width=4 height=15 xoffset=0 yoffset=4 xadvance=5 page=1 chnl=15 -char id=411 x=52 y=441 width=11 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=412 x=144 y=329 width=16 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 -char id=413 x=419 y=64 width=15 height=19 xoffset=-1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=414 x=66 y=489 width=9 height=15 xoffset=2 yoffset=8 xadvance=12 page=0 chnl=15 -char id=415 x=352 y=357 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=416 x=162 y=329 width=16 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 -char id=417 x=74 y=74 width=12 height=11 xoffset=1 yoffset=8 xadvance=14 page=1 chnl=15 -char id=418 x=436 y=64 width=15 height=19 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 -char id=419 x=140 y=409 width=12 height=15 xoffset=1 yoffset=8 xadvance=14 page=0 chnl=15 -char id=420 x=153 y=345 width=15 height=15 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 -char id=421 x=22 y=188 width=9 height=19 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 -char id=422 x=90 y=108 width=13 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=423 x=154 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=424 x=361 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=425 x=48 y=457 width=10 height=15 xoffset=2 yoffset=4 xadvance=13 page=0 chnl=15 -char id=426 x=295 y=185 width=7 height=19 xoffset=1 yoffset=4 xadvance=8 page=0 chnl=15 -char id=427 x=427 y=184 width=5 height=19 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15 -char id=428 x=218 y=375 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=429 x=211 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 -char id=430 x=238 y=145 width=12 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=431 x=216 y=327 width=16 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 -char id=432 x=102 y=74 width=12 height=11 xoffset=1 yoffset=8 xadvance=14 page=1 chnl=15 -char id=433 x=464 y=355 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=434 x=168 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=435 x=450 y=323 width=16 height=15 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 -char id=436 x=351 y=64 width=15 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=437 x=247 y=423 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 -char id=438 x=493 y=82 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=439 x=498 y=43 width=12 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=440 x=45 y=128 width=12 height=19 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 -char id=441 x=110 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=442 x=121 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=443 x=300 y=454 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=444 x=468 y=451 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=445 x=105 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 -char id=446 x=418 y=484 width=9 height=15 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15 -char id=447 x=192 y=473 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=448 x=402 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=5 page=1 chnl=15 -char id=449 x=139 y=16 width=6 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 -char id=450 x=276 y=471 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=451 x=370 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 -char id=452 x=113 y=46 width=25 height=19 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=15 -char id=453 x=391 y=259 width=23 height=15 xoffset=2 yoffset=4 xadvance=26 page=0 chnl=15 -char id=454 x=46 y=281 width=21 height=15 xoffset=1 yoffset=4 xadvance=22 page=0 chnl=15 -char id=455 x=487 y=291 width=18 height=15 xoffset=2 yoffset=4 xadvance=22 page=0 chnl=15 -char id=456 x=469 y=64 width=14 height=19 xoffset=2 yoffset=4 xadvance=18 page=0 chnl=15 -char id=457 x=268 y=185 width=7 height=19 xoffset=1 yoffset=4 xadvance=9 page=0 chnl=15 -char id=458 x=366 y=260 width=23 height=15 xoffset=1 yoffset=4 xadvance=26 page=0 chnl=15 -char id=459 x=100 y=66 width=17 height=19 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 -char id=460 x=453 y=64 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=461 x=165 y=106 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=462 x=396 y=469 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=463 x=219 y=186 width=8 height=19 xoffset=-1 yoffset=0 xadvance=6 page=0 chnl=15 -char id=464 x=492 y=0 width=8 height=15 xoffset=-2 yoffset=4 xadvance=5 page=1 chnl=15 -char id=465 x=464 y=84 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=466 x=492 y=451 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=467 x=73 y=128 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=468 x=209 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=469 x=101 y=128 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=470 x=435 y=223 width=9 height=18 xoffset=1 yoffset=1 xadvance=11 page=0 chnl=15 -char id=471 x=409 y=124 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=472 x=33 y=188 width=9 height=19 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 -char id=473 x=115 y=127 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=474 x=11 y=188 width=9 height=19 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 -char id=475 x=129 y=126 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=476 x=484 y=164 width=9 height=19 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 -char id=477 x=132 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=478 x=240 y=105 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=479 x=399 y=223 width=10 height=18 xoffset=1 yoffset=1 xadvance=12 page=0 chnl=15 -char id=480 x=270 y=105 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=481 x=423 y=223 width=10 height=18 xoffset=1 yoffset=1 xadvance=12 page=0 chnl=15 -char id=482 x=28 y=208 width=21 height=18 xoffset=-1 yoffset=1 xadvance=21 page=0 chnl=15 -char id=483 x=430 y=16 width=17 height=14 xoffset=1 yoffset=5 xadvance=19 page=1 chnl=15 -char id=484 x=221 y=343 width=15 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=485 x=0 y=425 width=11 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=486 x=416 y=84 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=487 x=407 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=488 x=185 y=126 width=12 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 -char id=489 x=396 y=164 width=9 height=19 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15 -char id=490 x=336 y=84 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=491 x=432 y=452 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=492 x=437 y=0 width=14 height=22 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 -char id=493 x=327 y=224 width=10 height=18 xoffset=1 yoffset=5 xadvance=12 page=0 chnl=15 -char id=494 x=234 y=0 width=12 height=23 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=495 x=495 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=496 x=179 y=186 width=8 height=19 xoffset=-1 yoffset=4 xadvance=5 page=0 chnl=15 -char id=497 x=339 y=260 width=25 height=15 xoffset=2 yoffset=4 xadvance=28 page=0 chnl=15 -char id=498 x=416 y=259 width=23 height=15 xoffset=2 yoffset=4 xadvance=26 page=0 chnl=15 -char id=499 x=465 y=259 width=21 height=15 xoffset=1 yoffset=4 xadvance=22 page=0 chnl=15 -char id=500 x=224 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=501 x=374 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=502 x=337 y=276 width=20 height=15 xoffset=1 yoffset=4 xadvance=22 page=0 chnl=15 -char id=503 x=265 y=145 width=11 height=19 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 -char id=504 x=227 y=125 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=505 x=308 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=506 x=360 y=104 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=507 x=171 y=166 width=10 height=19 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15 -char id=508 x=236 y=45 width=21 height=19 xoffset=-1 yoffset=0 xadvance=21 page=0 chnl=15 -char id=509 x=39 y=313 width=17 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 -char id=510 x=76 y=25 width=14 height=20 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=511 x=48 y=264 width=10 height=16 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=512 x=420 y=104 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=513 x=408 y=452 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=514 x=450 y=104 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=515 x=396 y=453 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=516 x=304 y=145 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 -char id=517 x=456 y=468 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=518 x=291 y=145 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 -char id=519 x=432 y=468 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=520 x=379 y=184 width=6 height=19 xoffset=-1 yoffset=0 xadvance=6 page=0 chnl=15 -char id=521 x=187 y=16 width=6 height=15 xoffset=-1 yoffset=4 xadvance=6 page=1 chnl=15 -char id=522 x=331 y=185 width=6 height=19 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 -char id=523 x=179 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 -char id=524 x=80 y=88 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=525 x=264 y=471 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=526 x=96 y=87 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=527 x=204 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=528 x=143 y=126 width=12 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 -char id=529 x=29 y=16 width=7 height=15 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=530 x=171 y=126 width=12 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 -char id=531 x=171 y=16 width=6 height=15 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 -char id=532 x=199 y=126 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=533 x=121 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=534 x=213 y=125 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=535 x=352 y=485 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=536 x=234 y=24 width=12 height=20 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=537 x=119 y=264 width=9 height=16 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=538 x=248 y=24 width=12 height=20 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=539 x=64 y=46 width=5 height=20 xoffset=1 yoffset=4 xadvance=6 page=0 chnl=15 -char id=540 x=123 y=168 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=541 x=502 y=323 width=8 height=15 xoffset=0 yoffset=8 xadvance=9 page=0 chnl=15 -char id=542 x=241 y=125 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 -char id=543 x=88 y=188 width=9 height=19 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 -char id=544 x=343 y=145 width=11 height=19 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 -char id=545 x=390 y=104 width=13 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=546 x=338 y=421 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 -char id=547 x=108 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=548 x=169 y=244 width=12 height=17 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=549 x=390 y=47 width=10 height=13 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=550 x=492 y=204 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 -char id=551 x=428 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=552 x=278 y=145 width=11 height=19 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=553 x=276 y=455 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=554 x=304 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=555 x=339 y=224 width=10 height=18 xoffset=1 yoffset=1 xadvance=12 page=0 chnl=15 -char id=556 x=320 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=557 x=315 y=224 width=10 height=18 xoffset=1 yoffset=1 xadvance=12 page=0 chnl=15 -char id=558 x=302 y=205 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 -char id=559 x=416 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=560 x=384 y=84 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=561 x=279 y=224 width=10 height=18 xoffset=1 yoffset=1 xadvance=12 page=0 chnl=15 -char id=562 x=334 y=205 width=14 height=18 xoffset=0 yoffset=1 xadvance=14 page=0 chnl=15 -char id=563 x=411 y=223 width=10 height=18 xoffset=0 yoffset=5 xadvance=11 page=0 chnl=15 -char id=564 x=99 y=188 width=8 height=19 xoffset=-1 yoffset=4 xadvance=7 page=0 chnl=15 -char id=565 x=488 y=371 width=13 height=15 xoffset=1 yoffset=8 xadvance=14 page=0 chnl=15 -char id=566 x=422 y=0 width=8 height=15 xoffset=0 yoffset=4 xadvance=8 page=1 chnl=15 -char id=567 x=336 y=16 width=4 height=15 xoffset=0 yoffset=8 xadvance=5 page=1 chnl=15 -char id=568 x=327 y=292 width=18 height=15 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 -char id=569 x=307 y=293 width=18 height=15 xoffset=0 yoffset=8 xadvance=19 page=0 chnl=15 -char id=570 x=109 y=246 width=14 height=17 xoffset=0 yoffset=3 xadvance=14 page=0 chnl=15 -char id=571 x=125 y=246 width=13 height=17 xoffset=1 yoffset=3 xadvance=15 page=0 chnl=15 -char id=572 x=39 y=168 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=573 x=384 y=469 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=574 x=155 y=245 width=12 height=17 xoffset=0 yoffset=3 xadvance=13 page=0 chnl=15 -char id=575 x=132 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=576 x=288 y=455 width=10 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=577 x=351 y=421 width=11 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=578 x=115 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 -char id=579 x=182 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=580 x=293 y=374 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=581 x=238 y=343 width=15 height=15 xoffset=-1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=582 x=183 y=244 width=11 height=17 xoffset=2 yoffset=3 xadvance=14 page=0 chnl=15 -char id=583 x=51 y=168 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=584 x=413 y=436 width=10 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=585 x=403 y=184 width=6 height=19 xoffset=-2 yoffset=4 xadvance=5 page=0 chnl=15 -char id=586 x=402 y=64 width=15 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=587 x=196 y=409 width=12 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=588 x=255 y=343 width=15 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=589 x=165 y=98 width=7 height=11 xoffset=0 yoffset=8 xadvance=7 page=1 chnl=15 -char id=590 x=224 y=359 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=591 x=372 y=453 width=10 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 -char id=592 x=248 y=73 width=11 height=11 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 -char id=593 x=11 y=98 width=9 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=594 x=22 y=98 width=9 height=11 xoffset=2 yoffset=8 xadvance=12 page=1 chnl=15 -char id=595 x=11 y=489 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 -char id=596 x=33 y=98 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=597 x=474 y=46 width=9 height=12 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=598 x=434 y=144 width=11 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=599 x=210 y=408 width=12 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=600 x=397 y=73 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=601 x=409 y=73 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=602 x=201 y=61 width=15 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 -char id=603 x=155 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 -char id=604 x=145 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 -char id=605 x=60 y=74 width=12 height=11 xoffset=1 yoffset=8 xadvance=13 page=1 chnl=15 -char id=606 x=460 y=84 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=607 x=503 y=403 width=7 height=15 xoffset=-1 yoffset=8 xadvance=6 page=0 chnl=15 -char id=608 x=405 y=104 width=13 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=609 x=143 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=610 x=120 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=611 x=234 y=423 width=11 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 -char id=612 x=0 y=74 width=13 height=11 xoffset=0 yoffset=8 xadvance=13 page=1 chnl=15 -char id=613 x=264 y=487 width=9 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=614 x=253 y=487 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 -char id=615 x=44 y=188 width=9 height=19 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 -char id=616 x=330 y=16 width=4 height=15 xoffset=1 yoffset=4 xadvance=5 page=1 chnl=15 -char id=617 x=505 y=46 width=4 height=11 xoffset=1 yoffset=8 xadvance=5 page=1 chnl=15 -char id=618 x=209 y=98 width=6 height=11 xoffset=1 yoffset=8 xadvance=7 page=1 chnl=15 -char id=619 x=47 y=16 width=7 height=15 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=620 x=227 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 -char id=621 x=506 y=164 width=4 height=19 xoffset=1 yoffset=4 xadvance=5 page=0 chnl=15 -char id=622 x=351 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=623 x=149 y=62 width=16 height=11 xoffset=1 yoffset=8 xadvance=18 page=1 chnl=15 -char id=624 x=72 y=329 width=16 height=15 xoffset=1 yoffset=8 xadvance=18 page=0 chnl=15 -char id=625 x=36 y=329 width=16 height=15 xoffset=1 yoffset=8 xadvance=18 page=0 chnl=15 -char id=626 x=156 y=441 width=11 height=15 xoffset=0 yoffset=8 xadvance=12 page=0 chnl=15 -char id=627 x=273 y=423 width=11 height=15 xoffset=2 yoffset=8 xadvance=12 page=0 chnl=15 -char id=628 x=469 y=72 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=629 x=192 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=630 x=218 y=61 width=15 height=11 xoffset=1 yoffset=8 xadvance=17 page=1 chnl=15 -char id=631 x=380 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 -char id=632 x=231 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=633 x=225 y=97 width=6 height=11 xoffset=0 yoffset=8 xadvance=7 page=1 chnl=15 -char id=634 x=504 y=467 width=6 height=15 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15 -char id=635 x=0 y=16 width=8 height=15 xoffset=0 yoffset=8 xadvance=7 page=1 chnl=15 -char id=636 x=83 y=16 width=6 height=15 xoffset=1 yoffset=8 xadvance=7 page=1 chnl=15 -char id=637 x=91 y=16 width=6 height=15 xoffset=1 yoffset=8 xadvance=7 page=1 chnl=15 -char id=638 x=233 y=97 width=6 height=11 xoffset=1 yoffset=8 xadvance=7 page=1 chnl=15 -char id=639 x=115 y=16 width=6 height=15 xoffset=0 yoffset=8 xadvance=7 page=1 chnl=15 -char id=640 x=60 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=641 x=48 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=642 x=110 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=643 x=371 y=184 width=6 height=19 xoffset=-1 yoffset=4 xadvance=5 page=0 chnl=15 -char id=644 x=363 y=184 width=6 height=19 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15 -char id=645 x=123 y=16 width=6 height=15 xoffset=-1 yoffset=8 xadvance=5 page=1 chnl=15 -char id=646 x=209 y=186 width=8 height=19 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15 -char id=647 x=258 y=16 width=5 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 -char id=648 x=434 y=184 width=5 height=19 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15 -char id=649 x=222 y=73 width=11 height=11 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 -char id=650 x=493 y=70 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=651 x=328 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=652 x=209 y=73 width=11 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 -char id=653 x=167 y=62 width=15 height=11 xoffset=0 yoffset=8 xadvance=15 page=1 chnl=15 -char id=654 x=390 y=420 width=11 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=655 x=196 y=74 width=11 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 -char id=656 x=364 y=421 width=11 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=657 x=438 y=46 width=9 height=13 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=658 x=253 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=659 x=348 y=469 width=10 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=660 x=336 y=470 width=10 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=661 x=300 y=470 width=10 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=662 x=288 y=471 width=10 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=663 x=209 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=664 x=272 y=358 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=665 x=427 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=666 x=416 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=667 x=282 y=47 width=13 height=13 xoffset=1 yoffset=6 xadvance=12 page=1 chnl=15 -char id=668 x=405 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=669 x=159 y=186 width=8 height=19 xoffset=0 yoffset=4 xadvance=8 page=0 chnl=15 -char id=670 x=252 y=471 width=10 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 -char id=671 x=504 y=82 width=6 height=11 xoffset=1 yoffset=8 xadvance=8 page=1 chnl=15 -char id=672 x=423 y=124 width=12 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=673 x=180 y=473 width=10 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=674 x=156 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=675 x=467 y=291 width=18 height=15 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 -char id=676 x=81 y=67 width=17 height=19 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 -char id=677 x=0 y=246 width=19 height=17 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=678 x=165 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=679 x=159 y=166 width=10 height=19 xoffset=0 yoffset=4 xadvance=9 page=0 chnl=15 -char id=680 x=476 y=339 width=14 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=681 x=283 y=65 width=15 height=19 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 -char id=682 x=348 y=389 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=683 x=78 y=425 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 -char id=684 x=108 y=473 width=10 height=15 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15 -char id=685 x=231 y=488 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=686 x=60 y=393 width=13 height=15 xoffset=0 yoffset=8 xadvance=14 page=0 chnl=15 -char id=687 x=286 y=310 width=17 height=15 xoffset=0 yoffset=8 xadvance=14 page=0 chnl=15 -char id=688 x=330 y=97 width=6 height=10 xoffset=1 yoffset=4 xadvance=8 page=1 chnl=15 -char id=689 x=298 y=97 width=6 height=10 xoffset=1 yoffset=4 xadvance=8 page=1 chnl=15 -char id=690 x=469 y=46 width=3 height=13 xoffset=-1 yoffset=4 xadvance=3 page=1 chnl=15 -char id=691 x=257 y=108 width=4 height=7 xoffset=1 yoffset=7 xadvance=5 page=1 chnl=15 -char id=692 x=245 y=109 width=4 height=7 xoffset=0 yoffset=7 xadvance=5 page=1 chnl=15 -char id=693 x=354 y=97 width=6 height=10 xoffset=0 yoffset=7 xadvance=5 page=1 chnl=15 -char id=694 x=167 y=110 width=6 height=7 xoffset=1 yoffset=7 xadvance=8 page=1 chnl=15 -char id=695 x=75 y=110 width=10 height=7 xoffset=0 yoffset=7 xadvance=10 page=1 chnl=15 -char id=696 x=280 y=97 width=7 height=10 xoffset=0 yoffset=7 xadvance=7 page=1 chnl=15 -char id=697 x=219 y=505 width=2 height=5 xoffset=1 yoffset=4 xadvance=4 page=0 chnl=15 -char id=698 x=141 y=505 width=6 height=5 xoffset=1 yoffset=4 xadvance=7 page=0 chnl=15 -char id=699 x=227 y=505 width=2 height=5 xoffset=1 yoffset=4 xadvance=5 page=0 chnl=15 -char id=700 x=263 y=108 width=2 height=5 xoffset=1 yoffset=4 xadvance=5 page=1 chnl=15 -char id=701 x=348 y=502 width=2 height=5 xoffset=1 yoffset=4 xadvance=5 page=0 chnl=15 -char id=702 x=30 y=118 width=2 height=4 xoffset=3 yoffset=3 xadvance=7 page=1 chnl=15 -char id=703 x=26 y=118 width=2 height=4 xoffset=2 yoffset=3 xadvance=7 page=1 chnl=15 -char id=704 x=346 y=97 width=6 height=10 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=705 x=338 y=97 width=6 height=10 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 -char id=706 x=156 y=86 width=10 height=11 xoffset=1 yoffset=6 xadvance=12 page=1 chnl=15 -char id=707 x=144 y=86 width=10 height=11 xoffset=1 yoffset=6 xadvance=12 page=1 chnl=15 -char id=708 x=183 y=74 width=11 height=11 xoffset=0 yoffset=6 xadvance=12 page=1 chnl=15 -char id=709 x=170 y=74 width=11 height=11 xoffset=0 yoffset=6 xadvance=12 page=1 chnl=15 -char id=710 x=164 y=118 width=8 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=711 x=154 y=118 width=8 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=712 x=509 y=33 width=1 height=3 xoffset=3 yoffset=4 xadvance=7 page=0 chnl=15 -char id=713 x=268 y=120 width=6 height=2 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=714 x=486 y=110 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=715 x=481 y=110 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=716 x=509 y=37 width=1 height=3 xoffset=3 yoffset=20 xadvance=7 page=0 chnl=15 -char id=717 x=209 y=122 width=7 height=2 xoffset=0 yoffset=21 xadvance=7 page=1 chnl=15 -char id=718 x=476 y=110 width=3 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 -char id=719 x=471 y=110 width=3 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 -char id=720 x=505 y=70 width=3 height=11 xoffset=1 yoffset=8 xadvance=6 page=1 chnl=15 -char id=721 x=316 y=117 width=3 height=2 xoffset=1 yoffset=8 xadvance=6 page=1 chnl=15 -char id=722 x=22 y=118 width=2 height=4 xoffset=3 yoffset=14 xadvance=7 page=1 chnl=15 -char id=723 x=414 y=507 width=2 height=4 xoffset=2 yoffset=14 xadvance=7 page=0 chnl=15 -char id=724 x=456 y=110 width=3 height=3 xoffset=2 yoffset=14 xadvance=7 page=1 chnl=15 -char id=725 x=451 y=110 width=3 height=3 xoffset=2 yoffset=14 xadvance=7 page=1 chnl=15 -char id=726 x=446 y=110 width=3 height=3 xoffset=2 yoffset=14 xadvance=7 page=1 chnl=15 -char id=727 x=218 y=122 width=7 height=2 xoffset=0 yoffset=14 xadvance=7 page=1 chnl=15 -char id=728 x=355 y=113 width=6 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=729 x=341 y=117 width=2 height=2 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=730 x=201 y=505 width=5 height=5 xoffset=2 yoffset=4 xadvance=7 page=0 chnl=15 -char id=731 x=485 y=105 width=3 height=4 xoffset=1 yoffset=19 xadvance=7 page=1 chnl=15 -char id=732 x=261 y=116 width=7 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=733 x=331 y=113 width=6 height=3 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 -char id=734 x=401 y=106 width=6 height=4 xoffset=-1 yoffset=11 xadvance=7 page=1 chnl=15 -char id=735 x=87 y=110 width=7 height=7 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=736 x=289 y=97 width=7 height=10 xoffset=0 yoffset=7 xadvance=7 page=1 chnl=15 -char id=737 x=509 y=22 width=1 height=10 xoffset=1 yoffset=4 xadvance=3 page=0 chnl=15 -char id=738 x=238 y=109 width=5 height=7 xoffset=1 yoffset=7 xadvance=7 page=1 chnl=15 -char id=739 x=96 y=110 width=7 height=7 xoffset=0 yoffset=7 xadvance=7 page=1 chnl=15 -char id=740 x=306 y=97 width=6 height=10 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 -char id=741 x=324 y=16 width=4 height=15 xoffset=2 yoffset=4 xadvance=8 page=1 chnl=15 -char id=742 x=306 y=16 width=4 height=15 xoffset=2 yoffset=4 xadvance=8 page=1 chnl=15 -char id=743 x=342 y=16 width=4 height=15 xoffset=2 yoffset=4 xadvance=8 page=1 chnl=15 -char id=744 x=312 y=16 width=4 height=15 xoffset=2 yoffset=4 xadvance=8 page=1 chnl=15 -char id=745 x=506 y=483 width=4 height=15 xoffset=2 yoffset=4 xadvance=8 page=0 chnl=15 -char id=746 x=341 y=502 width=5 height=9 xoffset=1 yoffset=10 xadvance=7 page=0 chnl=15 -char id=747 x=367 y=97 width=5 height=9 xoffset=1 yoffset=10 xadvance=7 page=1 chnl=15 -char id=748 x=204 y=118 width=8 height=3 xoffset=0 yoffset=20 xadvance=7 page=1 chnl=15 -char id=749 x=115 y=505 width=7 height=5 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15 -char id=750 x=187 y=505 width=5 height=5 xoffset=1 yoffset=4 xadvance=7 page=0 chnl=15 -char id=751 x=403 y=111 width=4 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 -char id=752 x=409 y=111 width=4 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 -char id=753 x=495 y=103 width=3 height=4 xoffset=2 yoffset=19 xadvance=7 page=1 chnl=15 -char id=754 x=0 y=119 width=3 height=4 xoffset=2 yoffset=19 xadvance=7 page=1 chnl=15 -char id=755 x=462 y=105 width=4 height=4 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 -char id=756 x=65 y=122 width=3 height=3 xoffset=2 yoffset=14 xadvance=7 page=1 chnl=15 -char id=757 x=363 y=113 width=6 height=3 xoffset=0 yoffset=14 xadvance=7 page=1 chnl=15 -char id=758 x=379 y=112 width=6 height=3 xoffset=1 yoffset=14 xadvance=7 page=1 chnl=15 -char id=759 x=279 y=113 width=7 height=3 xoffset=0 yoffset=20 xadvance=7 page=1 chnl=15 -char id=760 x=245 y=97 width=2 height=11 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 -char id=761 x=60 y=122 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=762 x=55 y=122 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=763 x=50 y=122 width=3 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 -char id=764 x=45 y=122 width=3 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 -char id=765 x=373 y=107 width=8 height=4 xoffset=0 yoffset=19 xadvance=8 page=1 chnl=15 -char id=766 x=363 y=108 width=8 height=4 xoffset=0 yoffset=19 xadvance=8 page=1 chnl=15 -char id=767 x=165 y=505 width=6 height=5 xoffset=1 yoffset=18 xadvance=7 page=0 chnl=15 -char id=768 x=40 y=122 width=3 height=3 xoffset=-5 yoffset=0 xadvance=0 page=1 chnl=15 -char id=769 x=35 y=122 width=3 height=3 xoffset=-3 yoffset=0 xadvance=0 page=1 chnl=15 -char id=770 x=144 y=118 width=8 height=3 xoffset=-4 yoffset=4 xadvance=0 page=1 chnl=15 -char id=771 x=190 y=122 width=8 height=2 xoffset=-10 yoffset=1 xadvance=0 page=1 chnl=15 -char id=772 x=276 y=117 width=6 height=2 xoffset=-3 yoffset=5 xadvance=0 page=1 chnl=15 -char id=773 x=150 y=122 width=12 height=2 xoffset=-6 yoffset=1 xadvance=0 page=1 chnl=15 -char id=774 x=371 y=113 width=6 height=3 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 -char id=775 x=509 y=184 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=776 x=260 y=121 width=6 height=2 xoffset=-3 yoffset=5 xadvance=0 page=1 chnl=15 -char id=777 x=415 y=111 width=4 height=3 xoffset=-4 yoffset=0 xadvance=0 page=1 chnl=15 -char id=778 x=180 y=505 width=5 height=5 xoffset=-2 yoffset=2 xadvance=0 page=0 chnl=15 -char id=779 x=395 y=111 width=6 height=3 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 -char id=780 x=184 y=118 width=8 height=3 xoffset=-4 yoffset=4 xadvance=0 page=1 chnl=15 -char id=781 x=509 y=445 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=782 x=25 y=123 width=3 height=3 xoffset=-1 yoffset=4 xadvance=0 page=1 chnl=15 -char id=783 x=315 y=113 width=6 height=3 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 -char id=784 x=149 y=505 width=6 height=5 xoffset=-3 yoffset=2 xadvance=0 page=0 chnl=15 -char id=785 x=347 y=113 width=6 height=3 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 -char id=786 x=348 y=117 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=1 chnl=15 -char id=787 x=509 y=449 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=788 x=345 y=117 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=1 chnl=15 -char id=789 x=249 y=504 width=2 height=5 xoffset=0 yoffset=4 xadvance=0 page=0 chnl=15 -char id=790 x=20 y=124 width=3 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 -char id=791 x=15 y=124 width=3 height=3 xoffset=-1 yoffset=20 xadvance=0 page=1 chnl=15 -char id=792 x=10 y=124 width=3 height=3 xoffset=-1 yoffset=20 xadvance=0 page=1 chnl=15 -char id=793 x=5 y=124 width=3 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 -char id=794 x=105 y=505 width=8 height=5 xoffset=-4 yoffset=2 xadvance=0 page=0 chnl=15 -char id=795 x=214 y=505 width=3 height=5 xoffset=0 yoffset=4 xadvance=0 page=0 chnl=15 -char id=796 x=249 y=510 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=797 x=496 y=108 width=3 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 -char id=798 x=0 y=124 width=3 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 -char id=799 x=506 y=108 width=3 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 -char id=800 x=284 y=117 width=6 height=2 xoffset=-3 yoffset=21 xadvance=0 page=1 chnl=15 -char id=801 x=70 y=505 width=4 height=6 xoffset=-2 yoffset=17 xadvance=0 page=0 chnl=15 -char id=802 x=76 y=505 width=4 height=6 xoffset=0 yoffset=17 xadvance=0 page=0 chnl=15 -char id=803 x=321 y=117 width=2 height=2 xoffset=-8 yoffset=20 xadvance=0 page=1 chnl=15 -char id=804 x=244 y=121 width=6 height=2 xoffset=-3 yoffset=21 xadvance=0 page=1 chnl=15 -char id=805 x=474 y=105 width=4 height=4 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 -char id=806 x=354 y=117 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=1 chnl=15 -char id=807 x=441 y=105 width=5 height=4 xoffset=-3 yoffset=19 xadvance=0 page=1 chnl=15 -char id=808 x=5 y=119 width=3 height=4 xoffset=-1 yoffset=19 xadvance=0 page=1 chnl=15 -char id=809 x=509 y=437 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=810 x=353 y=108 width=8 height=4 xoffset=-4 yoffset=20 xadvance=0 page=1 chnl=15 -char id=811 x=200 y=122 width=7 height=2 xoffset=-3 yoffset=20 xadvance=0 page=1 chnl=15 -char id=812 x=224 y=117 width=8 height=3 xoffset=-4 yoffset=20 xadvance=0 page=1 chnl=15 -char id=813 x=194 y=118 width=8 height=3 xoffset=-4 yoffset=20 xadvance=0 page=1 chnl=15 -char id=814 x=387 y=111 width=6 height=3 xoffset=-3 yoffset=20 xadvance=0 page=1 chnl=15 -char id=815 x=339 y=113 width=6 height=3 xoffset=-3 yoffset=20 xadvance=0 page=1 chnl=15 -char id=816 x=306 y=113 width=7 height=3 xoffset=-4 yoffset=20 xadvance=0 page=1 chnl=15 -char id=817 x=292 y=117 width=6 height=2 xoffset=-3 yoffset=21 xadvance=0 page=1 chnl=15 -char id=818 x=136 y=122 width=12 height=2 xoffset=-6 yoffset=21 xadvance=0 page=1 chnl=15 -char id=819 x=323 y=113 width=6 height=3 xoffset=-3 yoffset=21 xadvance=0 page=1 chnl=15 -char id=820 x=252 y=117 width=7 height=3 xoffset=-4 yoffset=14 xadvance=0 page=1 chnl=15 -char id=821 x=236 y=121 width=6 height=2 xoffset=-3 yoffset=14 xadvance=0 page=1 chnl=15 -char id=822 x=108 y=122 width=12 height=2 xoffset=-6 yoffset=14 xadvance=0 page=1 chnl=15 -char id=823 x=361 y=73 width=10 height=11 xoffset=-5 yoffset=8 xadvance=0 page=1 chnl=15 -char id=824 x=504 y=451 width=6 height=15 xoffset=-3 yoffset=4 xadvance=0 page=0 chnl=15 -char id=825 x=351 y=117 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=1 chnl=15 -char id=826 x=343 y=108 width=8 height=4 xoffset=-4 yoffset=19 xadvance=0 page=1 chnl=15 -char id=827 x=468 y=105 width=4 height=4 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 -char id=828 x=227 y=121 width=7 height=2 xoffset=-3 yoffset=20 xadvance=0 page=1 chnl=15 -char id=829 x=173 y=505 width=5 height=5 xoffset=-2 yoffset=2 xadvance=0 page=0 chnl=15 -char id=830 x=508 y=237 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=831 x=85 y=118 width=12 height=3 xoffset=-6 yoffset=0 xadvance=0 page=1 chnl=15 -char id=832 x=466 y=110 width=3 height=3 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 -char id=833 x=461 y=110 width=3 height=3 xoffset=0 yoffset=4 xadvance=0 page=1 chnl=15 -char id=834 x=270 y=113 width=7 height=3 xoffset=-4 yoffset=4 xadvance=0 page=1 chnl=15 -char id=835 x=508 y=239 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=836 x=214 y=118 width=8 height=3 xoffset=-4 yoffset=4 xadvance=0 page=1 chnl=15 -char id=837 x=509 y=435 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=838 x=333 y=108 width=8 height=4 xoffset=-4 yoffset=3 xadvance=0 page=1 chnl=15 -char id=839 x=112 y=118 width=10 height=3 xoffset=-5 yoffset=21 xadvance=0 page=1 chnl=15 -char id=840 x=436 y=111 width=3 height=3 xoffset=-1 yoffset=20 xadvance=0 page=1 chnl=15 -char id=841 x=431 y=111 width=3 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 -char id=842 x=124 y=505 width=7 height=5 xoffset=-3 yoffset=3 xadvance=0 page=0 chnl=15 -char id=843 x=114 y=110 width=7 height=7 xoffset=-3 yoffset=0 xadvance=0 page=1 chnl=15 -char id=844 x=31 y=505 width=7 height=6 xoffset=-3 yoffset=1 xadvance=0 page=0 chnl=15 -char id=845 x=243 y=117 width=7 height=3 xoffset=-3 yoffset=20 xadvance=0 page=1 chnl=15 -char id=846 x=490 y=105 width=3 height=4 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 -char id=847 x=64 y=32 width=14 height=14 xoffset=-7 yoffset=5 xadvance=0 page=1 chnl=15 -char id=848 x=480 y=105 width=3 height=4 xoffset=-1 yoffset=3 xadvance=0 page=1 chnl=15 -char id=849 x=357 y=117 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=1 chnl=15 -char id=850 x=157 y=505 width=6 height=5 xoffset=-3 yoffset=2 xadvance=0 page=0 chnl=15 -char id=851 x=194 y=505 width=5 height=5 xoffset=-2 yoffset=19 xadvance=0 page=0 chnl=15 -char id=852 x=505 y=103 width=3 height=4 xoffset=-1 yoffset=19 xadvance=0 page=1 chnl=15 -char id=853 x=500 y=103 width=3 height=4 xoffset=-1 yoffset=19 xadvance=0 page=1 chnl=15 -char id=854 x=392 y=106 width=7 height=4 xoffset=-3 yoffset=19 xadvance=0 page=1 chnl=15 -char id=855 x=509 y=439 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=856 x=509 y=447 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=857 x=455 y=105 width=5 height=4 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 -char id=858 x=383 y=106 width=7 height=4 xoffset=-3 yoffset=20 xadvance=0 page=1 chnl=15 -char id=859 x=208 y=505 width=4 height=5 xoffset=-2 yoffset=2 xadvance=0 page=0 chnl=15 -char id=860 x=303 y=108 width=16 height=4 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 -char id=861 x=285 y=108 width=16 height=4 xoffset=-2 yoffset=3 xadvance=0 page=1 chnl=15 -char id=862 x=122 y=122 width=12 height=2 xoffset=-2 yoffset=4 xadvance=0 page=1 chnl=15 -char id=863 x=164 y=122 width=12 height=2 xoffset=-2 yoffset=21 xadvance=0 page=1 chnl=15 -char id=864 x=34 y=118 width=16 height=3 xoffset=-1 yoffset=4 xadvance=0 page=1 chnl=15 -char id=865 x=267 y=108 width=16 height=4 xoffset=-2 yoffset=3 xadvance=0 page=1 chnl=15 -char id=866 x=70 y=118 width=13 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 -char id=867 x=159 y=110 width=6 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 -char id=868 x=223 y=109 width=6 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 -char id=869 x=509 y=41 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=870 x=183 y=110 width=6 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 -char id=871 x=175 y=110 width=6 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 -char id=872 x=231 y=109 width=5 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 -char id=873 x=322 y=97 width=6 height=10 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 -char id=874 x=314 y=97 width=6 height=10 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 -char id=875 x=50 y=110 width=11 height=7 xoffset=-6 yoffset=7 xadvance=0 page=1 chnl=15 -char id=876 x=251 y=109 width=4 height=7 xoffset=-2 yoffset=7 xadvance=0 page=1 chnl=15 -char id=877 x=362 y=97 width=3 height=10 xoffset=-2 yoffset=4 xadvance=0 page=1 chnl=15 -char id=878 x=105 y=110 width=7 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 -char id=879 x=123 y=110 width=7 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 -char id=880 x=473 y=483 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 -char id=881 x=394 y=85 width=9 height=11 xoffset=0 yoffset=8 xadvance=10 page=1 chnl=15 -char id=882 x=266 y=407 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=883 x=240 y=472 width=10 height=15 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15 -char id=884 x=441 y=110 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=885 x=70 y=122 width=3 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 -char id=886 x=429 y=420 width=11 height=15 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 -char id=887 x=287 y=73 width=11 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=890 x=75 y=122 width=2 height=3 xoffset=3 yoffset=20 xadvance=7 page=1 chnl=15 -char id=891 x=44 y=98 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=892 x=317 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=893 x=482 y=84 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=894 x=192 y=47 width=2 height=14 xoffset=2 yoffset=8 xadvance=6 page=1 chnl=15 -char id=895 x=402 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=900 x=501 y=108 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=901 x=174 y=118 width=8 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=902 x=143 y=377 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=903 x=329 y=117 width=2 height=2 xoffset=2 yoffset=8 xadvance=6 page=1 chnl=15 -char id=904 x=306 y=325 width=16 height=15 xoffset=-1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=905 x=248 y=311 width=17 height=15 xoffset=-1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=906 x=65 y=16 width=7 height=15 xoffset=-1 yoffset=4 xadvance=8 page=1 chnl=15 -char id=908 x=432 y=323 width=16 height=15 xoffset=-1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=910 x=381 y=276 width=19 height=15 xoffset=-2 yoffset=4 xadvance=17 page=0 chnl=15 -char id=911 x=58 y=313 width=17 height=15 xoffset=-2 yoffset=4 xadvance=16 page=0 chnl=15 -char id=912 x=231 y=261 width=8 height=16 xoffset=-2 yoffset=3 xadvance=4 page=0 chnl=15 -char id=913 x=203 y=376 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=914 x=286 y=422 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=915 x=444 y=452 width=10 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 -char id=916 x=391 y=340 width=15 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=917 x=104 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=918 x=280 y=406 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=919 x=294 y=406 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=920 x=80 y=361 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=921 x=366 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 -char id=922 x=308 y=406 width=12 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=923 x=374 y=340 width=15 height=15 xoffset=-1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=924 x=357 y=340 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=925 x=322 y=406 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=926 x=336 y=405 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=927 x=128 y=361 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=928 x=350 y=405 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=929 x=208 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=931 x=324 y=454 width=10 height=15 xoffset=2 yoffset=4 xadvance=13 page=0 chnl=15 -char id=932 x=364 y=405 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=933 x=304 y=358 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=934 x=400 y=356 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=935 x=0 y=377 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=936 x=108 y=329 width=16 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 -char id=937 x=192 y=360 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=938 x=500 y=223 width=6 height=18 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15 -char id=939 x=350 y=205 width=14 height=18 xoffset=0 yoffset=1 xadvance=14 page=0 chnl=15 -char id=940 x=384 y=453 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=941 x=10 y=16 width=8 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 -char id=942 x=429 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=943 x=507 y=419 width=3 height=15 xoffset=1 yoffset=4 xadvance=4 page=0 chnl=15 -char id=944 x=33 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=10 page=0 chnl=15 -char id=945 x=325 y=73 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=946 x=243 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=947 x=84 y=473 width=10 height=15 xoffset=0 yoffset=8 xadvance=10 page=0 chnl=15 -char id=948 x=120 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=949 x=502 y=58 width=8 height=11 xoffset=1 yoffset=8 xadvance=9 page=1 chnl=15 -char id=950 x=109 y=188 width=8 height=19 xoffset=1 yoffset=4 xadvance=9 page=0 chnl=15 -char id=951 x=55 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=952 x=420 y=452 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=953 x=253 y=97 width=2 height=11 xoffset=1 yoffset=8 xadvance=4 page=1 chnl=15 -char id=954 x=0 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 -char id=955 x=490 y=403 width=11 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=956 x=77 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=957 x=472 y=60 width=13 height=11 xoffset=-1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=958 x=119 y=188 width=8 height=19 xoffset=1 yoffset=4 xadvance=9 page=0 chnl=15 -char id=959 x=216 y=85 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=960 x=284 y=61 width=14 height=11 xoffset=0 yoffset=8 xadvance=14 page=1 chnl=15 -char id=961 x=449 y=436 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=962 x=372 y=0 width=8 height=15 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 -char id=963 x=116 y=74 width=12 height=11 xoffset=1 yoffset=8 xadvance=13 page=1 chnl=15 -char id=964 x=217 y=97 width=6 height=11 xoffset=1 yoffset=8 xadvance=8 page=1 chnl=15 -char id=965 x=85 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 -char id=966 x=392 y=404 width=12 height=15 xoffset=1 yoffset=8 xadvance=14 page=0 chnl=15 -char id=967 x=117 y=441 width=11 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 -char id=968 x=406 y=404 width=12 height=15 xoffset=1 yoffset=8 xadvance=14 page=0 chnl=15 -char id=969 x=252 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 -char id=970 x=156 y=47 width=6 height=14 xoffset=-1 yoffset=5 xadvance=4 page=1 chnl=15 -char id=971 x=129 y=47 width=8 height=14 xoffset=1 yoffset=5 xadvance=10 page=1 chnl=15 -char id=972 x=264 y=455 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=973 x=502 y=387 width=8 height=15 xoffset=1 yoffset=4 xadvance=10 page=0 chnl=15 -char id=974 x=492 y=339 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=975 x=499 y=144 width=11 height=19 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=976 x=312 y=454 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=977 x=325 y=422 width=11 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=978 x=359 y=308 width=16 height=15 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 -char id=979 x=161 y=280 width=20 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 -char id=980 x=217 y=206 width=16 height=18 xoffset=0 yoffset=1 xadvance=16 page=0 chnl=15 -char id=981 x=267 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=982 x=268 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 -char id=983 x=420 y=404 width=12 height=15 xoffset=0 yoffset=8 xadvance=13 page=0 chnl=15 -char id=984 x=48 y=88 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=985 x=252 y=455 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=986 x=338 y=373 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=987 x=348 y=453 width=10 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=988 x=494 y=419 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 -char id=989 x=195 y=16 width=6 height=15 xoffset=1 yoffset=8 xadvance=8 page=1 chnl=15 -char id=990 x=368 y=372 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=991 x=242 y=488 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=992 x=317 y=65 width=15 height=19 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 -char id=993 x=291 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=994 x=229 y=65 width=16 height=19 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 -char id=995 x=252 y=327 width=16 height=15 xoffset=1 yoffset=8 xadvance=18 page=0 chnl=15 -char id=996 x=434 y=404 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=997 x=461 y=435 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=998 x=325 y=125 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=999 x=500 y=499 width=10 height=12 xoffset=0 yoffset=7 xadvance=11 page=0 chnl=15 -char id=1000 x=448 y=403 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1001 x=208 y=441 width=11 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1002 x=158 y=377 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=1003 x=457 y=60 width=13 height=11 xoffset=0 yoffset=8 xadvance=13 page=1 chnl=15 -char id=1004 x=188 y=377 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1005 x=168 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1006 x=365 y=437 width=10 height=15 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15 -char id=1007 x=363 y=485 width=9 height=15 xoffset=0 yoffset=4 xadvance=9 page=0 chnl=15 -char id=1008 x=88 y=74 width=12 height=11 xoffset=0 yoffset=8 xadvance=13 page=1 chnl=15 -char id=1009 x=233 y=440 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=1010 x=438 y=84 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1011 x=479 y=184 width=4 height=19 xoffset=-1 yoffset=4 xadvance=4 page=0 chnl=15 -char id=1012 x=432 y=355 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1013 x=192 y=98 width=7 height=11 xoffset=1 yoffset=8 xadvance=9 page=1 chnl=15 -char id=1014 x=183 y=98 width=7 height=11 xoffset=1 yoffset=8 xadvance=9 page=1 chnl=15 -char id=1015 x=65 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1016 x=315 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1017 x=323 y=373 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1018 x=496 y=355 width=14 height=15 xoffset=2 yoffset=4 xadvance=18 page=0 chnl=15 -char id=1019 x=476 y=403 width=12 height=15 xoffset=1 yoffset=8 xadvance=14 page=0 chnl=15 -char id=1020 x=455 y=419 width=11 height=15 xoffset=0 yoffset=8 xadvance=12 page=0 chnl=15 -char id=1021 x=30 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1022 x=443 y=371 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1023 x=473 y=371 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1024 x=13 y=168 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 -char id=1025 x=162 y=225 width=11 height=18 xoffset=2 yoffset=1 xadvance=14 page=0 chnl=15 -char id=1026 x=54 y=329 width=16 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 -char id=1027 x=77 y=188 width=9 height=19 xoffset=2 yoffset=0 xadvance=11 page=0 chnl=15 -char id=1028 x=45 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1029 x=208 y=392 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1030 x=374 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 -char id=1031 x=484 y=223 width=6 height=18 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15 -char id=1032 x=362 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=1033 x=0 y=281 width=21 height=15 xoffset=0 yoffset=4 xadvance=22 page=0 chnl=15 -char id=1034 x=267 y=294 width=18 height=15 xoffset=2 yoffset=4 xadvance=21 page=0 chnl=15 -char id=1035 x=90 y=329 width=16 height=15 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 -char id=1036 x=87 y=168 width=10 height=19 xoffset=2 yoffset=0 xadvance=12 page=0 chnl=15 -char id=1037 x=369 y=144 width=11 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 -char id=1038 x=465 y=104 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=1039 x=486 y=144 width=11 height=19 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1040 x=105 y=393 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=1041 x=169 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1042 x=195 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1043 x=22 y=489 width=9 height=15 xoffset=2 yoffset=4 xadvance=11 page=0 chnl=15 -char id=1044 x=60 y=108 width=13 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1045 x=13 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1046 x=271 y=277 width=20 height=15 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 -char id=1047 x=26 y=425 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 -char id=1048 x=39 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1049 x=26 y=168 width=11 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 -char id=1050 x=24 y=473 width=10 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1051 x=222 y=391 width=12 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1052 x=442 y=339 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=1053 x=236 y=391 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1054 x=112 y=377 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1055 x=250 y=391 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1056 x=143 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1057 x=90 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1058 x=264 y=391 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1059 x=75 y=393 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=1060 x=64 y=377 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1061 x=48 y=377 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1062 x=120 y=106 width=13 height=19 xoffset=2 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1063 x=104 y=441 width=11 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1064 x=360 y=324 width=16 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 -char id=1065 x=42 y=68 width=18 height=19 xoffset=2 yoffset=4 xadvance=20 page=0 chnl=15 -char id=1066 x=342 y=324 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=1067 x=323 y=341 width=15 height=15 xoffset=2 yoffset=4 xadvance=19 page=0 chnl=15 -char id=1068 x=78 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1069 x=428 y=372 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1070 x=167 y=296 width=18 height=15 xoffset=2 yoffset=4 xadvance=21 page=0 chnl=15 -char id=1071 x=292 y=390 width=12 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1072 x=180 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1073 x=456 y=452 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1074 x=0 y=98 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1075 x=174 y=98 width=7 height=11 xoffset=1 yoffset=8 xadvance=8 page=1 chnl=15 -char id=1076 x=222 y=32 width=11 height=14 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1077 x=457 y=72 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1078 x=348 y=61 width=14 height=11 xoffset=0 yoffset=8 xadvance=14 page=1 chnl=15 -char id=1079 x=135 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 -char id=1080 x=350 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1081 x=308 y=486 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=1082 x=65 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=9 page=1 chnl=15 -char id=1083 x=12 y=86 width=10 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1084 x=144 y=74 width=11 height=11 xoffset=1 yoffset=8 xadvance=13 page=1 chnl=15 -char id=1085 x=339 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1086 x=337 y=73 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1087 x=75 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 -char id=1088 x=143 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=1089 x=251 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1090 x=421 y=73 width=10 height=11 xoffset=0 yoffset=8 xadvance=10 page=1 chnl=15 -char id=1091 x=180 y=457 width=10 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 -char id=1092 x=334 y=64 width=15 height=19 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=1093 x=313 y=73 width=10 height=11 xoffset=0 yoffset=8 xadvance=10 page=1 chnl=15 -char id=1094 x=497 y=435 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=1095 x=273 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1096 x=316 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 -char id=1097 x=102 y=345 width=15 height=15 xoffset=1 yoffset=8 xadvance=16 page=0 chnl=15 -char id=1098 x=300 y=73 width=11 height=11 xoffset=1 yoffset=8 xadvance=13 page=1 chnl=15 -char id=1099 x=442 y=60 width=13 height=11 xoffset=1 yoffset=8 xadvance=15 page=1 chnl=15 -char id=1100 x=284 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1101 x=240 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1102 x=364 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 -char id=1103 x=481 y=72 width=10 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1104 x=228 y=472 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1105 x=392 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=1106 x=195 y=166 width=10 height=19 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1107 x=74 y=16 width=7 height=15 xoffset=1 yoffset=4 xadvance=8 page=1 chnl=15 -char id=1108 x=306 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1109 x=262 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1110 x=508 y=339 width=2 height=15 xoffset=1 yoffset=4 xadvance=5 page=0 chnl=15 -char id=1111 x=180 y=47 width=6 height=14 xoffset=0 yoffset=5 xadvance=6 page=1 chnl=15 -char id=1112 x=461 y=184 width=4 height=19 xoffset=-1 yoffset=4 xadvance=4 page=0 chnl=15 -char id=1113 x=418 y=500 width=18 height=11 xoffset=0 yoffset=8 xadvance=19 page=0 chnl=15 -char id=1114 x=235 y=61 width=15 height=11 xoffset=1 yoffset=8 xadvance=17 page=1 chnl=15 -char id=1115 x=204 y=457 width=10 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1116 x=352 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 -char id=1117 x=66 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=1118 x=147 y=166 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=1119 x=0 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1120 x=311 y=260 width=26 height=15 xoffset=1 yoffset=4 xadvance=28 page=0 chnl=15 -char id=1121 x=45 y=74 width=13 height=11 xoffset=0 yoffset=8 xadvance=13 page=1 chnl=15 -char id=1122 x=485 y=323 width=15 height=15 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1123 x=334 y=389 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=1124 x=407 y=291 width=18 height=15 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 -char id=1125 x=458 y=500 width=13 height=11 xoffset=1 yoffset=8 xadvance=15 page=0 chnl=15 -char id=1126 x=0 y=361 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1127 x=235 y=73 width=11 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1128 x=191 y=311 width=17 height=15 xoffset=2 yoffset=4 xadvance=19 page=0 chnl=15 -char id=1129 x=332 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=15 page=1 chnl=15 -char id=1130 x=51 y=345 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=1131 x=130 y=74 width=12 height=11 xoffset=1 yoffset=8 xadvance=14 page=1 chnl=15 -char id=1132 x=465 y=275 width=19 height=15 xoffset=2 yoffset=4 xadvance=22 page=0 chnl=15 -char id=1133 x=95 y=62 width=16 height=11 xoffset=1 yoffset=8 xadvance=18 page=1 chnl=15 -char id=1134 x=453 y=0 width=11 height=22 xoffset=1 yoffset=1 xadvance=13 page=0 chnl=15 -char id=1135 x=351 y=224 width=10 height=18 xoffset=0 yoffset=5 xadvance=10 page=0 chnl=15 -char id=1136 x=187 y=344 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=1137 x=320 y=390 width=12 height=15 xoffset=1 yoffset=8 xadvance=14 page=0 chnl=15 -char id=1138 x=416 y=356 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1139 x=24 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1140 x=210 y=311 width=17 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=1141 x=427 y=60 width=13 height=11 xoffset=0 yoffset=8 xadvance=13 page=1 chnl=15 -char id=1142 x=62 y=68 width=17 height=19 xoffset=0 yoffset=0 xadvance=17 page=0 chnl=15 -char id=1143 x=353 y=373 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=1144 x=165 y=46 width=22 height=19 xoffset=1 yoffset=4 xadvance=23 page=0 chnl=15 -char id=1145 x=444 y=275 width=19 height=15 xoffset=1 yoffset=8 xadvance=19 page=0 chnl=15 -char id=1146 x=21 y=246 width=17 height=17 xoffset=0 yoffset=3 xadvance=18 page=0 chnl=15 -char id=1147 x=365 y=47 width=11 height=13 xoffset=1 yoffset=7 xadvance=13 page=1 chnl=15 -char id=1148 x=140 y=46 width=23 height=19 xoffset=1 yoffset=0 xadvance=25 page=0 chnl=15 -char id=1149 x=40 y=246 width=16 height=17 xoffset=1 yoffset=2 xadvance=18 page=0 chnl=15 -char id=1150 x=0 y=208 width=26 height=18 xoffset=1 yoffset=1 xadvance=28 page=0 chnl=15 -char id=1151 x=125 y=32 width=13 height=14 xoffset=0 yoffset=5 xadvance=13 page=1 chnl=15 -char id=1152 x=135 y=106 width=13 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1153 x=176 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=1154 x=260 y=423 width=11 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=1155 x=297 y=113 width=7 height=3 xoffset=-4 yoffset=4 xadvance=0 page=1 chnl=15 -char id=1156 x=234 y=117 width=7 height=3 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 -char id=1157 x=509 y=443 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=1158 x=509 y=441 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 -char id=1159 x=99 y=118 width=11 height=3 xoffset=-5 yoffset=2 xadvance=0 page=1 chnl=15 -char id=1160 x=490 y=0 width=18 height=21 xoffset=-9 yoffset=2 xadvance=0 page=0 chnl=15 -char id=1161 x=466 y=0 width=22 height=21 xoffset=-11 yoffset=2 xadvance=0 page=0 chnl=15 -char id=1162 x=202 y=0 width=14 height=23 xoffset=1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=1163 x=175 y=225 width=11 height=18 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1164 x=383 y=372 width=13 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1165 x=389 y=437 width=10 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=1166 x=306 y=390 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1167 x=319 y=486 width=9 height=15 xoffset=2 yoffset=8 xadvance=12 page=0 chnl=15 -char id=1168 x=277 y=185 width=7 height=19 xoffset=2 yoffset=0 xadvance=10 page=0 chnl=15 -char id=1169 x=20 y=16 width=7 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 -char id=1170 x=65 y=425 width=11 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=1171 x=55 y=98 width=8 height=11 xoffset=0 yoffset=8 xadvance=8 page=1 chnl=15 -char id=1172 x=311 y=125 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1173 x=360 y=453 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=1174 x=327 y=44 width=20 height=19 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 -char id=1175 x=16 y=32 width=14 height=14 xoffset=0 yoffset=8 xadvance=14 page=1 chnl=15 -char id=1176 x=395 y=144 width=11 height=19 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 -char id=1177 x=462 y=0 width=8 height=15 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 -char id=1178 x=135 y=167 width=10 height=19 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1179 x=109 y=47 width=8 height=14 xoffset=1 yoffset=8 xadvance=9 page=1 chnl=15 -char id=1180 x=216 y=473 width=10 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1181 x=95 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=9 page=1 chnl=15 -char id=1182 x=278 y=390 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1183 x=88 y=489 width=9 height=15 xoffset=0 yoffset=4 xadvance=9 page=0 chnl=15 -char id=1184 x=126 y=329 width=16 height=15 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1185 x=261 y=73 width=11 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1186 x=297 y=125 width=12 height=19 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1187 x=235 y=32 width=11 height=14 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1188 x=20 y=313 width=17 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 -char id=1189 x=30 y=74 width=13 height=11 xoffset=1 yoffset=8 xadvance=14 page=1 chnl=15 -char id=1190 x=189 y=45 width=22 height=19 xoffset=1 yoffset=4 xadvance=24 page=0 chnl=15 -char id=1191 x=0 y=329 width=16 height=15 xoffset=1 yoffset=8 xadvance=18 page=0 chnl=15 -char id=1192 x=119 y=345 width=15 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1193 x=274 y=73 width=11 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1194 x=210 y=105 width=13 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1195 x=11 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1196 x=283 y=125 width=12 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=1197 x=308 y=32 width=10 height=14 xoffset=0 yoffset=8 xadvance=10 page=1 chnl=15 -char id=1198 x=194 y=393 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1199 x=12 y=473 width=10 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 -char id=1200 x=462 y=403 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1201 x=480 y=451 width=10 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 -char id=1202 x=225 y=105 width=13 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1203 x=296 y=32 width=10 height=14 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1204 x=119 y=66 width=17 height=19 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 -char id=1205 x=48 y=32 width=14 height=14 xoffset=0 yoffset=8 xadvance=15 page=1 chnl=15 -char id=1206 x=269 y=125 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1207 x=380 y=32 width=10 height=14 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1208 x=377 y=437 width=10 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1209 x=383 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1210 x=377 y=421 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1211 x=330 y=486 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=1212 x=134 y=313 width=17 height=15 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 -char id=1213 x=412 y=61 width=13 height=11 xoffset=0 yoffset=8 xadvance=14 page=1 chnl=15 -char id=1214 x=180 y=206 width=17 height=18 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 -char id=1215 x=95 y=32 width=13 height=14 xoffset=0 yoffset=8 xadvance=14 page=1 chnl=15 -char id=1216 x=378 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 -char id=1217 x=305 y=45 width=20 height=19 xoffset=0 yoffset=0 xadvance=19 page=0 chnl=15 -char id=1218 x=64 y=361 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1219 x=255 y=125 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1220 x=168 y=457 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=1221 x=208 y=85 width=14 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1222 x=140 y=32 width=12 height=14 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1223 x=375 y=104 width=13 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1224 x=408 y=468 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=1225 x=64 y=88 width=14 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1226 x=196 y=32 width=11 height=14 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1227 x=252 y=145 width=11 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1228 x=66 y=47 width=9 height=14 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1229 x=138 y=66 width=17 height=19 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 -char id=1230 x=110 y=32 width=13 height=14 xoffset=1 yoffset=8 xadvance=14 page=1 chnl=15 -char id=1231 x=390 y=16 width=2 height=15 xoffset=1 yoffset=4 xadvance=4 page=1 chnl=15 -char id=1232 x=0 y=128 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=1233 x=0 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1234 x=0 y=227 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 -char id=1235 x=476 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=1236 x=115 y=281 width=21 height=15 xoffset=-1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=1237 x=0 y=62 width=17 height=11 xoffset=1 yoffset=8 xadvance=19 page=1 chnl=15 -char id=1238 x=356 y=144 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 -char id=1239 x=437 y=436 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1240 x=288 y=358 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1241 x=72 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1242 x=366 y=204 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 -char id=1243 x=464 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=1244 x=117 y=208 width=20 height=18 xoffset=0 yoffset=1 xadvance=19 page=0 chnl=15 -char id=1245 x=32 y=32 width=14 height=14 xoffset=0 yoffset=5 xadvance=14 page=1 chnl=15 -char id=1246 x=201 y=225 width=11 height=18 xoffset=1 yoffset=1 xadvance=13 page=0 chnl=15 -char id=1247 x=99 y=47 width=8 height=14 xoffset=1 yoffset=5 xadvance=10 page=1 chnl=15 -char id=1248 x=0 y=441 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 -char id=1249 x=44 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=1250 x=188 y=225 width=11 height=18 xoffset=2 yoffset=1 xadvance=15 page=0 chnl=15 -char id=1251 x=501 y=16 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 -char id=1252 x=266 y=224 width=11 height=18 xoffset=2 yoffset=1 xadvance=15 page=0 chnl=15 -char id=1253 x=33 y=47 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 -char id=1254 x=382 y=204 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 -char id=1255 x=344 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=1256 x=208 y=359 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1257 x=36 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1258 x=430 y=204 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 -char id=1259 x=356 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=1260 x=45 y=227 width=13 height=18 xoffset=1 yoffset=1 xadvance=15 page=0 chnl=15 -char id=1261 x=88 y=47 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 -char id=1262 x=105 y=227 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 -char id=1263 x=303 y=224 width=10 height=18 xoffset=0 yoffset=5 xadvance=11 page=0 chnl=15 -char id=1264 x=477 y=204 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 -char id=1265 x=387 y=223 width=10 height=18 xoffset=0 yoffset=5 xadvance=11 page=0 chnl=15 -char id=1266 x=285 y=105 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=1267 x=303 y=165 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=1268 x=214 y=225 width=11 height=18 xoffset=1 yoffset=1 xadvance=14 page=0 chnl=15 -char id=1269 x=11 y=47 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 -char id=1270 x=385 y=164 width=9 height=19 xoffset=2 yoffset=4 xadvance=11 page=0 chnl=15 -char id=1271 x=139 y=47 width=7 height=14 xoffset=1 yoffset=8 xadvance=8 page=1 chnl=15 -char id=1272 x=253 y=205 width=15 height=18 xoffset=2 yoffset=1 xadvance=19 page=0 chnl=15 -char id=1273 x=80 y=32 width=13 height=14 xoffset=1 yoffset=5 xadvance=15 page=1 chnl=15 -char id=1274 x=408 y=144 width=11 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=1275 x=99 y=489 width=9 height=15 xoffset=-1 yoffset=8 xadvance=8 page=0 chnl=15 -char id=1276 x=432 y=84 width=14 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1277 x=13 y=441 width=11 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 -char id=1278 x=240 y=359 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1279 x=157 y=74 width=11 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1280 x=195 y=425 width=11 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1281 x=275 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 -char id=1282 x=227 y=295 width=18 height=15 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 -char id=1283 x=341 y=308 width=16 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 -char id=1284 x=0 y=313 width=18 height=15 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 -char id=1285 x=184 y=62 width=15 height=11 xoffset=1 yoffset=8 xadvance=17 page=1 chnl=15 -char id=1286 x=157 y=126 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1287 x=22 y=47 width=9 height=14 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1288 x=126 y=297 width=19 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 -char id=1289 x=485 y=46 width=18 height=11 xoffset=0 yoffset=8 xadvance=19 page=1 chnl=15 -char id=1290 x=105 y=297 width=19 height=15 xoffset=2 yoffset=4 xadvance=22 page=0 chnl=15 -char id=1291 x=113 y=62 width=16 height=11 xoffset=1 yoffset=8 xadvance=18 page=1 chnl=15 -char id=1292 x=480 y=355 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1293 x=96 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1294 x=16 y=377 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1295 x=15 y=74 width=13 height=11 xoffset=0 yoffset=8 xadvance=14 page=1 chnl=15 -char id=1296 x=91 y=441 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 -char id=1297 x=125 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 -char id=1298 x=87 y=128 width=12 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1299 x=130 y=441 width=11 height=15 xoffset=0 yoffset=8 xadvance=12 page=0 chnl=15 -char id=1300 x=205 y=279 width=20 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 -char id=1301 x=131 y=62 width=16 height=11 xoffset=0 yoffset=8 xadvance=16 page=1 chnl=15 -char id=1302 x=425 y=339 width=15 height=15 xoffset=2 yoffset=4 xadvance=17 page=0 chnl=15 -char id=1303 x=32 y=361 width=14 height=15 xoffset=1 yoffset=8 xadvance=15 page=0 chnl=15 -char id=1304 x=21 y=297 width=19 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 -char id=1305 x=38 y=62 width=17 height=11 xoffset=0 yoffset=8 xadvance=18 page=1 chnl=15 -char id=1306 x=346 y=243 width=14 height=16 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=1307 x=198 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1308 x=138 y=281 width=21 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 -char id=1309 x=76 y=62 width=17 height=11 xoffset=-1 yoffset=8 xadvance=15 page=1 chnl=15 -char id=1310 x=238 y=407 width=12 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1311 x=108 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 -char id=1312 x=282 y=45 width=21 height=19 xoffset=0 yoffset=4 xadvance=22 page=0 chnl=15 -char id=1313 x=347 y=292 width=18 height=15 xoffset=0 yoffset=8 xadvance=19 page=0 chnl=15 -char id=1314 x=259 y=45 width=21 height=19 xoffset=2 yoffset=4 xadvance=24 page=0 chnl=15 -char id=1315 x=396 y=324 width=16 height=15 xoffset=1 yoffset=8 xadvance=18 page=0 chnl=15 -char id=1316 x=195 y=106 width=13 height=19 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1317 x=312 y=422 width=11 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=1318 x=150 y=106 width=13 height=19 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1319 x=59 y=128 width=12 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=1320 x=300 y=65 width=15 height=19 xoffset=-1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=1321 x=224 y=407 width=12 height=15 xoffset=-1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=1322 x=83 y=46 width=28 height=19 xoffset=0 yoffset=4 xadvance=28 page=0 chnl=15 -char id=1323 x=406 y=16 width=22 height=14 xoffset=0 yoffset=8 xadvance=22 page=1 chnl=15 -char id=1324 x=485 y=63 width=14 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1325 x=168 y=32 width=12 height=14 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 -char id=1326 x=32 y=88 width=14 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=1327 x=182 y=32 width=12 height=14 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 -char id=7936 x=12 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=7937 x=24 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=7938 x=36 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=7939 x=96 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=7940 x=463 y=242 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=7941 x=0 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=7942 x=339 y=165 width=10 height=19 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15 -char id=7943 x=207 y=166 width=10 height=19 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15 -char id=7944 x=135 y=393 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=7945 x=413 y=372 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=7946 x=288 y=326 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=7947 x=234 y=327 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=7948 x=198 y=327 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=7949 x=180 y=328 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=7950 x=199 y=206 width=16 height=18 xoffset=0 yoffset=1 xadvance=17 page=0 chnl=15 -char id=7951 x=235 y=206 width=16 height=18 xoffset=0 yoffset=1 xadvance=17 page=0 chnl=15 -char id=7952 x=201 y=262 width=8 height=16 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15 -char id=7953 x=161 y=263 width=8 height=16 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15 -char id=7954 x=261 y=261 width=8 height=16 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15 -char id=7955 x=221 y=262 width=8 height=16 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15 -char id=7956 x=181 y=262 width=8 height=16 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15 -char id=7957 x=211 y=262 width=8 height=16 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15 -char id=7960 x=160 y=361 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=7961 x=48 y=361 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=7962 x=207 y=295 width=18 height=15 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 -char id=7963 x=187 y=295 width=18 height=15 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 -char id=7964 x=147 y=297 width=18 height=15 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 -char id=7965 x=447 y=291 width=18 height=15 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 -char id=7968 x=421 y=23 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 -char id=7969 x=432 y=23 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 -char id=7970 x=454 y=23 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 -char id=7971 x=0 y=47 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 -char id=7972 x=11 y=47 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 -char id=7973 x=22 y=47 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 -char id=7974 x=283 y=0 width=9 height=23 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 -char id=7975 x=294 y=0 width=9 height=23 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 -char id=7976 x=340 y=341 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=7977 x=408 y=340 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=7978 x=0 y=297 width=19 height=15 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=7979 x=486 y=275 width=19 height=15 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=7980 x=423 y=275 width=19 height=15 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=7981 x=402 y=275 width=19 height=15 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=7982 x=95 y=208 width=20 height=18 xoffset=0 yoffset=1 xadvance=21 page=0 chnl=15 -char id=7983 x=73 y=208 width=20 height=18 xoffset=0 yoffset=1 xadvance=21 page=0 chnl=15 -char id=7984 x=508 y=220 width=2 height=16 xoffset=1 yoffset=3 xadvance=4 page=0 chnl=15 -char id=7985 x=507 y=203 width=2 height=16 xoffset=1 yoffset=3 xadvance=4 page=0 chnl=15 -char id=7986 x=295 y=260 width=6 height=16 xoffset=-1 yoffset=3 xadvance=4 page=0 chnl=15 -char id=7987 x=287 y=260 width=6 height=16 xoffset=-1 yoffset=3 xadvance=4 page=0 chnl=15 -char id=7988 x=279 y=260 width=6 height=16 xoffset=-1 yoffset=3 xadvance=4 page=0 chnl=15 -char id=7989 x=303 y=260 width=6 height=16 xoffset=-1 yoffset=3 xadvance=4 page=0 chnl=15 -char id=7990 x=259 y=185 width=7 height=19 xoffset=-1 yoffset=0 xadvance=4 page=0 chnl=15 -char id=7991 x=286 y=185 width=7 height=19 xoffset=-1 yoffset=0 xadvance=4 page=0 chnl=15 -char id=7992 x=265 y=16 width=5 height=15 xoffset=1 yoffset=4 xadvance=8 page=1 chnl=15 -char id=7993 x=293 y=16 width=5 height=15 xoffset=1 yoffset=4 xadvance=8 page=1 chnl=15 -char id=7994 x=242 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=1 chnl=15 -char id=7995 x=231 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=1 chnl=15 -char id=7996 x=44 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=1 chnl=15 -char id=7997 x=165 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=1 chnl=15 -char id=7998 x=363 y=224 width=10 height=18 xoffset=0 yoffset=1 xadvance=12 page=0 chnl=15 -char id=7999 x=375 y=223 width=10 height=18 xoffset=0 yoffset=1 xadvance=12 page=0 chnl=15 -char id=8000 x=451 y=242 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8001 x=487 y=242 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8002 x=72 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8003 x=84 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8004 x=499 y=242 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8005 x=60 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8008 x=413 y=307 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8009 x=414 y=323 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8010 x=249 y=278 width=20 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 -char id=8011 x=315 y=276 width=20 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 -char id=8012 x=287 y=293 width=18 height=15 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 -char id=8013 x=387 y=292 width=18 height=15 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 -char id=8016 x=251 y=261 width=8 height=16 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15 -char id=8017 x=191 y=262 width=8 height=16 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15 -char id=8018 x=241 y=261 width=8 height=16 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15 -char id=8019 x=141 y=264 width=8 height=16 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15 -char id=8020 x=151 y=264 width=8 height=16 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15 -char id=8021 x=171 y=262 width=8 height=16 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15 -char id=8022 x=189 y=186 width=8 height=19 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15 -char id=8023 x=199 y=186 width=8 height=19 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15 -char id=8025 x=267 y=310 width=17 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8027 x=227 y=279 width=20 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 -char id=8029 x=23 y=281 width=21 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 -char id=8031 x=51 y=208 width=20 height=18 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=15 -char id=8032 x=298 y=243 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8033 x=282 y=243 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8034 x=266 y=243 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8035 x=394 y=242 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8036 x=378 y=242 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8037 x=362 y=243 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8038 x=0 y=88 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=8039 x=16 y=88 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=8040 x=449 y=307 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8041 x=431 y=307 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8042 x=293 y=277 width=20 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 -char id=8043 x=183 y=279 width=20 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 -char id=8044 x=84 y=297 width=19 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 -char id=8045 x=63 y=297 width=19 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 -char id=8046 x=160 y=206 width=18 height=18 xoffset=1 yoffset=1 xadvance=20 page=0 chnl=15 -char id=8047 x=139 y=207 width=19 height=18 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=15 -char id=8048 x=24 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8049 x=12 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8050 x=482 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 -char id=8051 x=472 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 -char id=8052 x=55 y=188 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=8053 x=0 y=188 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=8054 x=353 y=16 width=3 height=15 xoffset=0 yoffset=4 xadvance=4 page=1 chnl=15 -char id=8055 x=348 y=16 width=3 height=15 xoffset=1 yoffset=4 xadvance=4 page=1 chnl=15 -char id=8056 x=425 y=436 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8057 x=401 y=436 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8058 x=392 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=10 page=1 chnl=15 -char id=8059 x=452 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=10 page=1 chnl=15 -char id=8060 x=384 y=356 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=8061 x=144 y=361 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=8064 x=339 y=23 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8065 x=327 y=23 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8066 x=303 y=24 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8067 x=375 y=23 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8068 x=387 y=23 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8069 x=351 y=23 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8070 x=260 y=0 width=10 height=23 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15 -char id=8071 x=248 y=0 width=10 height=23 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15 -char id=8072 x=300 y=105 width=13 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=8073 x=345 y=104 width=13 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=8074 x=175 y=66 width=16 height=19 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8075 x=157 y=66 width=16 height=19 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8076 x=193 y=65 width=16 height=19 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8077 x=211 y=65 width=16 height=19 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8078 x=419 y=0 width=16 height=22 xoffset=0 yoffset=1 xadvance=17 page=0 chnl=15 -char id=8079 x=401 y=0 width=16 height=22 xoffset=0 yoffset=1 xadvance=17 page=0 chnl=15 -char id=8080 x=476 y=22 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 -char id=8081 x=487 y=22 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 -char id=8082 x=410 y=23 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 -char id=8083 x=399 y=23 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 -char id=8084 x=33 y=47 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 -char id=8085 x=443 y=23 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 -char id=8086 x=272 y=0 width=9 height=23 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 -char id=8087 x=305 y=0 width=9 height=23 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 -char id=8088 x=385 y=64 width=15 height=19 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8089 x=368 y=64 width=15 height=19 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8090 x=456 y=44 width=19 height=19 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=8091 x=414 y=44 width=19 height=19 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=8092 x=21 y=68 width=19 height=19 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=8093 x=0 y=68 width=19 height=19 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 -char id=8094 x=338 y=0 width=20 height=22 xoffset=0 yoffset=1 xadvance=21 page=0 chnl=15 -char id=8095 x=316 y=0 width=20 height=22 xoffset=0 yoffset=1 xadvance=21 page=0 chnl=15 -char id=8096 x=188 y=24 width=14 height=20 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8097 x=156 y=25 width=14 height=20 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8098 x=140 y=25 width=14 height=20 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8099 x=124 y=25 width=14 height=20 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8100 x=108 y=25 width=14 height=20 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8101 x=92 y=25 width=14 height=20 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8102 x=186 y=0 width=14 height=23 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=8103 x=218 y=0 width=14 height=23 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 -char id=8104 x=265 y=65 width=16 height=19 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8105 x=247 y=65 width=16 height=19 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8106 x=371 y=44 width=20 height=19 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 -char id=8107 x=349 y=44 width=20 height=19 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 -char id=8108 x=477 y=43 width=19 height=19 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 -char id=8109 x=435 y=44 width=19 height=19 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 -char id=8110 x=381 y=0 width=18 height=22 xoffset=1 yoffset=1 xadvance=20 page=0 chnl=15 -char id=8111 x=360 y=0 width=19 height=22 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=15 -char id=8112 x=48 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8113 x=452 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=8114 x=327 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8115 x=60 y=473 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=8116 x=63 y=168 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8118 x=72 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8119 x=255 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8120 x=480 y=104 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 -char id=8121 x=462 y=204 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 -char id=8122 x=248 y=375 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=8123 x=233 y=375 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=8124 x=435 y=104 width=13 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=8125 x=18 y=119 width=2 height=4 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8126 x=348 y=508 width=2 height=3 xoffset=3 yoffset=20 xadvance=7 page=0 chnl=15 -char id=8127 x=14 y=119 width=2 height=4 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8128 x=288 y=113 width=7 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8129 x=22 y=505 width=7 height=6 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15 -char id=8130 x=363 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=8131 x=495 y=483 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 -char id=8132 x=66 y=188 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=8134 x=501 y=63 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=8135 x=418 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=8136 x=170 y=345 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8137 x=136 y=345 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8138 x=305 y=309 width=16 height=15 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 -char id=8139 x=324 y=325 width=16 height=15 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 -char id=8140 x=479 y=124 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=8141 x=409 y=106 width=6 height=4 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8142 x=417 y=106 width=6 height=4 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8143 x=141 y=110 width=7 height=7 xoffset=0 yoffset=1 xadvance=7 page=1 chnl=15 -char id=8144 x=163 y=16 width=6 height=15 xoffset=-1 yoffset=4 xadvance=4 page=1 chnl=15 -char id=8145 x=164 y=47 width=6 height=14 xoffset=-1 yoffset=5 xadvance=4 page=1 chnl=15 -char id=8146 x=339 y=185 width=6 height=19 xoffset=-1 yoffset=0 xadvance=4 page=0 chnl=15 -char id=8147 x=419 y=184 width=6 height=19 xoffset=-1 yoffset=0 xadvance=4 page=0 chnl=15 -char id=8150 x=56 y=16 width=7 height=15 xoffset=-1 yoffset=4 xadvance=4 page=1 chnl=15 -char id=8151 x=313 y=185 width=7 height=19 xoffset=-1 yoffset=0 xadvance=4 page=0 chnl=15 -char id=8152 x=411 y=184 width=6 height=19 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 -char id=8153 x=492 y=223 width=6 height=18 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15 -char id=8154 x=107 y=16 width=6 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 -char id=8155 x=99 y=16 width=6 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 -char id=8157 x=425 y=106 width=6 height=4 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8158 x=433 y=106 width=6 height=4 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8159 x=150 y=110 width=7 height=7 xoffset=0 yoffset=1 xadvance=7 page=1 chnl=15 -char id=8160 x=442 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=10 page=1 chnl=15 -char id=8161 x=119 y=47 width=8 height=14 xoffset=1 yoffset=5 xadvance=10 page=1 chnl=15 -char id=8162 x=229 y=186 width=8 height=19 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15 -char id=8163 x=149 y=186 width=8 height=19 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15 -char id=8164 x=315 y=24 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8165 x=363 y=23 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 -char id=8166 x=382 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=10 page=1 chnl=15 -char id=8167 x=129 y=188 width=8 height=19 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15 -char id=8168 x=368 y=84 width=14 height=19 xoffset=0 yoffset=0 xadvance=14 page=0 chnl=15 -char id=8169 x=398 y=204 width=14 height=18 xoffset=0 yoffset=1 xadvance=14 page=0 chnl=15 -char id=8170 x=247 y=295 width=18 height=15 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 -char id=8171 x=427 y=291 width=18 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 -char id=8172 x=96 y=377 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=8173 x=124 y=118 width=8 height=3 xoffset=-1 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8174 x=134 y=118 width=8 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8175 x=421 y=111 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8178 x=352 y=84 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=8179 x=32 y=377 width=14 height=15 xoffset=1 yoffset=8 xadvance=16 page=0 chnl=15 -char id=8180 x=160 y=86 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=8182 x=16 y=361 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=8183 x=144 y=86 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=8184 x=115 y=313 width=17 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 -char id=8185 x=85 y=345 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8186 x=153 y=313 width=17 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 -char id=8187 x=18 y=329 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8188 x=128 y=86 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 -char id=8189 x=491 y=110 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8190 x=10 y=119 width=2 height=4 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8304 x=495 y=94 width=7 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8308 x=441 y=96 width=7 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8309 x=450 y=96 width=7 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8310 x=459 y=96 width=7 height=8 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8311 x=504 y=94 width=6 height=8 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8312 x=468 y=96 width=7 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8313 x=486 y=96 width=7 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 -char id=8319 x=477 y=96 width=7 height=8 xoffset=1 yoffset=6 xadvance=8 page=1 chnl=15 -char id=8336 x=215 y=110 width=6 height=7 xoffset=1 yoffset=13 xadvance=8 page=1 chnl=15 -char id=8337 x=207 y=110 width=6 height=7 xoffset=1 yoffset=13 xadvance=8 page=1 chnl=15 -char id=8338 x=191 y=110 width=6 height=7 xoffset=1 yoffset=13 xadvance=8 page=1 chnl=15 -char id=8339 x=132 y=110 width=7 height=7 xoffset=0 yoffset=13 xadvance=7 page=1 chnl=15 -char id=8340 x=199 y=110 width=6 height=7 xoffset=1 yoffset=13 xadvance=8 page=1 chnl=15 -char id=8352 x=362 y=389 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8353 x=140 y=246 width=13 height=17 xoffset=1 yoffset=3 xadvance=15 page=0 chnl=15 -char id=8354 x=308 y=374 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=8355 x=117 y=425 width=11 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8356 x=130 y=425 width=11 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8357 x=467 y=307 width=16 height=15 xoffset=1 yoffset=6 xadvance=18 page=0 chnl=15 -char id=8358 x=68 y=345 width=15 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 -char id=8359 x=441 y=259 width=22 height=15 xoffset=0 yoffset=4 xadvance=23 page=0 chnl=15 -char id=8360 x=69 y=281 width=21 height=15 xoffset=2 yoffset=4 xadvance=24 page=0 chnl=15 -char id=8361 x=359 y=276 width=20 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 -char id=8362 x=300 y=61 width=14 height=11 xoffset=2 yoffset=8 xadvance=18 page=1 chnl=15 -char id=8363 x=460 y=46 width=7 height=13 xoffset=2 yoffset=4 xadvance=11 page=1 chnl=15 -char id=8364 x=390 y=388 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8365 x=368 y=356 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 -char id=8366 x=404 y=388 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=8367 x=0 y=25 width=21 height=21 xoffset=0 yoffset=2 xadvance=21 page=0 chnl=15 -char id=8368 x=75 y=168 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 -char id=8369 x=15 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=8370 x=414 y=204 width=14 height=18 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=8371 x=323 y=309 width=16 height=15 xoffset=-1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=8372 x=432 y=388 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8373 x=90 y=227 width=13 height=18 xoffset=1 yoffset=3 xadvance=15 page=0 chnl=15 -char id=8374 x=187 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=1 chnl=15 -char id=8375 x=424 y=242 width=12 height=16 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 -char id=8376 x=446 y=387 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=8377 x=176 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=1 chnl=15 -char id=8378 x=474 y=387 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8379 x=77 y=313 width=17 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8380 x=196 y=47 width=16 height=13 xoffset=0 yoffset=6 xadvance=17 page=1 chnl=15 -char id=8381 x=0 y=409 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8382 x=34 y=345 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8383 x=395 y=124 width=12 height=19 xoffset=1 yoffset=2 xadvance=14 page=0 chnl=15 -char id=8592 x=374 y=97 width=21 height=8 xoffset=0 yoffset=10 xadvance=21 page=1 chnl=15 -char id=8593 x=249 y=185 width=8 height=19 xoffset=1 yoffset=5 xadvance=11 page=0 chnl=15 -char id=8594 x=276 y=503 width=21 height=8 xoffset=0 yoffset=10 xadvance=21 page=0 chnl=15 -char id=8595 x=239 y=185 width=8 height=19 xoffset=1 yoffset=5 xadvance=11 page=0 chnl=15 -char id=8596 x=253 y=503 width=21 height=8 xoffset=0 yoffset=10 xadvance=21 page=0 chnl=15 -char id=8597 x=44 y=47 width=8 height=20 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=8616 x=54 y=47 width=8 height=20 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -char id=8706 x=312 y=470 width=10 height=15 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15 -char id=8710 x=398 y=372 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 -char id=8719 x=330 y=105 width=13 height=19 xoffset=2 yoffset=4 xadvance=17 page=0 chnl=15 -char id=8721 x=315 y=105 width=13 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=8722 x=178 y=122 width=10 height=2 xoffset=1 yoffset=10 xadvance=12 page=1 chnl=15 -char id=8725 x=314 y=243 width=14 height=16 xoffset=-5 yoffset=4 xadvance=4 page=0 chnl=15 -char id=8729 x=333 y=117 width=2 height=2 xoffset=2 yoffset=11 xadvance=6 page=1 chnl=15 -char id=8730 x=290 y=24 width=11 height=20 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15 -char id=8734 x=22 y=110 width=12 height=7 xoffset=1 yoffset=8 xadvance=15 page=1 chnl=15 -char id=8735 x=250 y=47 width=14 height=13 xoffset=3 yoffset=6 xadvance=21 page=1 chnl=15 -char id=8745 x=84 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 -char id=8747 x=48 y=25 width=5 height=21 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 -char id=8776 x=36 y=110 width=12 height=7 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 -char id=8800 x=372 y=469 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 -char id=8801 x=488 y=499 width=10 height=12 xoffset=1 yoffset=5 xadvance=12 page=0 chnl=15 -char id=8804 x=332 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=8805 x=320 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 -char id=9472 x=52 y=118 width=16 height=3 xoffset=-1 yoffset=11 xadvance=15 page=1 chnl=15 -char id=9474 x=181 y=0 width=3 height=24 xoffset=4 yoffset=0 xadvance=13 page=0 chnl=15 -char id=9484 x=449 y=46 width=9 height=13 xoffset=6 yoffset=11 xadvance=15 page=1 chnl=15 -char id=9488 x=426 y=46 width=10 height=13 xoffset=-1 yoffset=11 xadvance=15 page=1 chnl=15 -char id=9492 x=0 y=47 width=9 height=14 xoffset=6 yoffset=0 xadvance=15 page=1 chnl=15 -char id=9496 x=260 y=32 width=10 height=14 xoffset=-1 yoffset=0 xadvance=15 page=1 chnl=15 -char id=9500 x=150 y=0 width=9 height=24 xoffset=6 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9508 x=126 y=0 width=10 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9516 x=232 y=47 width=16 height=13 xoffset=-1 yoffset=11 xadvance=15 page=1 chnl=15 -char id=9524 x=467 y=16 width=16 height=14 xoffset=-1 yoffset=0 xadvance=15 page=1 chnl=15 -char id=9532 x=0 y=0 width=16 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9552 x=231 y=504 width=16 height=7 xoffset=-1 yoffset=9 xadvance=15 page=0 chnl=15 -char id=9553 x=172 y=0 width=7 height=24 xoffset=4 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9554 x=220 y=0 width=9 height=15 xoffset=6 yoffset=9 xadvance=15 page=1 chnl=15 -char id=9555 x=339 y=47 width=11 height=13 xoffset=4 yoffset=11 xadvance=15 page=1 chnl=15 -char id=9556 x=403 y=420 width=11 height=15 xoffset=4 yoffset=9 xadvance=15 page=0 chnl=15 -char id=9557 x=420 y=468 width=10 height=15 xoffset=-1 yoffset=9 xadvance=15 page=0 chnl=15 -char id=9558 x=297 y=47 width=12 height=13 xoffset=-1 yoffset=11 xadvance=15 page=1 chnl=15 -char id=9559 x=98 y=409 width=12 height=15 xoffset=-1 yoffset=9 xadvance=15 page=0 chnl=15 -char id=9560 x=130 y=264 width=9 height=16 xoffset=6 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9561 x=209 y=32 width=11 height=14 xoffset=4 yoffset=0 xadvance=15 page=1 chnl=15 -char id=9562 x=438 y=242 width=11 height=16 xoffset=4 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9563 x=475 y=242 width=10 height=16 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9564 x=154 y=32 width=12 height=14 xoffset=-1 yoffset=0 xadvance=15 page=1 chnl=15 -char id=9565 x=410 y=242 width=12 height=16 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9566 x=161 y=0 width=9 height=24 xoffset=6 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9567 x=100 y=0 width=11 height=24 xoffset=4 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9568 x=113 y=0 width=11 height=24 xoffset=4 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9569 x=138 y=0 width=10 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9570 x=86 y=0 width=12 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9571 x=72 y=0 width=12 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9572 x=395 y=308 width=16 height=15 xoffset=-1 yoffset=9 xadvance=15 page=0 chnl=15 -char id=9573 x=214 y=47 width=16 height=13 xoffset=-1 yoffset=11 xadvance=15 page=1 chnl=15 -char id=9574 x=377 y=308 width=16 height=15 xoffset=-1 yoffset=9 xadvance=15 page=0 chnl=15 -char id=9575 x=230 y=244 width=16 height=16 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9576 x=449 y=16 width=16 height=14 xoffset=-1 yoffset=0 xadvance=15 page=1 chnl=15 -char id=9577 x=248 y=244 width=16 height=16 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9578 x=54 y=0 width=16 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9579 x=36 y=0 width=16 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9580 x=18 y=0 width=16 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 -char id=9632 x=365 y=501 width=11 height=10 xoffset=1 yoffset=9 xadvance=13 page=0 chnl=15 -char id=9633 x=269 y=97 width=9 height=10 xoffset=2 yoffset=9 xadvance=13 page=1 chnl=15 -char id=9642 x=63 y=505 width=5 height=6 xoffset=1 yoffset=9 xadvance=7 page=0 chnl=15 -char id=9643 x=56 y=505 width=5 height=6 xoffset=1 yoffset=9 xadvance=7 page=0 chnl=15 -char id=9644 x=82 y=505 width=21 height=5 xoffset=0 yoffset=11 xadvance=21 page=0 chnl=15 -char id=9650 x=17 y=345 width=15 height=15 xoffset=3 yoffset=4 xadvance=21 page=0 chnl=15 -char id=9658 x=0 y=345 width=15 height=15 xoffset=3 yoffset=4 xadvance=21 page=0 chnl=15 -char id=9660 x=468 y=323 width=15 height=15 xoffset=3 yoffset=4 xadvance=21 page=0 chnl=15 -char id=9668 x=459 y=339 width=15 height=15 xoffset=3 yoffset=4 xadvance=21 page=0 chnl=15 -char id=9674 x=492 y=467 width=10 height=15 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15 -char id=9675 x=378 y=501 width=10 height=10 xoffset=1 yoffset=8 xadvance=13 page=0 chnl=15 -char id=9676 x=402 y=501 width=10 height=10 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 -char id=9679 x=257 y=97 width=10 height=10 xoffset=1 yoffset=8 xadvance=13 page=1 chnl=15 -char id=9688 x=352 y=501 width=11 height=10 xoffset=1 yoffset=9 xadvance=13 page=0 chnl=15 -char id=9689 x=473 y=499 width=13 height=12 xoffset=0 yoffset=7 xadvance=13 page=0 chnl=15 -char id=9702 x=48 y=505 width=6 height=6 xoffset=1 yoffset=9 xadvance=7 page=0 chnl=15 -char id=9786 x=0 y=32 width=14 height=14 xoffset=4 yoffset=7 xadvance=21 page=1 chnl=15 -char id=9787 x=485 y=16 width=14 height=14 xoffset=4 yoffset=7 xadvance=22 page=1 chnl=15 -char id=9788 x=55 y=25 width=19 height=20 xoffset=0 yoffset=2 xadvance=19 page=0 chnl=15 -char id=9792 x=23 y=25 width=12 height=21 xoffset=2 yoffset=3 xadvance=16 page=0 chnl=15 -char id=9794 x=204 y=24 width=14 height=20 xoffset=1 yoffset=2 xadvance=16 page=0 chnl=15 -char id=9824 x=352 y=47 width=11 height=13 xoffset=0 yoffset=6 xadvance=11 page=1 chnl=15 -char id=9827 x=266 y=47 width=14 height=13 xoffset=0 yoffset=6 xadvance=14 page=1 chnl=15 -char id=9829 x=325 y=47 width=12 height=13 xoffset=0 yoffset=6 xadvance=12 page=1 chnl=15 -char id=9830 x=378 y=47 width=10 height=13 xoffset=0 yoffset=6 xadvance=11 page=1 chnl=15 -char id=9834 x=52 y=425 width=11 height=15 xoffset=0 yoffset=5 xadvance=11 page=0 chnl=15 -char id=9835 x=15 y=227 width=13 height=18 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 -char id=9839 x=219 y=244 width=9 height=17 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 -kernings count=456 -kerning first=32 second=65 amount=-1 -kerning first=1168 second=187 amount=-2 -kerning first=1168 second=171 amount=-2 -kerning first=32 second=902 amount=-1 -kerning first=32 second=913 amount=-1 -kerning first=32 second=916 amount=-1 -kerning first=32 second=923 amount=-1 -kerning first=1168 second=46 amount=-3 -kerning first=1168 second=44 amount=-3 -kerning first=1118 second=46 amount=-2 -kerning first=49 second=49 amount=-2 -kerning first=65 second=32 amount=-1 -kerning first=65 second=84 amount=-2 -kerning first=65 second=86 amount=-2 -kerning first=65 second=87 amount=-1 -kerning first=65 second=89 amount=-2 -kerning first=1118 second=44 amount=-2 -kerning first=1100 second=1095 amount=-1 -kerning first=1100 second=1090 amount=-2 -kerning first=1091 second=1076 amount=-1 -kerning first=70 second=44 amount=-2 -kerning first=70 second=46 amount=-2 -kerning first=70 second=65 amount=-1 -kerning first=76 second=32 amount=-1 -kerning first=76 second=84 amount=-2 -kerning first=76 second=86 amount=-2 -kerning first=76 second=87 amount=-2 -kerning first=76 second=89 amount=-2 -kerning first=76 second=121 amount=-1 -kerning first=1091 second=46 amount=-2 -kerning first=1091 second=44 amount=-2 -kerning first=80 second=44 amount=-3 -kerning first=80 second=46 amount=-3 -kerning first=80 second=65 amount=-2 -kerning first=1090 second=1078 amount=1 -kerning first=1090 second=1076 amount=-1 -kerning first=1090 second=46 amount=-2 -kerning first=1090 second=44 amount=-2 -kerning first=1088 second=1083 amount=-1 -kerning first=84 second=44 amount=-2 -kerning first=84 second=45 amount=-1 -kerning first=84 second=46 amount=-2 -kerning first=84 second=58 amount=-2 -kerning first=84 second=894 amount=-2 -kerning first=84 second=65 amount=-2 -kerning first=1079 second=1095 amount=-1 -kerning first=84 second=97 amount=-2 -kerning first=84 second=99 amount=-2 -kerning first=84 second=101 amount=-2 -kerning first=84 second=105 amount=-1 -kerning first=84 second=111 amount=-2 -kerning first=84 second=114 amount=-1 -kerning first=84 second=115 amount=-2 -kerning first=84 second=117 amount=-1 -kerning first=84 second=119 amount=-1 -kerning first=84 second=121 amount=-1 -kerning first=86 second=44 amount=-2 -kerning first=86 second=45 amount=-1 -kerning first=86 second=46 amount=-2 -kerning first=86 second=58 amount=-1 -kerning first=86 second=894 amount=-1 -kerning first=86 second=65 amount=-2 -kerning first=86 second=97 amount=-2 -kerning first=86 second=101 amount=-1 -kerning first=1077 second=1095 amount=-1 -kerning first=86 second=111 amount=-1 -kerning first=86 second=114 amount=-1 -kerning first=86 second=117 amount=-1 -kerning first=86 second=121 amount=-1 -kerning first=87 second=44 amount=-1 -kerning first=1077 second=1090 amount=-1 -kerning first=87 second=46 amount=-1 -kerning first=1077 second=1083 amount=-1 -kerning first=1075 second=1076 amount=-1 -kerning first=87 second=65 amount=-1 -kerning first=87 second=97 amount=-1 -kerning first=1075 second=46 amount=-3 -kerning first=1075 second=44 amount=-3 -kerning first=1074 second=1098 amount=-1 -kerning first=1074 second=1095 amount=-1 -kerning first=1073 second=1098 amount=-1 -kerning first=1073 second=1095 amount=-1 -kerning first=1073 second=1093 amount=-1 -kerning first=89 second=44 amount=-3 -kerning first=89 second=45 amount=-2 -kerning first=89 second=46 amount=-3 -kerning first=89 second=58 amount=-1 -kerning first=89 second=894 amount=-1 -kerning first=89 second=65 amount=-2 -kerning first=89 second=97 amount=-2 -kerning first=89 second=101 amount=-2 -kerning first=89 second=105 amount=-1 -kerning first=89 second=111 amount=-2 -kerning first=89 second=112 amount=-2 -kerning first=89 second=113 amount=-2 -kerning first=89 second=117 amount=-1 -kerning first=89 second=118 amount=-1 -kerning first=1073 second=1083 amount=-1 -kerning first=1073 second=1076 amount=-1 -kerning first=114 second=44 amount=-1 -kerning first=114 second=46 amount=-1 -kerning first=1070 second=1083 amount=-1 -kerning first=118 second=44 amount=-2 -kerning first=118 second=46 amount=-2 -kerning first=119 second=44 amount=-1 -kerning first=119 second=46 amount=-1 -kerning first=121 second=44 amount=-2 -kerning first=121 second=46 amount=-2 -kerning first=1070 second=1076 amount=-1 -kerning first=1070 second=1063 amount=-1 -kerning first=1070 second=1061 amount=-1 -kerning first=1070 second=1058 amount=-1 -kerning first=1070 second=1051 amount=-1 -kerning first=1070 second=1044 amount=-1 -kerning first=1070 second=1040 amount=-1 -kerning first=1069 second=1083 amount=-1 -kerning first=1069 second=1076 amount=-1 -kerning first=915 second=44 amount=-2 -kerning first=915 second=46 amount=-2 -kerning first=915 second=912 amount=2 -kerning first=915 second=913 amount=-2 -kerning first=915 second=916 amount=-2 -kerning first=915 second=923 amount=-2 -kerning first=915 second=953 amount=-1 -kerning first=915 second=970 amount=1 -kerning first=1069 second=1061 amount=-1 -kerning first=1069 second=1051 amount=-1 -kerning first=1069 second=1044 amount=-1 -kerning first=920 second=933 amount=-1 -kerning first=920 second=939 amount=-1 -kerning first=934 second=913 amount=-1 -kerning first=934 second=933 amount=-1 -kerning first=934 second=939 amount=-1 -kerning first=1068 second=1071 amount=-1 -kerning first=1068 second=1063 amount=-2 -kerning first=948 second=967 amount=-1 -kerning first=1068 second=1061 amount=-1 -kerning first=1068 second=1058 amount=-2 -kerning first=1068 second=1051 amount=-1 -kerning first=1068 second=1046 amount=-1 -kerning first=1066 second=1071 amount=-1 -kerning first=1061 second=1069 amount=-1 -kerning first=1061 second=1060 amount=-1 -kerning first=1061 second=1057 amount=-1 -kerning first=1061 second=1054 amount=-1 -kerning first=1060 second=1083 amount=-1 -kerning first=1060 second=1071 amount=-1 -kerning first=1060 second=1059 amount=-1 -kerning first=1060 second=1058 amount=-1 -kerning first=966 second=967 amount=-1 -kerning first=1060 second=1051 amount=-1 -kerning first=1060 second=1044 amount=-1 -kerning first=902 second=934 amount=-1 -kerning first=1059 second=1103 amount=-1 -kerning first=902 second=932 amount=-2 -kerning first=902 second=933 amount=-2 -kerning first=902 second=939 amount=-2 -kerning first=1059 second=1102 amount=-1 -kerning first=1059 second=1097 amount=-1 -kerning first=1059 second=1096 amount=-1 -kerning first=908 second=933 amount=-1 -kerning first=910 second=920 amount=-1 -kerning first=910 second=934 amount=-1 -kerning first=910 second=945 amount=-2 -kerning first=910 second=963 amount=-2 -kerning first=910 second=966 amount=-2 -kerning first=910 second=912 amount=2 -kerning first=910 second=913 amount=-2 -kerning first=910 second=916 amount=-2 -kerning first=910 second=923 amount=-2 -kerning first=910 second=927 amount=-1 -kerning first=910 second=937 amount=-1 -kerning first=910 second=942 amount=-2 -kerning first=910 second=943 amount=-1 -kerning first=910 second=951 amount=-2 -kerning first=910 second=953 amount=-1 -kerning first=910 second=954 amount=-2 -kerning first=910 second=956 amount=-2 -kerning first=910 second=959 amount=-2 -kerning first=910 second=970 amount=1 -kerning first=910 second=972 amount=-2 -kerning first=1059 second=1094 amount=-1 -kerning first=1059 second=1093 amount=-1 -kerning first=913 second=32 amount=-1 -kerning first=1059 second=1089 amount=-1 -kerning first=1059 second=1088 amount=-1 -kerning first=913 second=934 amount=-1 -kerning first=1059 second=1087 amount=-1 -kerning first=913 second=932 amount=-2 -kerning first=913 second=933 amount=-2 -kerning first=913 second=939 amount=-2 -kerning first=1059 second=1086 amount=-1 -kerning first=1059 second=1085 amount=-1 -kerning first=1059 second=1084 amount=-1 -kerning first=916 second=32 amount=-1 -kerning first=1059 second=1083 amount=-1 -kerning first=1059 second=1082 amount=-1 -kerning first=916 second=932 amount=-1 -kerning first=916 second=933 amount=-2 -kerning first=916 second=939 amount=-2 -kerning first=922 second=920 amount=-1 -kerning first=922 second=934 amount=-1 -kerning first=1059 second=1081 amount=-1 -kerning first=1059 second=1080 amount=-1 -kerning first=1059 second=1079 amount=-1 -kerning first=1059 second=1078 amount=-1 -kerning first=922 second=927 amount=-1 -kerning first=1059 second=1077 amount=-1 -kerning first=1059 second=1076 amount=-2 -kerning first=1059 second=1075 amount=-1 -kerning first=1059 second=1074 amount=-1 -kerning first=1059 second=1060 amount=-1 -kerning first=1059 second=1054 amount=-1 -kerning first=1059 second=1051 amount=-1 -kerning first=1059 second=1044 amount=-1 -kerning first=923 second=32 amount=-1 -kerning first=1059 second=1040 amount=-1 -kerning first=1059 second=187 amount=-1 -kerning first=923 second=932 amount=-2 -kerning first=923 second=933 amount=-2 -kerning first=923 second=939 amount=-2 -kerning first=1059 second=171 amount=-1 -kerning first=1059 second=46 amount=-3 -kerning first=1059 second=44 amount=-3 -kerning first=927 second=933 amount=-1 -kerning first=927 second=939 amount=-1 -kerning first=1058 second=1103 amount=-1 -kerning first=929 second=44 amount=-3 -kerning first=929 second=46 amount=-3 -kerning first=929 second=913 amount=-2 -kerning first=929 second=916 amount=-2 -kerning first=929 second=923 amount=-2 -kerning first=931 second=964 amount=-1 -kerning first=931 second=960 amount=-1 -kerning first=1058 second=1102 amount=-1 -kerning first=932 second=44 amount=-2 -kerning first=932 second=46 amount=-2 -kerning first=932 second=58 amount=-2 -kerning first=932 second=894 amount=-2 -kerning first=1058 second=1100 amount=-1 -kerning first=1058 second=1099 amount=-1 -kerning first=932 second=945 amount=-2 -kerning first=932 second=949 amount=-2 -kerning first=932 second=963 amount=-2 -kerning first=932 second=966 amount=-2 -kerning first=932 second=912 amount=2 -kerning first=932 second=913 amount=-2 -kerning first=932 second=916 amount=-2 -kerning first=932 second=923 amount=-2 -kerning first=1058 second=1097 amount=-1 -kerning first=1058 second=1093 amount=-1 -kerning first=932 second=940 amount=-2 -kerning first=932 second=941 amount=-2 -kerning first=932 second=944 amount=-2 -kerning first=932 second=947 amount=-2 -kerning first=932 second=951 amount=-2 -kerning first=932 second=953 amount=-1 -kerning first=932 second=956 amount=-2 -kerning first=932 second=957 amount=-1 -kerning first=932 second=959 amount=-2 -kerning first=932 second=965 amount=-2 -kerning first=932 second=967 amount=-1 -kerning first=932 second=968 amount=-2 -kerning first=932 second=970 amount=2 -kerning first=932 second=971 amount=-2 -kerning first=932 second=972 amount=-2 -kerning first=932 second=973 amount=-2 -kerning first=1058 second=1091 amount=-1 -kerning first=933 second=44 amount=-3 -kerning first=933 second=45 amount=-2 -kerning first=933 second=46 amount=-3 -kerning first=933 second=58 amount=-1 -kerning first=933 second=894 amount=-1 -kerning first=933 second=920 amount=-1 -kerning first=933 second=934 amount=-1 -kerning first=933 second=945 amount=-2 -kerning first=933 second=963 amount=-2 -kerning first=933 second=966 amount=-2 -kerning first=933 second=912 amount=2 -kerning first=933 second=913 amount=-2 -kerning first=933 second=916 amount=-2 -kerning first=933 second=923 amount=-2 -kerning first=933 second=927 amount=-1 -kerning first=933 second=937 amount=-1 -kerning first=933 second=942 amount=-2 -kerning first=933 second=943 amount=-1 -kerning first=933 second=947 amount=-1 -kerning first=933 second=951 amount=-2 -kerning first=933 second=953 amount=-1 -kerning first=933 second=954 amount=-2 -kerning first=933 second=956 amount=-2 -kerning first=933 second=959 amount=-2 -kerning first=933 second=970 amount=1 -kerning first=933 second=972 amount=-2 -kerning first=936 second=945 amount=-1 -kerning first=936 second=948 amount=-1 -kerning first=936 second=963 amount=-1 -kerning first=936 second=966 amount=-1 -kerning first=936 second=940 amount=-1 -kerning first=1058 second=1089 amount=-1 -kerning first=936 second=959 amount=-1 -kerning first=936 second=969 amount=-1 -kerning first=936 second=972 amount=-1 -kerning first=936 second=974 amount=-1 -kerning first=1058 second=1088 amount=-1 -kerning first=1058 second=1087 amount=-1 -kerning first=1058 second=1086 amount=-2 -kerning first=939 second=920 amount=-1 -kerning first=939 second=934 amount=-1 -kerning first=939 second=945 amount=-2 -kerning first=939 second=963 amount=-2 -kerning first=939 second=966 amount=-2 -kerning first=939 second=912 amount=2 -kerning first=939 second=913 amount=-2 -kerning first=939 second=916 amount=-2 -kerning first=939 second=923 amount=-2 -kerning first=939 second=927 amount=-1 -kerning first=939 second=937 amount=-1 -kerning first=939 second=942 amount=-2 -kerning first=939 second=943 amount=-1 -kerning first=939 second=951 amount=-2 -kerning first=939 second=953 amount=-1 -kerning first=939 second=954 amount=-2 -kerning first=939 second=956 amount=-2 -kerning first=939 second=959 amount=-2 -kerning first=939 second=970 amount=1 -kerning first=939 second=972 amount=-2 -kerning first=950 second=945 amount=-1 -kerning first=950 second=948 amount=-1 -kerning first=950 second=963 amount=-1 -kerning first=950 second=964 amount=-1 -kerning first=950 second=966 amount=-1 -kerning first=950 second=940 amount=-1 -kerning first=1058 second=1084 amount=-1 -kerning first=950 second=947 amount=-1 -kerning first=1058 second=1083 amount=-1 -kerning first=950 second=952 amount=-1 -kerning first=1058 second=1082 amount=-1 -kerning first=1058 second=1080 amount=-1 -kerning first=950 second=957 amount=-1 -kerning first=950 second=959 amount=-1 -kerning first=950 second=969 amount=-1 -kerning first=950 second=972 amount=-1 -kerning first=950 second=974 amount=-1 -kerning first=950 second=960 amount=-1 -kerning first=1058 second=1077 amount=-1 -kerning first=1058 second=1074 amount=-1 -kerning first=1058 second=1072 amount=-1 -kerning first=1058 second=1060 amount=-1 -kerning first=1058 second=1054 amount=-1 -kerning first=1058 second=1044 amount=-1 -kerning first=1058 second=1040 amount=-1 -kerning first=1058 second=187 amount=-1 -kerning first=1058 second=171 amount=-1 -kerning first=1058 second=46 amount=-2 -kerning first=1058 second=44 amount=-2 -kerning first=1057 second=1066 amount=-1 -kerning first=1057 second=1063 amount=-1 -kerning first=1057 second=1061 amount=-1 -kerning first=1057 second=1059 amount=-1 -kerning first=1057 second=1058 amount=-1 -kerning first=1057 second=1051 amount=-1 -kerning first=1056 second=1103 amount=-1 -kerning first=1056 second=1086 amount=-1 -kerning first=1056 second=1077 amount=-1 -kerning first=1056 second=1076 amount=-2 -kerning first=1056 second=1072 amount=-1 -kerning first=955 second=965 amount=-1 -kerning first=1056 second=1061 amount=-1 -kerning first=1056 second=1058 amount=-1 -kerning first=955 second=973 amount=-1 -kerning first=1056 second=1051 amount=-1 -kerning first=958 second=945 amount=-1 -kerning first=958 second=948 amount=-1 -kerning first=958 second=963 amount=-1 -kerning first=958 second=966 amount=-1 -kerning first=958 second=940 amount=-1 -kerning first=958 second=950 amount=-1 -kerning first=958 second=958 amount=-1 -kerning first=958 second=959 amount=-1 -kerning first=958 second=962 amount=-1 -kerning first=958 second=972 amount=-1 -kerning first=1056 second=1044 amount=-1 -kerning first=1056 second=1040 amount=-1 -kerning first=959 second=967 amount=-1 -kerning first=1056 second=187 amount=-1 -kerning first=1056 second=46 amount=-4 -kerning first=1056 second=44 amount=-4 -kerning first=1054 second=1061 amount=-1 -kerning first=967 second=945 amount=-1 -kerning first=967 second=948 amount=-1 -kerning first=967 second=963 amount=-1 -kerning first=967 second=966 amount=-1 -kerning first=967 second=940 amount=-1 -kerning first=967 second=950 amount=-1 -kerning first=967 second=959 amount=-1 -kerning first=967 second=962 amount=-1 -kerning first=967 second=969 amount=-1 -kerning first=967 second=972 amount=-1 -kerning first=967 second=974 amount=-1 -kerning first=1050 second=1060 amount=-1 -kerning first=1044 second=1079 amount=1 -kerning first=969 second=967 amount=-1 -kerning first=1044 second=1063 amount=-1 -kerning first=1043 second=1103 amount=-1 -kerning first=1043 second=1102 amount=-1 -kerning first=972 second=967 amount=-1 -kerning first=1043 second=1100 amount=-1 -kerning first=1043 second=1099 amount=-1 -kerning first=1043 second=1091 amount=-1 -kerning first=974 second=967 amount=-1 -kerning first=1043 second=1088 amount=-1 -kerning first=1027 second=44 amount=-3 -kerning first=1027 second=46 amount=-3 -kerning first=1027 second=171 amount=-1 -kerning first=1027 second=187 amount=-1 -kerning first=1043 second=1086 amount=-1 -kerning first=1043 second=1085 amount=-1 -kerning first=1043 second=1084 amount=-1 -kerning first=1043 second=1083 amount=-1 -kerning first=1040 second=1044 amount=1 -kerning first=1043 second=1080 amount=-1 -kerning first=1043 second=1077 amount=-1 -kerning first=1043 second=1076 amount=-1 -kerning first=1043 second=1074 amount=-1 -kerning first=1043 second=1072 amount=-1 -kerning first=1040 second=1058 amount=-2 -kerning first=1040 second=1059 amount=-1 -kerning first=1040 second=1060 amount=-1 -kerning first=1040 second=1063 amount=-2 -kerning first=1043 second=1071 amount=-1 -kerning first=1043 second=1057 amount=-1 -kerning first=1043 second=1054 amount=-1 -kerning first=1043 second=1051 amount=-1 -kerning first=1043 second=1044 amount=-1 -kerning first=1043 second=1040 amount=-1 -kerning first=1043 second=187 amount=-1 -kerning first=1043 second=171 amount=-1 -kerning first=1043 second=46 amount=-3 -kerning first=1043 second=44 amount=-3 -kerning first=1041 second=1058 amount=-1 -kerning first=1042 second=1095 amount=-1 -kerning first=1042 second=1090 amount=-1 -kerning first=1042 second=1071 amount=-1 -kerning first=1041 second=1063 amount=-1 -kerning first=1041 second=1066 amount=-1 -kerning first=1042 second=1066 amount=-1 -kerning first=1042 second=1063 amount=-1 -kerning first=1042 second=1061 amount=-1 -kerning first=1042 second=1060 amount=-1 -kerning first=1042 second=1040 amount=-1 -kerning first=1042 second=1059 amount=-1 -kerning first=1042 second=1058 amount=-1 -kerning first=1042 second=1047 amount=-1 -kerning first=1042 second=1057 amount=-1 -kerning first=1042 second=1054 amount=-1 +info face="Noto Sans" size=24 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=2,1 outline=0 +common lineHeight=24 base=19 scaleW=512 scaleH=512 pages=2 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4 +page id=0 file="NotoSans-Regular-Title_0.png" +page id=1 file="NotoSans-Regular-Title_1.png" +chars count=1624 +char id=32 x=487 y=70 width=3 height=1 xoffset=-1 yoffset=23 xadvance=6 page=1 chnl=15 +char id=33 x=362 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 +char id=34 x=133 y=505 width=6 height=5 xoffset=1 yoffset=4 xadvance=7 page=0 chnl=15 +char id=35 x=180 y=393 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=36 x=457 y=223 width=9 height=18 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=37 x=229 y=311 width=17 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 +char id=38 x=173 y=377 width=13 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=39 x=223 y=505 width=2 height=5 xoffset=1 yoffset=4 xadvance=4 page=0 chnl=15 +char id=40 x=448 y=184 width=5 height=19 xoffset=1 yoffset=4 xadvance=7 page=0 chnl=15 +char id=41 x=441 y=184 width=5 height=19 xoffset=1 yoffset=4 xadvance=7 page=0 chnl=15 +char id=42 x=12 y=505 width=8 height=6 xoffset=0 yoffset=4 xadvance=8 page=0 chnl=15 +char id=43 x=390 y=501 width=10 height=10 xoffset=1 yoffset=7 xadvance=12 page=0 chnl=15 +char id=44 x=414 y=501 width=2 height=5 xoffset=2 yoffset=17 xadvance=6 page=0 chnl=15 +char id=45 x=252 y=121 width=6 height=2 xoffset=0 yoffset=12 xadvance=7 page=1 chnl=15 +char id=46 x=325 y=117 width=2 height=2 xoffset=2 yoffset=17 xadvance=6 page=1 chnl=15 +char id=47 x=147 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 +char id=48 x=221 y=440 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=49 x=155 y=16 width=6 height=15 xoffset=2 yoffset=4 xadvance=12 page=1 chnl=15 +char id=50 x=245 y=439 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=51 x=257 y=439 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=52 x=269 y=439 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=53 x=281 y=439 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=54 x=293 y=438 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=55 x=305 y=438 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=56 x=317 y=438 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=57 x=329 y=438 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=58 x=241 y=97 width=2 height=11 xoffset=2 yoffset=8 xadvance=6 page=1 chnl=15 +char id=59 x=188 y=47 width=2 height=14 xoffset=2 yoffset=8 xadvance=6 page=1 chnl=15 +char id=60 x=349 y=73 width=10 height=11 xoffset=1 yoffset=6 xadvance=12 page=1 chnl=15 +char id=61 x=63 y=110 width=10 height=7 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=62 x=373 y=73 width=10 height=11 xoffset=1 yoffset=6 xadvance=12 page=1 chnl=15 +char id=63 x=341 y=437 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=64 x=393 y=44 width=19 height=19 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=65 x=150 y=393 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=66 x=143 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=67 x=120 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=68 x=376 y=388 width=12 height=15 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 +char id=69 x=156 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=70 x=353 y=437 width=10 height=15 xoffset=2 yoffset=4 xadvance=13 page=0 chnl=15 +char id=71 x=80 y=377 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=72 x=418 y=388 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=73 x=358 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 +char id=74 x=412 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=75 x=460 y=387 width=12 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=76 x=374 y=485 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 +char id=77 x=204 y=343 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=78 x=488 y=387 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=79 x=448 y=355 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=80 x=221 y=424 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=81 x=330 y=243 width=14 height=16 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=82 x=14 y=409 width=12 height=15 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 +char id=83 x=28 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=84 x=42 y=409 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=85 x=56 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=86 x=128 y=377 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=87 x=92 y=281 width=21 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 +char id=88 x=320 y=357 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=89 x=96 y=361 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=90 x=70 y=409 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=91 x=455 y=184 width=4 height=19 xoffset=1 yoffset=4 xadvance=6 page=0 chnl=15 +char id=92 x=235 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 +char id=93 x=467 y=184 width=4 height=19 xoffset=1 yoffset=4 xadvance=6 page=0 chnl=15 +char id=94 x=431 y=97 width=8 height=8 xoffset=0 yoffset=4 xadvance=8 page=1 chnl=15 +char id=95 x=94 y=122 width=12 height=2 xoffset=0 yoffset=21 xadvance=12 page=1 chnl=15 +char id=96 x=426 y=111 width=3 height=3 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 +char id=97 x=84 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=98 x=385 y=485 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=99 x=449 y=84 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=100 x=407 y=485 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=101 x=228 y=85 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=102 x=503 y=307 width=7 height=15 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15 +char id=103 x=440 y=484 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=104 x=462 y=484 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=105 x=398 y=16 width=2 height=15 xoffset=1 yoffset=4 xadvance=5 page=1 chnl=15 +char id=106 x=473 y=184 width=4 height=19 xoffset=-1 yoffset=4 xadvance=4 page=0 chnl=15 +char id=107 x=484 y=483 width=9 height=15 xoffset=1 yoffset=4 xadvance=10 page=0 chnl=15 +char id=108 x=394 y=16 width=2 height=15 xoffset=1 yoffset=4 xadvance=4 page=1 chnl=15 +char id=109 x=396 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 +char id=110 x=295 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=111 x=433 y=72 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=112 x=22 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=113 x=33 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=114 x=201 y=98 width=6 height=11 xoffset=1 yoffset=8 xadvance=7 page=1 chnl=15 +char id=115 x=471 y=84 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=116 x=272 y=16 width=5 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 +char id=117 x=372 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=118 x=487 y=58 width=13 height=11 xoffset=-1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=119 x=19 y=62 width=17 height=11 xoffset=-1 yoffset=8 xadvance=15 page=1 chnl=15 +char id=120 x=204 y=86 width=10 height=11 xoffset=0 yoffset=8 xadvance=10 page=1 chnl=15 +char id=121 x=485 y=435 width=10 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 +char id=122 x=445 y=72 width=10 height=11 xoffset=0 yoffset=8 xadvance=9 page=1 chnl=15 +char id=123 x=395 y=184 width=6 height=19 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15 +char id=124 x=75 y=46 width=2 height=20 xoffset=2 yoffset=4 xadvance=6 page=0 chnl=15 +char id=125 x=387 y=184 width=6 height=19 xoffset=1 yoffset=4 xadvance=7 page=0 chnl=15 +char id=126 x=321 y=108 width=10 height=4 xoffset=1 yoffset=10 xadvance=12 page=1 chnl=15 +char id=160 x=263 y=114 width=3 height=1 xoffset=-1 yoffset=23 xadvance=6 page=1 chnl=15 +char id=161 x=382 y=16 width=2 height=15 xoffset=2 yoffset=8 xadvance=6 page=1 chnl=15 +char id=162 x=99 y=168 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=163 x=481 y=419 width=11 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=164 x=409 y=97 width=10 height=8 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=165 x=378 y=404 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=166 x=71 y=46 width=2 height=20 xoffset=2 yoffset=4 xadvance=6 page=0 chnl=15 +char id=167 x=111 y=168 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=168 x=308 y=117 width=6 height=2 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 +char id=169 x=272 y=342 width=15 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 +char id=170 x=299 y=503 width=7 height=8 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15 +char id=171 x=330 y=502 width=9 height=9 xoffset=1 yoffset=9 xadvance=12 page=0 chnl=15 +char id=172 x=0 y=505 width=10 height=6 xoffset=1 yoffset=9 xadvance=12 page=0 chnl=15 +char id=173 x=300 y=117 width=6 height=2 xoffset=0 yoffset=12 xadvance=7 page=1 chnl=15 +char id=174 x=306 y=341 width=15 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 +char id=175 x=79 y=122 width=13 height=2 xoffset=-1 yoffset=1 xadvance=12 page=1 chnl=15 +char id=176 x=40 y=505 width=6 height=6 xoffset=1 yoffset=4 xadvance=8 page=0 chnl=15 +char id=177 x=414 y=47 width=10 height=13 xoffset=1 yoffset=6 xadvance=12 page=1 chnl=15 +char id=178 x=8 y=110 width=6 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=179 x=0 y=110 width=6 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=180 x=30 y=123 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=181 x=297 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=182 x=330 y=145 width=11 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=183 x=337 y=117 width=2 height=2 xoffset=2 yoffset=10 xadvance=7 page=1 chnl=15 +char id=184 x=448 y=105 width=5 height=4 xoffset=1 yoffset=19 xadvance=7 page=1 chnl=15 +char id=185 x=16 y=110 width=4 height=8 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 +char id=186 x=421 y=97 width=8 height=8 xoffset=0 yoffset=4 xadvance=8 page=1 chnl=15 +char id=187 x=319 y=502 width=9 height=9 xoffset=2 yoffset=9 xadvance=12 page=0 chnl=15 +char id=188 x=378 y=324 width=16 height=15 xoffset=2 yoffset=4 xadvance=18 page=0 chnl=15 +char id=189 x=270 y=326 width=16 height=15 xoffset=2 yoffset=4 xadvance=18 page=0 chnl=15 +char id=190 x=367 y=292 width=18 height=15 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 +char id=191 x=88 y=0 width=9 height=15 xoffset=2 yoffset=8 xadvance=13 page=1 chnl=15 +char id=192 x=0 y=108 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=193 x=15 y=108 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=194 x=30 y=108 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=195 x=45 y=108 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=196 x=75 y=227 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 +char id=197 x=75 y=108 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=198 x=488 y=259 width=21 height=15 xoffset=-1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=199 x=105 y=107 width=13 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=200 x=473 y=144 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 +char id=201 x=460 y=144 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 +char id=202 x=447 y=144 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 +char id=203 x=253 y=224 width=11 height=18 xoffset=2 yoffset=1 xadvance=14 page=0 chnl=15 +char id=204 x=500 y=184 width=3 height=19 xoffset=1 yoffset=0 xadvance=6 page=0 chnl=15 +char id=205 x=485 y=184 width=3 height=19 xoffset=2 yoffset=0 xadvance=6 page=0 chnl=15 +char id=206 x=139 y=187 width=8 height=19 xoffset=-1 yoffset=0 xadvance=6 page=0 chnl=15 +char id=207 x=468 y=223 width=6 height=18 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15 +char id=208 x=176 y=361 width=14 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 +char id=209 x=339 y=125 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=210 x=256 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=211 x=272 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=212 x=288 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=213 x=496 y=83 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=214 x=318 y=205 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 +char id=215 x=308 y=502 width=9 height=9 xoffset=1 yoffset=7 xadvance=12 page=0 chnl=15 +char id=216 x=93 y=246 width=14 height=17 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=217 x=353 y=124 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=218 x=367 y=124 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=219 x=381 y=124 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=220 x=120 y=227 width=12 height=18 xoffset=1 yoffset=1 xadvance=14 page=0 chnl=15 +char id=221 x=448 y=84 width=14 height=19 xoffset=0 yoffset=0 xadvance=14 page=0 chnl=15 +char id=222 x=26 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=223 x=39 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=13 page=0 chnl=15 +char id=224 x=60 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=225 x=72 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=226 x=84 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=227 x=96 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=228 x=500 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=229 x=196 y=244 width=10 height=17 xoffset=1 yoffset=2 xadvance=12 page=0 chnl=15 +char id=230 x=57 y=62 width=17 height=11 xoffset=1 yoffset=8 xadvance=19 page=1 chnl=15 +char id=231 x=77 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=232 x=120 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=233 x=132 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=234 x=144 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=235 x=488 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=236 x=507 y=275 width=3 height=15 xoffset=1 yoffset=4 xadvance=6 page=0 chnl=15 +char id=237 x=507 y=291 width=3 height=15 xoffset=2 yoffset=4 xadvance=6 page=0 chnl=15 +char id=238 x=432 y=0 width=8 height=15 xoffset=-1 yoffset=4 xadvance=6 page=1 chnl=15 +char id=239 x=172 y=47 width=6 height=14 xoffset=0 yoffset=5 xadvance=6 page=1 chnl=15 +char id=240 x=192 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=241 x=154 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=242 x=216 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=243 x=228 y=456 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=244 x=168 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=245 x=240 y=456 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=246 x=248 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=247 x=397 y=97 width=10 height=8 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=248 x=402 y=47 width=10 height=13 xoffset=1 yoffset=7 xadvance=12 page=1 chnl=15 +char id=249 x=132 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=250 x=99 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=251 x=55 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=252 x=44 y=47 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 +char id=253 x=219 y=166 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=254 x=183 y=166 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=255 x=291 y=224 width=10 height=18 xoffset=0 yoffset=5 xadvance=11 page=0 chnl=15 +char id=256 x=60 y=227 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 +char id=257 x=284 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=258 x=495 y=104 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=259 x=480 y=467 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=260 x=480 y=84 width=14 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=261 x=468 y=467 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=262 x=30 y=128 width=13 height=19 xoffset=1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=263 x=341 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=264 x=15 y=128 width=13 height=19 xoffset=1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=265 x=330 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=266 x=30 y=227 width=13 height=18 xoffset=1 yoffset=1 xadvance=15 page=0 chnl=15 +char id=267 x=77 y=47 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 +char id=268 x=180 y=106 width=13 height=19 xoffset=1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=269 x=319 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=270 x=437 y=124 width=12 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 +char id=271 x=112 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 +char id=272 x=112 y=361 width=14 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 +char id=273 x=442 y=420 width=11 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=274 x=227 y=225 width=11 height=18 xoffset=2 yoffset=1 xadvance=14 page=0 chnl=15 +char id=275 x=404 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=276 x=317 y=145 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 +char id=277 x=444 y=468 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=278 x=240 y=225 width=11 height=18 xoffset=2 yoffset=1 xadvance=14 page=0 chnl=15 +char id=279 x=440 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=280 x=382 y=144 width=11 height=19 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=281 x=360 y=469 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=282 x=0 y=168 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 +char id=283 x=324 y=470 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=284 x=240 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=285 x=473 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=286 x=400 y=84 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=287 x=440 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=288 x=286 y=205 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 +char id=289 x=446 y=223 width=9 height=18 xoffset=1 yoffset=5 xadvance=11 page=0 chnl=15 +char id=290 x=172 y=25 width=14 height=20 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=291 x=37 y=25 width=9 height=21 xoffset=1 yoffset=2 xadvance=12 page=0 chnl=15 +char id=292 x=451 y=124 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=293 x=451 y=164 width=9 height=19 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 +char id=294 x=458 y=371 width=13 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=295 x=96 y=473 width=10 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=296 x=304 y=185 width=7 height=19 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 +char id=297 x=503 y=371 width=7 height=15 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15 +char id=298 x=476 y=223 width=6 height=18 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15 +char id=299 x=148 y=47 width=6 height=14 xoffset=0 yoffset=5 xadvance=6 page=1 chnl=15 +char id=300 x=347 y=185 width=6 height=19 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 +char id=301 x=243 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 +char id=302 x=507 y=124 width=3 height=19 xoffset=1 yoffset=4 xadvance=6 page=0 chnl=15 +char id=303 x=490 y=184 width=3 height=19 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15 +char id=304 x=505 y=184 width=2 height=18 xoffset=2 yoffset=1 xadvance=6 page=0 chnl=15 +char id=305 x=249 y=97 width=2 height=11 xoffset=2 yoffset=8 xadvance=6 page=1 chnl=15 +char id=306 x=182 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 +char id=307 x=322 y=185 width=7 height=19 xoffset=1 yoffset=4 xadvance=9 page=0 chnl=15 +char id=308 x=421 y=144 width=11 height=19 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 +char id=309 x=169 y=186 width=8 height=19 xoffset=-2 yoffset=4 xadvance=4 page=0 chnl=15 +char id=310 x=276 y=24 width=12 height=20 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=311 x=498 y=22 width=9 height=20 xoffset=1 yoffset=4 xadvance=10 page=0 chnl=15 +char id=312 x=385 y=73 width=10 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 +char id=313 x=462 y=164 width=9 height=19 xoffset=2 yoffset=0 xadvance=12 page=0 chnl=15 +char id=314 x=495 y=184 width=3 height=19 xoffset=1 yoffset=0 xadvance=4 page=0 chnl=15 +char id=315 x=465 y=23 width=9 height=20 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 +char id=316 x=79 y=46 width=2 height=20 xoffset=1 yoffset=4 xadvance=4 page=0 chnl=15 +char id=317 x=286 y=0 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=1 chnl=15 +char id=318 x=279 y=16 width=5 height=15 xoffset=1 yoffset=4 xadvance=6 page=1 chnl=15 +char id=319 x=451 y=484 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 +char id=320 x=219 y=16 width=6 height=15 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 +char id=321 x=169 y=425 width=11 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=322 x=300 y=16 width=4 height=15 xoffset=0 yoffset=4 xadvance=4 page=1 chnl=15 +char id=323 x=493 y=124 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=324 x=429 y=484 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=325 x=262 y=24 width=12 height=20 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=326 x=108 y=264 width=9 height=16 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=327 x=0 y=148 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=328 x=396 y=485 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=329 x=91 y=425 width=11 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=330 x=252 y=407 width=12 height=15 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 +char id=331 x=341 y=486 width=9 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=332 x=446 y=204 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 +char id=333 x=368 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=334 x=176 y=86 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=335 x=144 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=336 x=112 y=86 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=337 x=132 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=338 x=42 y=297 width=19 height=15 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=339 x=438 y=500 width=18 height=11 xoffset=1 yoffset=8 xadvance=20 page=0 chnl=15 +char id=340 x=14 y=148 width=12 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 +char id=341 x=203 y=16 width=6 height=15 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 +char id=342 x=220 y=24 width=12 height=20 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 +char id=343 x=271 y=260 width=6 height=16 xoffset=1 yoffset=8 xadvance=7 page=0 chnl=15 +char id=344 x=28 y=148 width=12 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 +char id=345 x=502 y=0 width=8 height=15 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=346 x=42 y=148 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=347 x=297 y=487 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=348 x=56 y=148 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=349 x=286 y=487 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=350 x=465 y=124 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=351 x=275 y=487 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=352 x=70 y=148 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=353 x=220 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=354 x=84 y=148 width=12 height=19 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=355 x=355 y=185 width=6 height=19 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15 +char id=356 x=98 y=148 width=12 height=19 xoffset=0 yoffset=0 xadvance=12 page=0 chnl=15 +char id=357 x=38 y=16 width=7 height=15 xoffset=1 yoffset=4 xadvance=8 page=1 chnl=15 +char id=358 x=126 y=409 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=359 x=251 y=16 width=5 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 +char id=360 x=112 y=148 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=361 x=198 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=362 x=148 y=226 width=12 height=18 xoffset=1 yoffset=1 xadvance=14 page=0 chnl=15 +char id=363 x=55 y=47 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 +char id=364 x=126 y=147 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=365 x=187 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=366 x=140 y=146 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=367 x=208 y=244 width=9 height=17 xoffset=1 yoffset=2 xadvance=11 page=0 chnl=15 +char id=368 x=154 y=146 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=369 x=165 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=370 x=168 y=146 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=371 x=154 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=372 x=213 y=45 width=21 height=19 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15 +char id=373 x=96 y=313 width=17 height=15 xoffset=-1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=374 x=192 y=86 width=14 height=19 xoffset=0 yoffset=0 xadvance=14 page=0 chnl=15 +char id=375 x=279 y=165 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=376 x=270 y=205 width=14 height=18 xoffset=0 yoffset=1 xadvance=14 page=0 chnl=15 +char id=377 x=182 y=146 width=12 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=378 x=36 y=473 width=10 height=15 xoffset=0 yoffset=4 xadvance=9 page=0 chnl=15 +char id=379 x=134 y=227 width=12 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 +char id=380 x=272 y=32 width=10 height=14 xoffset=0 yoffset=5 xadvance=9 page=1 chnl=15 +char id=381 x=196 y=146 width=12 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=382 x=36 y=457 width=10 height=15 xoffset=0 yoffset=4 xadvance=9 page=0 chnl=15 +char id=383 x=286 y=16 width=5 height=15 xoffset=1 yoffset=4 xadvance=5 page=1 chnl=15 +char id=384 x=156 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=385 x=289 y=342 width=15 height=15 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 +char id=386 x=182 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=387 x=264 y=0 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=1 chnl=15 +char id=388 x=263 y=375 width=13 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=389 x=473 y=435 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=390 x=278 y=374 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=391 x=76 y=246 width=15 height=17 xoffset=1 yoffset=2 xadvance=15 page=0 chnl=15 +char id=392 x=311 y=47 width=12 height=13 xoffset=1 yoffset=6 xadvance=11 page=1 chnl=15 +char id=393 x=336 y=357 width=14 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 +char id=394 x=485 y=307 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=395 x=299 y=422 width=11 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=396 x=0 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=397 x=336 y=454 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=398 x=416 y=420 width=11 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=399 x=256 y=359 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=400 x=468 y=419 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 +char id=401 x=210 y=146 width=12 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=402 x=224 y=145 width=12 height=19 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=403 x=58 y=246 width=16 height=17 xoffset=1 yoffset=2 xadvance=16 page=0 chnl=15 +char id=404 x=255 y=105 width=13 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=405 x=172 y=312 width=17 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 +char id=406 x=386 y=16 width=2 height=15 xoffset=1 yoffset=4 xadvance=5 page=1 chnl=15 +char id=407 x=131 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 +char id=408 x=0 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=409 x=0 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=410 x=318 y=16 width=4 height=15 xoffset=0 yoffset=4 xadvance=5 page=1 chnl=15 +char id=411 x=52 y=441 width=11 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=412 x=144 y=329 width=16 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 +char id=413 x=419 y=64 width=15 height=19 xoffset=-1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=414 x=66 y=489 width=9 height=15 xoffset=2 yoffset=8 xadvance=12 page=0 chnl=15 +char id=415 x=352 y=357 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=416 x=162 y=329 width=16 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 +char id=417 x=74 y=74 width=12 height=11 xoffset=1 yoffset=8 xadvance=14 page=1 chnl=15 +char id=418 x=436 y=64 width=15 height=19 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 +char id=419 x=140 y=409 width=12 height=15 xoffset=1 yoffset=8 xadvance=14 page=0 chnl=15 +char id=420 x=153 y=345 width=15 height=15 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 +char id=421 x=22 y=188 width=9 height=19 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 +char id=422 x=90 y=108 width=13 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=423 x=154 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=424 x=361 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=425 x=48 y=457 width=10 height=15 xoffset=2 yoffset=4 xadvance=13 page=0 chnl=15 +char id=426 x=295 y=185 width=7 height=19 xoffset=1 yoffset=4 xadvance=8 page=0 chnl=15 +char id=427 x=427 y=184 width=5 height=19 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15 +char id=428 x=218 y=375 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=429 x=211 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 +char id=430 x=238 y=145 width=12 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=431 x=216 y=327 width=16 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 +char id=432 x=102 y=74 width=12 height=11 xoffset=1 yoffset=8 xadvance=14 page=1 chnl=15 +char id=433 x=464 y=355 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=434 x=168 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=435 x=450 y=323 width=16 height=15 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 +char id=436 x=351 y=64 width=15 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=437 x=247 y=423 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 +char id=438 x=493 y=82 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=439 x=498 y=43 width=12 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=440 x=45 y=128 width=12 height=19 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 +char id=441 x=110 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=442 x=121 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=443 x=300 y=454 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=444 x=468 y=451 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=445 x=105 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 +char id=446 x=418 y=484 width=9 height=15 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15 +char id=447 x=192 y=473 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=448 x=402 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=5 page=1 chnl=15 +char id=449 x=139 y=16 width=6 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 +char id=450 x=276 y=471 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=451 x=370 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 +char id=452 x=113 y=46 width=25 height=19 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=15 +char id=453 x=391 y=259 width=23 height=15 xoffset=2 yoffset=4 xadvance=26 page=0 chnl=15 +char id=454 x=46 y=281 width=21 height=15 xoffset=1 yoffset=4 xadvance=22 page=0 chnl=15 +char id=455 x=487 y=291 width=18 height=15 xoffset=2 yoffset=4 xadvance=22 page=0 chnl=15 +char id=456 x=469 y=64 width=14 height=19 xoffset=2 yoffset=4 xadvance=18 page=0 chnl=15 +char id=457 x=268 y=185 width=7 height=19 xoffset=1 yoffset=4 xadvance=9 page=0 chnl=15 +char id=458 x=366 y=260 width=23 height=15 xoffset=1 yoffset=4 xadvance=26 page=0 chnl=15 +char id=459 x=100 y=66 width=17 height=19 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 +char id=460 x=453 y=64 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=461 x=165 y=106 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=462 x=396 y=469 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=463 x=219 y=186 width=8 height=19 xoffset=-1 yoffset=0 xadvance=6 page=0 chnl=15 +char id=464 x=492 y=0 width=8 height=15 xoffset=-2 yoffset=4 xadvance=5 page=1 chnl=15 +char id=465 x=464 y=84 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=466 x=492 y=451 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=467 x=73 y=128 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=468 x=209 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=469 x=101 y=128 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=470 x=435 y=223 width=9 height=18 xoffset=1 yoffset=1 xadvance=11 page=0 chnl=15 +char id=471 x=409 y=124 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=472 x=33 y=188 width=9 height=19 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 +char id=473 x=115 y=127 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=474 x=11 y=188 width=9 height=19 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 +char id=475 x=129 y=126 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=476 x=484 y=164 width=9 height=19 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 +char id=477 x=132 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=478 x=240 y=105 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=479 x=399 y=223 width=10 height=18 xoffset=1 yoffset=1 xadvance=12 page=0 chnl=15 +char id=480 x=270 y=105 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=481 x=423 y=223 width=10 height=18 xoffset=1 yoffset=1 xadvance=12 page=0 chnl=15 +char id=482 x=28 y=208 width=21 height=18 xoffset=-1 yoffset=1 xadvance=21 page=0 chnl=15 +char id=483 x=430 y=16 width=17 height=14 xoffset=1 yoffset=5 xadvance=19 page=1 chnl=15 +char id=484 x=221 y=343 width=15 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=485 x=0 y=425 width=11 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=486 x=416 y=84 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=487 x=407 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=488 x=185 y=126 width=12 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 +char id=489 x=396 y=164 width=9 height=19 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15 +char id=490 x=336 y=84 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=491 x=432 y=452 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=492 x=437 y=0 width=14 height=22 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 +char id=493 x=327 y=224 width=10 height=18 xoffset=1 yoffset=5 xadvance=12 page=0 chnl=15 +char id=494 x=234 y=0 width=12 height=23 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=495 x=495 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=496 x=179 y=186 width=8 height=19 xoffset=-1 yoffset=4 xadvance=5 page=0 chnl=15 +char id=497 x=339 y=260 width=25 height=15 xoffset=2 yoffset=4 xadvance=28 page=0 chnl=15 +char id=498 x=416 y=259 width=23 height=15 xoffset=2 yoffset=4 xadvance=26 page=0 chnl=15 +char id=499 x=465 y=259 width=21 height=15 xoffset=1 yoffset=4 xadvance=22 page=0 chnl=15 +char id=500 x=224 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=501 x=374 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=502 x=337 y=276 width=20 height=15 xoffset=1 yoffset=4 xadvance=22 page=0 chnl=15 +char id=503 x=265 y=145 width=11 height=19 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 +char id=504 x=227 y=125 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=505 x=308 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=506 x=360 y=104 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=507 x=171 y=166 width=10 height=19 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15 +char id=508 x=236 y=45 width=21 height=19 xoffset=-1 yoffset=0 xadvance=21 page=0 chnl=15 +char id=509 x=39 y=313 width=17 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 +char id=510 x=76 y=25 width=14 height=20 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=511 x=48 y=264 width=10 height=16 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=512 x=420 y=104 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=513 x=408 y=452 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=514 x=450 y=104 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=515 x=396 y=453 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=516 x=304 y=145 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 +char id=517 x=456 y=468 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=518 x=291 y=145 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 +char id=519 x=432 y=468 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=520 x=379 y=184 width=6 height=19 xoffset=-1 yoffset=0 xadvance=6 page=0 chnl=15 +char id=521 x=187 y=16 width=6 height=15 xoffset=-1 yoffset=4 xadvance=6 page=1 chnl=15 +char id=522 x=331 y=185 width=6 height=19 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 +char id=523 x=179 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 +char id=524 x=80 y=88 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=525 x=264 y=471 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=526 x=96 y=87 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=527 x=204 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=528 x=143 y=126 width=12 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 +char id=529 x=29 y=16 width=7 height=15 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=530 x=171 y=126 width=12 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 +char id=531 x=171 y=16 width=6 height=15 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 +char id=532 x=199 y=126 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=533 x=121 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=534 x=213 y=125 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=535 x=352 y=485 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=536 x=234 y=24 width=12 height=20 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=537 x=119 y=264 width=9 height=16 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=538 x=248 y=24 width=12 height=20 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=539 x=64 y=46 width=5 height=20 xoffset=1 yoffset=4 xadvance=6 page=0 chnl=15 +char id=540 x=123 y=168 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=541 x=502 y=323 width=8 height=15 xoffset=0 yoffset=8 xadvance=9 page=0 chnl=15 +char id=542 x=241 y=125 width=12 height=19 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15 +char id=543 x=88 y=188 width=9 height=19 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 +char id=544 x=343 y=145 width=11 height=19 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 +char id=545 x=390 y=104 width=13 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=546 x=338 y=421 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 +char id=547 x=108 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=548 x=169 y=244 width=12 height=17 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=549 x=390 y=47 width=10 height=13 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=550 x=492 y=204 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 +char id=551 x=428 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=552 x=278 y=145 width=11 height=19 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=553 x=276 y=455 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=554 x=304 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=555 x=339 y=224 width=10 height=18 xoffset=1 yoffset=1 xadvance=12 page=0 chnl=15 +char id=556 x=320 y=85 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=557 x=315 y=224 width=10 height=18 xoffset=1 yoffset=1 xadvance=12 page=0 chnl=15 +char id=558 x=302 y=205 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 +char id=559 x=416 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=560 x=384 y=84 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=561 x=279 y=224 width=10 height=18 xoffset=1 yoffset=1 xadvance=12 page=0 chnl=15 +char id=562 x=334 y=205 width=14 height=18 xoffset=0 yoffset=1 xadvance=14 page=0 chnl=15 +char id=563 x=411 y=223 width=10 height=18 xoffset=0 yoffset=5 xadvance=11 page=0 chnl=15 +char id=564 x=99 y=188 width=8 height=19 xoffset=-1 yoffset=4 xadvance=7 page=0 chnl=15 +char id=565 x=488 y=371 width=13 height=15 xoffset=1 yoffset=8 xadvance=14 page=0 chnl=15 +char id=566 x=422 y=0 width=8 height=15 xoffset=0 yoffset=4 xadvance=8 page=1 chnl=15 +char id=567 x=336 y=16 width=4 height=15 xoffset=0 yoffset=8 xadvance=5 page=1 chnl=15 +char id=568 x=327 y=292 width=18 height=15 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 +char id=569 x=307 y=293 width=18 height=15 xoffset=0 yoffset=8 xadvance=19 page=0 chnl=15 +char id=570 x=109 y=246 width=14 height=17 xoffset=0 yoffset=3 xadvance=14 page=0 chnl=15 +char id=571 x=125 y=246 width=13 height=17 xoffset=1 yoffset=3 xadvance=15 page=0 chnl=15 +char id=572 x=39 y=168 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=573 x=384 y=469 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=574 x=155 y=245 width=12 height=17 xoffset=0 yoffset=3 xadvance=13 page=0 chnl=15 +char id=575 x=132 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=576 x=288 y=455 width=10 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=577 x=351 y=421 width=11 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=578 x=115 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 +char id=579 x=182 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=580 x=293 y=374 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=581 x=238 y=343 width=15 height=15 xoffset=-1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=582 x=183 y=244 width=11 height=17 xoffset=2 yoffset=3 xadvance=14 page=0 chnl=15 +char id=583 x=51 y=168 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=584 x=413 y=436 width=10 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=585 x=403 y=184 width=6 height=19 xoffset=-2 yoffset=4 xadvance=5 page=0 chnl=15 +char id=586 x=402 y=64 width=15 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=587 x=196 y=409 width=12 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=588 x=255 y=343 width=15 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 +char id=589 x=165 y=98 width=7 height=11 xoffset=0 yoffset=8 xadvance=7 page=1 chnl=15 +char id=590 x=224 y=359 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=591 x=372 y=453 width=10 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 +char id=592 x=248 y=73 width=11 height=11 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 +char id=593 x=11 y=98 width=9 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=594 x=22 y=98 width=9 height=11 xoffset=2 yoffset=8 xadvance=12 page=1 chnl=15 +char id=595 x=11 y=489 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 +char id=596 x=33 y=98 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=597 x=474 y=46 width=9 height=12 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=598 x=434 y=144 width=11 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=599 x=210 y=408 width=12 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=600 x=397 y=73 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=601 x=409 y=73 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=602 x=201 y=61 width=15 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 +char id=603 x=155 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 +char id=604 x=145 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 +char id=605 x=60 y=74 width=12 height=11 xoffset=1 yoffset=8 xadvance=13 page=1 chnl=15 +char id=606 x=460 y=84 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=607 x=503 y=403 width=7 height=15 xoffset=-1 yoffset=8 xadvance=6 page=0 chnl=15 +char id=608 x=405 y=104 width=13 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=609 x=143 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=610 x=120 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=611 x=234 y=423 width=11 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 +char id=612 x=0 y=74 width=13 height=11 xoffset=0 yoffset=8 xadvance=13 page=1 chnl=15 +char id=613 x=264 y=487 width=9 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=614 x=253 y=487 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 +char id=615 x=44 y=188 width=9 height=19 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 +char id=616 x=330 y=16 width=4 height=15 xoffset=1 yoffset=4 xadvance=5 page=1 chnl=15 +char id=617 x=505 y=46 width=4 height=11 xoffset=1 yoffset=8 xadvance=5 page=1 chnl=15 +char id=618 x=209 y=98 width=6 height=11 xoffset=1 yoffset=8 xadvance=7 page=1 chnl=15 +char id=619 x=47 y=16 width=7 height=15 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=620 x=227 y=16 width=6 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 +char id=621 x=506 y=164 width=4 height=19 xoffset=1 yoffset=4 xadvance=5 page=0 chnl=15 +char id=622 x=351 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=623 x=149 y=62 width=16 height=11 xoffset=1 yoffset=8 xadvance=18 page=1 chnl=15 +char id=624 x=72 y=329 width=16 height=15 xoffset=1 yoffset=8 xadvance=18 page=0 chnl=15 +char id=625 x=36 y=329 width=16 height=15 xoffset=1 yoffset=8 xadvance=18 page=0 chnl=15 +char id=626 x=156 y=441 width=11 height=15 xoffset=0 yoffset=8 xadvance=12 page=0 chnl=15 +char id=627 x=273 y=423 width=11 height=15 xoffset=2 yoffset=8 xadvance=12 page=0 chnl=15 +char id=628 x=469 y=72 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=629 x=192 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=630 x=218 y=61 width=15 height=11 xoffset=1 yoffset=8 xadvance=17 page=1 chnl=15 +char id=631 x=380 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 +char id=632 x=231 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=633 x=225 y=97 width=6 height=11 xoffset=0 yoffset=8 xadvance=7 page=1 chnl=15 +char id=634 x=504 y=467 width=6 height=15 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15 +char id=635 x=0 y=16 width=8 height=15 xoffset=0 yoffset=8 xadvance=7 page=1 chnl=15 +char id=636 x=83 y=16 width=6 height=15 xoffset=1 yoffset=8 xadvance=7 page=1 chnl=15 +char id=637 x=91 y=16 width=6 height=15 xoffset=1 yoffset=8 xadvance=7 page=1 chnl=15 +char id=638 x=233 y=97 width=6 height=11 xoffset=1 yoffset=8 xadvance=7 page=1 chnl=15 +char id=639 x=115 y=16 width=6 height=15 xoffset=0 yoffset=8 xadvance=7 page=1 chnl=15 +char id=640 x=60 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=641 x=48 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=642 x=110 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=643 x=371 y=184 width=6 height=19 xoffset=-1 yoffset=4 xadvance=5 page=0 chnl=15 +char id=644 x=363 y=184 width=6 height=19 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15 +char id=645 x=123 y=16 width=6 height=15 xoffset=-1 yoffset=8 xadvance=5 page=1 chnl=15 +char id=646 x=209 y=186 width=8 height=19 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15 +char id=647 x=258 y=16 width=5 height=15 xoffset=0 yoffset=4 xadvance=6 page=1 chnl=15 +char id=648 x=434 y=184 width=5 height=19 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15 +char id=649 x=222 y=73 width=11 height=11 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 +char id=650 x=493 y=70 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=651 x=328 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=652 x=209 y=73 width=11 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 +char id=653 x=167 y=62 width=15 height=11 xoffset=0 yoffset=8 xadvance=15 page=1 chnl=15 +char id=654 x=390 y=420 width=11 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=655 x=196 y=74 width=11 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 +char id=656 x=364 y=421 width=11 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=657 x=438 y=46 width=9 height=13 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=658 x=253 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=659 x=348 y=469 width=10 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=660 x=336 y=470 width=10 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=661 x=300 y=470 width=10 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=662 x=288 y=471 width=10 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=663 x=209 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=664 x=272 y=358 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=665 x=427 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=666 x=416 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=667 x=282 y=47 width=13 height=13 xoffset=1 yoffset=6 xadvance=12 page=1 chnl=15 +char id=668 x=405 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=669 x=159 y=186 width=8 height=19 xoffset=0 yoffset=4 xadvance=8 page=0 chnl=15 +char id=670 x=252 y=471 width=10 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 +char id=671 x=504 y=82 width=6 height=11 xoffset=1 yoffset=8 xadvance=8 page=1 chnl=15 +char id=672 x=423 y=124 width=12 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=673 x=180 y=473 width=10 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=674 x=156 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=675 x=467 y=291 width=18 height=15 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 +char id=676 x=81 y=67 width=17 height=19 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 +char id=677 x=0 y=246 width=19 height=17 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=678 x=165 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=679 x=159 y=166 width=10 height=19 xoffset=0 yoffset=4 xadvance=9 page=0 chnl=15 +char id=680 x=476 y=339 width=14 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 +char id=681 x=283 y=65 width=15 height=19 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 +char id=682 x=348 y=389 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=683 x=78 y=425 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 +char id=684 x=108 y=473 width=10 height=15 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15 +char id=685 x=231 y=488 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=686 x=60 y=393 width=13 height=15 xoffset=0 yoffset=8 xadvance=14 page=0 chnl=15 +char id=687 x=286 y=310 width=17 height=15 xoffset=0 yoffset=8 xadvance=14 page=0 chnl=15 +char id=688 x=330 y=97 width=6 height=10 xoffset=1 yoffset=4 xadvance=8 page=1 chnl=15 +char id=689 x=298 y=97 width=6 height=10 xoffset=1 yoffset=4 xadvance=8 page=1 chnl=15 +char id=690 x=469 y=46 width=3 height=13 xoffset=-1 yoffset=4 xadvance=3 page=1 chnl=15 +char id=691 x=257 y=108 width=4 height=7 xoffset=1 yoffset=7 xadvance=5 page=1 chnl=15 +char id=692 x=245 y=109 width=4 height=7 xoffset=0 yoffset=7 xadvance=5 page=1 chnl=15 +char id=693 x=354 y=97 width=6 height=10 xoffset=0 yoffset=7 xadvance=5 page=1 chnl=15 +char id=694 x=167 y=110 width=6 height=7 xoffset=1 yoffset=7 xadvance=8 page=1 chnl=15 +char id=695 x=75 y=110 width=10 height=7 xoffset=0 yoffset=7 xadvance=10 page=1 chnl=15 +char id=696 x=280 y=97 width=7 height=10 xoffset=0 yoffset=7 xadvance=7 page=1 chnl=15 +char id=697 x=219 y=505 width=2 height=5 xoffset=1 yoffset=4 xadvance=4 page=0 chnl=15 +char id=698 x=141 y=505 width=6 height=5 xoffset=1 yoffset=4 xadvance=7 page=0 chnl=15 +char id=699 x=227 y=505 width=2 height=5 xoffset=1 yoffset=4 xadvance=5 page=0 chnl=15 +char id=700 x=263 y=108 width=2 height=5 xoffset=1 yoffset=4 xadvance=5 page=1 chnl=15 +char id=701 x=348 y=502 width=2 height=5 xoffset=1 yoffset=4 xadvance=5 page=0 chnl=15 +char id=702 x=30 y=118 width=2 height=4 xoffset=3 yoffset=3 xadvance=7 page=1 chnl=15 +char id=703 x=26 y=118 width=2 height=4 xoffset=2 yoffset=3 xadvance=7 page=1 chnl=15 +char id=704 x=346 y=97 width=6 height=10 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=705 x=338 y=97 width=6 height=10 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 +char id=706 x=156 y=86 width=10 height=11 xoffset=1 yoffset=6 xadvance=12 page=1 chnl=15 +char id=707 x=144 y=86 width=10 height=11 xoffset=1 yoffset=6 xadvance=12 page=1 chnl=15 +char id=708 x=183 y=74 width=11 height=11 xoffset=0 yoffset=6 xadvance=12 page=1 chnl=15 +char id=709 x=170 y=74 width=11 height=11 xoffset=0 yoffset=6 xadvance=12 page=1 chnl=15 +char id=710 x=164 y=118 width=8 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=711 x=154 y=118 width=8 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=712 x=509 y=33 width=1 height=3 xoffset=3 yoffset=4 xadvance=7 page=0 chnl=15 +char id=713 x=268 y=120 width=6 height=2 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=714 x=486 y=110 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=715 x=481 y=110 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=716 x=509 y=37 width=1 height=3 xoffset=3 yoffset=20 xadvance=7 page=0 chnl=15 +char id=717 x=209 y=122 width=7 height=2 xoffset=0 yoffset=21 xadvance=7 page=1 chnl=15 +char id=718 x=476 y=110 width=3 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 +char id=719 x=471 y=110 width=3 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 +char id=720 x=505 y=70 width=3 height=11 xoffset=1 yoffset=8 xadvance=6 page=1 chnl=15 +char id=721 x=316 y=117 width=3 height=2 xoffset=1 yoffset=8 xadvance=6 page=1 chnl=15 +char id=722 x=22 y=118 width=2 height=4 xoffset=3 yoffset=14 xadvance=7 page=1 chnl=15 +char id=723 x=414 y=507 width=2 height=4 xoffset=2 yoffset=14 xadvance=7 page=0 chnl=15 +char id=724 x=456 y=110 width=3 height=3 xoffset=2 yoffset=14 xadvance=7 page=1 chnl=15 +char id=725 x=451 y=110 width=3 height=3 xoffset=2 yoffset=14 xadvance=7 page=1 chnl=15 +char id=726 x=446 y=110 width=3 height=3 xoffset=2 yoffset=14 xadvance=7 page=1 chnl=15 +char id=727 x=218 y=122 width=7 height=2 xoffset=0 yoffset=14 xadvance=7 page=1 chnl=15 +char id=728 x=355 y=113 width=6 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=729 x=341 y=117 width=2 height=2 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=730 x=201 y=505 width=5 height=5 xoffset=2 yoffset=4 xadvance=7 page=0 chnl=15 +char id=731 x=485 y=105 width=3 height=4 xoffset=1 yoffset=19 xadvance=7 page=1 chnl=15 +char id=732 x=261 y=116 width=7 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=733 x=331 y=113 width=6 height=3 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 +char id=734 x=401 y=106 width=6 height=4 xoffset=-1 yoffset=11 xadvance=7 page=1 chnl=15 +char id=735 x=87 y=110 width=7 height=7 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=736 x=289 y=97 width=7 height=10 xoffset=0 yoffset=7 xadvance=7 page=1 chnl=15 +char id=737 x=509 y=22 width=1 height=10 xoffset=1 yoffset=4 xadvance=3 page=0 chnl=15 +char id=738 x=238 y=109 width=5 height=7 xoffset=1 yoffset=7 xadvance=7 page=1 chnl=15 +char id=739 x=96 y=110 width=7 height=7 xoffset=0 yoffset=7 xadvance=7 page=1 chnl=15 +char id=740 x=306 y=97 width=6 height=10 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 +char id=741 x=324 y=16 width=4 height=15 xoffset=2 yoffset=4 xadvance=8 page=1 chnl=15 +char id=742 x=306 y=16 width=4 height=15 xoffset=2 yoffset=4 xadvance=8 page=1 chnl=15 +char id=743 x=342 y=16 width=4 height=15 xoffset=2 yoffset=4 xadvance=8 page=1 chnl=15 +char id=744 x=312 y=16 width=4 height=15 xoffset=2 yoffset=4 xadvance=8 page=1 chnl=15 +char id=745 x=506 y=483 width=4 height=15 xoffset=2 yoffset=4 xadvance=8 page=0 chnl=15 +char id=746 x=341 y=502 width=5 height=9 xoffset=1 yoffset=10 xadvance=7 page=0 chnl=15 +char id=747 x=367 y=97 width=5 height=9 xoffset=1 yoffset=10 xadvance=7 page=1 chnl=15 +char id=748 x=204 y=118 width=8 height=3 xoffset=0 yoffset=20 xadvance=7 page=1 chnl=15 +char id=749 x=115 y=505 width=7 height=5 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15 +char id=750 x=187 y=505 width=5 height=5 xoffset=1 yoffset=4 xadvance=7 page=0 chnl=15 +char id=751 x=403 y=111 width=4 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 +char id=752 x=409 y=111 width=4 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 +char id=753 x=495 y=103 width=3 height=4 xoffset=2 yoffset=19 xadvance=7 page=1 chnl=15 +char id=754 x=0 y=119 width=3 height=4 xoffset=2 yoffset=19 xadvance=7 page=1 chnl=15 +char id=755 x=462 y=105 width=4 height=4 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 +char id=756 x=65 y=122 width=3 height=3 xoffset=2 yoffset=14 xadvance=7 page=1 chnl=15 +char id=757 x=363 y=113 width=6 height=3 xoffset=0 yoffset=14 xadvance=7 page=1 chnl=15 +char id=758 x=379 y=112 width=6 height=3 xoffset=1 yoffset=14 xadvance=7 page=1 chnl=15 +char id=759 x=279 y=113 width=7 height=3 xoffset=0 yoffset=20 xadvance=7 page=1 chnl=15 +char id=760 x=245 y=97 width=2 height=11 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 +char id=761 x=60 y=122 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=762 x=55 y=122 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=763 x=50 y=122 width=3 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 +char id=764 x=45 y=122 width=3 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 +char id=765 x=373 y=107 width=8 height=4 xoffset=0 yoffset=19 xadvance=8 page=1 chnl=15 +char id=766 x=363 y=108 width=8 height=4 xoffset=0 yoffset=19 xadvance=8 page=1 chnl=15 +char id=767 x=165 y=505 width=6 height=5 xoffset=1 yoffset=18 xadvance=7 page=0 chnl=15 +char id=768 x=40 y=122 width=3 height=3 xoffset=-5 yoffset=0 xadvance=0 page=1 chnl=15 +char id=769 x=35 y=122 width=3 height=3 xoffset=-3 yoffset=0 xadvance=0 page=1 chnl=15 +char id=770 x=144 y=118 width=8 height=3 xoffset=-4 yoffset=4 xadvance=0 page=1 chnl=15 +char id=771 x=190 y=122 width=8 height=2 xoffset=-10 yoffset=1 xadvance=0 page=1 chnl=15 +char id=772 x=276 y=117 width=6 height=2 xoffset=-3 yoffset=5 xadvance=0 page=1 chnl=15 +char id=773 x=150 y=122 width=12 height=2 xoffset=-6 yoffset=1 xadvance=0 page=1 chnl=15 +char id=774 x=371 y=113 width=6 height=3 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 +char id=775 x=509 y=184 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=776 x=260 y=121 width=6 height=2 xoffset=-3 yoffset=5 xadvance=0 page=1 chnl=15 +char id=777 x=415 y=111 width=4 height=3 xoffset=-4 yoffset=0 xadvance=0 page=1 chnl=15 +char id=778 x=180 y=505 width=5 height=5 xoffset=-2 yoffset=2 xadvance=0 page=0 chnl=15 +char id=779 x=395 y=111 width=6 height=3 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 +char id=780 x=184 y=118 width=8 height=3 xoffset=-4 yoffset=4 xadvance=0 page=1 chnl=15 +char id=781 x=509 y=445 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=782 x=25 y=123 width=3 height=3 xoffset=-1 yoffset=4 xadvance=0 page=1 chnl=15 +char id=783 x=315 y=113 width=6 height=3 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 +char id=784 x=149 y=505 width=6 height=5 xoffset=-3 yoffset=2 xadvance=0 page=0 chnl=15 +char id=785 x=347 y=113 width=6 height=3 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 +char id=786 x=348 y=117 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=1 chnl=15 +char id=787 x=509 y=449 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=788 x=345 y=117 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=1 chnl=15 +char id=789 x=249 y=504 width=2 height=5 xoffset=0 yoffset=4 xadvance=0 page=0 chnl=15 +char id=790 x=20 y=124 width=3 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 +char id=791 x=15 y=124 width=3 height=3 xoffset=-1 yoffset=20 xadvance=0 page=1 chnl=15 +char id=792 x=10 y=124 width=3 height=3 xoffset=-1 yoffset=20 xadvance=0 page=1 chnl=15 +char id=793 x=5 y=124 width=3 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 +char id=794 x=105 y=505 width=8 height=5 xoffset=-4 yoffset=2 xadvance=0 page=0 chnl=15 +char id=795 x=214 y=505 width=3 height=5 xoffset=0 yoffset=4 xadvance=0 page=0 chnl=15 +char id=796 x=249 y=510 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=797 x=496 y=108 width=3 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 +char id=798 x=0 y=124 width=3 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 +char id=799 x=506 y=108 width=3 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 +char id=800 x=284 y=117 width=6 height=2 xoffset=-3 yoffset=21 xadvance=0 page=1 chnl=15 +char id=801 x=70 y=505 width=4 height=6 xoffset=-2 yoffset=17 xadvance=0 page=0 chnl=15 +char id=802 x=76 y=505 width=4 height=6 xoffset=0 yoffset=17 xadvance=0 page=0 chnl=15 +char id=803 x=321 y=117 width=2 height=2 xoffset=-8 yoffset=20 xadvance=0 page=1 chnl=15 +char id=804 x=244 y=121 width=6 height=2 xoffset=-3 yoffset=21 xadvance=0 page=1 chnl=15 +char id=805 x=474 y=105 width=4 height=4 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 +char id=806 x=354 y=117 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=1 chnl=15 +char id=807 x=441 y=105 width=5 height=4 xoffset=-3 yoffset=19 xadvance=0 page=1 chnl=15 +char id=808 x=5 y=119 width=3 height=4 xoffset=-1 yoffset=19 xadvance=0 page=1 chnl=15 +char id=809 x=509 y=437 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=810 x=353 y=108 width=8 height=4 xoffset=-4 yoffset=20 xadvance=0 page=1 chnl=15 +char id=811 x=200 y=122 width=7 height=2 xoffset=-3 yoffset=20 xadvance=0 page=1 chnl=15 +char id=812 x=224 y=117 width=8 height=3 xoffset=-4 yoffset=20 xadvance=0 page=1 chnl=15 +char id=813 x=194 y=118 width=8 height=3 xoffset=-4 yoffset=20 xadvance=0 page=1 chnl=15 +char id=814 x=387 y=111 width=6 height=3 xoffset=-3 yoffset=20 xadvance=0 page=1 chnl=15 +char id=815 x=339 y=113 width=6 height=3 xoffset=-3 yoffset=20 xadvance=0 page=1 chnl=15 +char id=816 x=306 y=113 width=7 height=3 xoffset=-4 yoffset=20 xadvance=0 page=1 chnl=15 +char id=817 x=292 y=117 width=6 height=2 xoffset=-3 yoffset=21 xadvance=0 page=1 chnl=15 +char id=818 x=136 y=122 width=12 height=2 xoffset=-6 yoffset=21 xadvance=0 page=1 chnl=15 +char id=819 x=323 y=113 width=6 height=3 xoffset=-3 yoffset=21 xadvance=0 page=1 chnl=15 +char id=820 x=252 y=117 width=7 height=3 xoffset=-4 yoffset=14 xadvance=0 page=1 chnl=15 +char id=821 x=236 y=121 width=6 height=2 xoffset=-3 yoffset=14 xadvance=0 page=1 chnl=15 +char id=822 x=108 y=122 width=12 height=2 xoffset=-6 yoffset=14 xadvance=0 page=1 chnl=15 +char id=823 x=361 y=73 width=10 height=11 xoffset=-5 yoffset=8 xadvance=0 page=1 chnl=15 +char id=824 x=504 y=451 width=6 height=15 xoffset=-3 yoffset=4 xadvance=0 page=0 chnl=15 +char id=825 x=351 y=117 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=1 chnl=15 +char id=826 x=343 y=108 width=8 height=4 xoffset=-4 yoffset=19 xadvance=0 page=1 chnl=15 +char id=827 x=468 y=105 width=4 height=4 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 +char id=828 x=227 y=121 width=7 height=2 xoffset=-3 yoffset=20 xadvance=0 page=1 chnl=15 +char id=829 x=173 y=505 width=5 height=5 xoffset=-2 yoffset=2 xadvance=0 page=0 chnl=15 +char id=830 x=508 y=237 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=831 x=85 y=118 width=12 height=3 xoffset=-6 yoffset=0 xadvance=0 page=1 chnl=15 +char id=832 x=466 y=110 width=3 height=3 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 +char id=833 x=461 y=110 width=3 height=3 xoffset=0 yoffset=4 xadvance=0 page=1 chnl=15 +char id=834 x=270 y=113 width=7 height=3 xoffset=-4 yoffset=4 xadvance=0 page=1 chnl=15 +char id=835 x=508 y=239 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=836 x=214 y=118 width=8 height=3 xoffset=-4 yoffset=4 xadvance=0 page=1 chnl=15 +char id=837 x=509 y=435 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=838 x=333 y=108 width=8 height=4 xoffset=-4 yoffset=3 xadvance=0 page=1 chnl=15 +char id=839 x=112 y=118 width=10 height=3 xoffset=-5 yoffset=21 xadvance=0 page=1 chnl=15 +char id=840 x=436 y=111 width=3 height=3 xoffset=-1 yoffset=20 xadvance=0 page=1 chnl=15 +char id=841 x=431 y=111 width=3 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 +char id=842 x=124 y=505 width=7 height=5 xoffset=-3 yoffset=3 xadvance=0 page=0 chnl=15 +char id=843 x=114 y=110 width=7 height=7 xoffset=-3 yoffset=0 xadvance=0 page=1 chnl=15 +char id=844 x=31 y=505 width=7 height=6 xoffset=-3 yoffset=1 xadvance=0 page=0 chnl=15 +char id=845 x=243 y=117 width=7 height=3 xoffset=-3 yoffset=20 xadvance=0 page=1 chnl=15 +char id=846 x=490 y=105 width=3 height=4 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 +char id=847 x=64 y=32 width=14 height=14 xoffset=-7 yoffset=5 xadvance=0 page=1 chnl=15 +char id=848 x=480 y=105 width=3 height=4 xoffset=-1 yoffset=3 xadvance=0 page=1 chnl=15 +char id=849 x=357 y=117 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=1 chnl=15 +char id=850 x=157 y=505 width=6 height=5 xoffset=-3 yoffset=2 xadvance=0 page=0 chnl=15 +char id=851 x=194 y=505 width=5 height=5 xoffset=-2 yoffset=19 xadvance=0 page=0 chnl=15 +char id=852 x=505 y=103 width=3 height=4 xoffset=-1 yoffset=19 xadvance=0 page=1 chnl=15 +char id=853 x=500 y=103 width=3 height=4 xoffset=-1 yoffset=19 xadvance=0 page=1 chnl=15 +char id=854 x=392 y=106 width=7 height=4 xoffset=-3 yoffset=19 xadvance=0 page=1 chnl=15 +char id=855 x=509 y=439 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=856 x=509 y=447 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=857 x=455 y=105 width=5 height=4 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 +char id=858 x=383 y=106 width=7 height=4 xoffset=-3 yoffset=20 xadvance=0 page=1 chnl=15 +char id=859 x=208 y=505 width=4 height=5 xoffset=-2 yoffset=2 xadvance=0 page=0 chnl=15 +char id=860 x=303 y=108 width=16 height=4 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 +char id=861 x=285 y=108 width=16 height=4 xoffset=-2 yoffset=3 xadvance=0 page=1 chnl=15 +char id=862 x=122 y=122 width=12 height=2 xoffset=-2 yoffset=4 xadvance=0 page=1 chnl=15 +char id=863 x=164 y=122 width=12 height=2 xoffset=-2 yoffset=21 xadvance=0 page=1 chnl=15 +char id=864 x=34 y=118 width=16 height=3 xoffset=-1 yoffset=4 xadvance=0 page=1 chnl=15 +char id=865 x=267 y=108 width=16 height=4 xoffset=-2 yoffset=3 xadvance=0 page=1 chnl=15 +char id=866 x=70 y=118 width=13 height=3 xoffset=-2 yoffset=20 xadvance=0 page=1 chnl=15 +char id=867 x=159 y=110 width=6 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 +char id=868 x=223 y=109 width=6 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 +char id=869 x=509 y=41 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=870 x=183 y=110 width=6 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 +char id=871 x=175 y=110 width=6 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 +char id=872 x=231 y=109 width=5 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 +char id=873 x=322 y=97 width=6 height=10 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 +char id=874 x=314 y=97 width=6 height=10 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 +char id=875 x=50 y=110 width=11 height=7 xoffset=-6 yoffset=7 xadvance=0 page=1 chnl=15 +char id=876 x=251 y=109 width=4 height=7 xoffset=-2 yoffset=7 xadvance=0 page=1 chnl=15 +char id=877 x=362 y=97 width=3 height=10 xoffset=-2 yoffset=4 xadvance=0 page=1 chnl=15 +char id=878 x=105 y=110 width=7 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 +char id=879 x=123 y=110 width=7 height=7 xoffset=-3 yoffset=7 xadvance=0 page=1 chnl=15 +char id=880 x=473 y=483 width=9 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 +char id=881 x=394 y=85 width=9 height=11 xoffset=0 yoffset=8 xadvance=10 page=1 chnl=15 +char id=882 x=266 y=407 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=883 x=240 y=472 width=10 height=15 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15 +char id=884 x=441 y=110 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=885 x=70 y=122 width=3 height=3 xoffset=2 yoffset=20 xadvance=7 page=1 chnl=15 +char id=886 x=429 y=420 width=11 height=15 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 +char id=887 x=287 y=73 width=11 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=890 x=75 y=122 width=2 height=3 xoffset=3 yoffset=20 xadvance=7 page=1 chnl=15 +char id=891 x=44 y=98 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=892 x=317 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=893 x=482 y=84 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=894 x=192 y=47 width=2 height=14 xoffset=2 yoffset=8 xadvance=6 page=1 chnl=15 +char id=895 x=402 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=900 x=501 y=108 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=901 x=174 y=118 width=8 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=902 x=143 y=377 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=903 x=329 y=117 width=2 height=2 xoffset=2 yoffset=8 xadvance=6 page=1 chnl=15 +char id=904 x=306 y=325 width=16 height=15 xoffset=-1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=905 x=248 y=311 width=17 height=15 xoffset=-1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=906 x=65 y=16 width=7 height=15 xoffset=-1 yoffset=4 xadvance=8 page=1 chnl=15 +char id=908 x=432 y=323 width=16 height=15 xoffset=-1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=910 x=381 y=276 width=19 height=15 xoffset=-2 yoffset=4 xadvance=17 page=0 chnl=15 +char id=911 x=58 y=313 width=17 height=15 xoffset=-2 yoffset=4 xadvance=16 page=0 chnl=15 +char id=912 x=231 y=261 width=8 height=16 xoffset=-2 yoffset=3 xadvance=4 page=0 chnl=15 +char id=913 x=203 y=376 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=914 x=286 y=422 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=915 x=444 y=452 width=10 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 +char id=916 x=391 y=340 width=15 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=917 x=104 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=918 x=280 y=406 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=919 x=294 y=406 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=920 x=80 y=361 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=921 x=366 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 +char id=922 x=308 y=406 width=12 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=923 x=374 y=340 width=15 height=15 xoffset=-1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=924 x=357 y=340 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=925 x=322 y=406 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=926 x=336 y=405 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=927 x=128 y=361 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=928 x=350 y=405 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=929 x=208 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=931 x=324 y=454 width=10 height=15 xoffset=2 yoffset=4 xadvance=13 page=0 chnl=15 +char id=932 x=364 y=405 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=933 x=304 y=358 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=934 x=400 y=356 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=935 x=0 y=377 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=936 x=108 y=329 width=16 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 +char id=937 x=192 y=360 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=938 x=500 y=223 width=6 height=18 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15 +char id=939 x=350 y=205 width=14 height=18 xoffset=0 yoffset=1 xadvance=14 page=0 chnl=15 +char id=940 x=384 y=453 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=941 x=10 y=16 width=8 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 +char id=942 x=429 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=943 x=507 y=419 width=3 height=15 xoffset=1 yoffset=4 xadvance=4 page=0 chnl=15 +char id=944 x=33 y=489 width=9 height=15 xoffset=1 yoffset=4 xadvance=10 page=0 chnl=15 +char id=945 x=325 y=73 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=946 x=243 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=947 x=84 y=473 width=10 height=15 xoffset=0 yoffset=8 xadvance=10 page=0 chnl=15 +char id=948 x=120 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=949 x=502 y=58 width=8 height=11 xoffset=1 yoffset=8 xadvance=9 page=1 chnl=15 +char id=950 x=109 y=188 width=8 height=19 xoffset=1 yoffset=4 xadvance=9 page=0 chnl=15 +char id=951 x=55 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=952 x=420 y=452 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=953 x=253 y=97 width=2 height=11 xoffset=1 yoffset=8 xadvance=4 page=1 chnl=15 +char id=954 x=0 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 +char id=955 x=490 y=403 width=11 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=956 x=77 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=957 x=472 y=60 width=13 height=11 xoffset=-1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=958 x=119 y=188 width=8 height=19 xoffset=1 yoffset=4 xadvance=9 page=0 chnl=15 +char id=959 x=216 y=85 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=960 x=284 y=61 width=14 height=11 xoffset=0 yoffset=8 xadvance=14 page=1 chnl=15 +char id=961 x=449 y=436 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=962 x=372 y=0 width=8 height=15 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 +char id=963 x=116 y=74 width=12 height=11 xoffset=1 yoffset=8 xadvance=13 page=1 chnl=15 +char id=964 x=217 y=97 width=6 height=11 xoffset=1 yoffset=8 xadvance=8 page=1 chnl=15 +char id=965 x=85 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 +char id=966 x=392 y=404 width=12 height=15 xoffset=1 yoffset=8 xadvance=14 page=0 chnl=15 +char id=967 x=117 y=441 width=11 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 +char id=968 x=406 y=404 width=12 height=15 xoffset=1 yoffset=8 xadvance=14 page=0 chnl=15 +char id=969 x=252 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 +char id=970 x=156 y=47 width=6 height=14 xoffset=-1 yoffset=5 xadvance=4 page=1 chnl=15 +char id=971 x=129 y=47 width=8 height=14 xoffset=1 yoffset=5 xadvance=10 page=1 chnl=15 +char id=972 x=264 y=455 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=973 x=502 y=387 width=8 height=15 xoffset=1 yoffset=4 xadvance=10 page=0 chnl=15 +char id=974 x=492 y=339 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=975 x=499 y=144 width=11 height=19 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=976 x=312 y=454 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=977 x=325 y=422 width=11 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=978 x=359 y=308 width=16 height=15 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 +char id=979 x=161 y=280 width=20 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 +char id=980 x=217 y=206 width=16 height=18 xoffset=0 yoffset=1 xadvance=16 page=0 chnl=15 +char id=981 x=267 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=982 x=268 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 +char id=983 x=420 y=404 width=12 height=15 xoffset=0 yoffset=8 xadvance=13 page=0 chnl=15 +char id=984 x=48 y=88 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=985 x=252 y=455 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=986 x=338 y=373 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=987 x=348 y=453 width=10 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=988 x=494 y=419 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 +char id=989 x=195 y=16 width=6 height=15 xoffset=1 yoffset=8 xadvance=8 page=1 chnl=15 +char id=990 x=368 y=372 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=991 x=242 y=488 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=992 x=317 y=65 width=15 height=19 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 +char id=993 x=291 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=994 x=229 y=65 width=16 height=19 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 +char id=995 x=252 y=327 width=16 height=15 xoffset=1 yoffset=8 xadvance=18 page=0 chnl=15 +char id=996 x=434 y=404 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=997 x=461 y=435 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=998 x=325 y=125 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=999 x=500 y=499 width=10 height=12 xoffset=0 yoffset=7 xadvance=11 page=0 chnl=15 +char id=1000 x=448 y=403 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1001 x=208 y=441 width=11 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1002 x=158 y=377 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=1003 x=457 y=60 width=13 height=11 xoffset=0 yoffset=8 xadvance=13 page=1 chnl=15 +char id=1004 x=188 y=377 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1005 x=168 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1006 x=365 y=437 width=10 height=15 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15 +char id=1007 x=363 y=485 width=9 height=15 xoffset=0 yoffset=4 xadvance=9 page=0 chnl=15 +char id=1008 x=88 y=74 width=12 height=11 xoffset=0 yoffset=8 xadvance=13 page=1 chnl=15 +char id=1009 x=233 y=440 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=1010 x=438 y=84 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1011 x=479 y=184 width=4 height=19 xoffset=-1 yoffset=4 xadvance=4 page=0 chnl=15 +char id=1012 x=432 y=355 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1013 x=192 y=98 width=7 height=11 xoffset=1 yoffset=8 xadvance=9 page=1 chnl=15 +char id=1014 x=183 y=98 width=7 height=11 xoffset=1 yoffset=8 xadvance=9 page=1 chnl=15 +char id=1015 x=65 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1016 x=315 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1017 x=323 y=373 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1018 x=496 y=355 width=14 height=15 xoffset=2 yoffset=4 xadvance=18 page=0 chnl=15 +char id=1019 x=476 y=403 width=12 height=15 xoffset=1 yoffset=8 xadvance=14 page=0 chnl=15 +char id=1020 x=455 y=419 width=11 height=15 xoffset=0 yoffset=8 xadvance=12 page=0 chnl=15 +char id=1021 x=30 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1022 x=443 y=371 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1023 x=473 y=371 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1024 x=13 y=168 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 +char id=1025 x=162 y=225 width=11 height=18 xoffset=2 yoffset=1 xadvance=14 page=0 chnl=15 +char id=1026 x=54 y=329 width=16 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 +char id=1027 x=77 y=188 width=9 height=19 xoffset=2 yoffset=0 xadvance=11 page=0 chnl=15 +char id=1028 x=45 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1029 x=208 y=392 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1030 x=374 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 +char id=1031 x=484 y=223 width=6 height=18 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15 +char id=1032 x=362 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=1033 x=0 y=281 width=21 height=15 xoffset=0 yoffset=4 xadvance=22 page=0 chnl=15 +char id=1034 x=267 y=294 width=18 height=15 xoffset=2 yoffset=4 xadvance=21 page=0 chnl=15 +char id=1035 x=90 y=329 width=16 height=15 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 +char id=1036 x=87 y=168 width=10 height=19 xoffset=2 yoffset=0 xadvance=12 page=0 chnl=15 +char id=1037 x=369 y=144 width=11 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 +char id=1038 x=465 y=104 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=1039 x=486 y=144 width=11 height=19 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1040 x=105 y=393 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=1041 x=169 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1042 x=195 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1043 x=22 y=489 width=9 height=15 xoffset=2 yoffset=4 xadvance=11 page=0 chnl=15 +char id=1044 x=60 y=108 width=13 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1045 x=13 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1046 x=271 y=277 width=20 height=15 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 +char id=1047 x=26 y=425 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 +char id=1048 x=39 y=425 width=11 height=15 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1049 x=26 y=168 width=11 height=19 xoffset=2 yoffset=0 xadvance=15 page=0 chnl=15 +char id=1050 x=24 y=473 width=10 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1051 x=222 y=391 width=12 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1052 x=442 y=339 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=1053 x=236 y=391 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1054 x=112 y=377 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1055 x=250 y=391 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1056 x=143 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1057 x=90 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1058 x=264 y=391 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1059 x=75 y=393 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=1060 x=64 y=377 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1061 x=48 y=377 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1062 x=120 y=106 width=13 height=19 xoffset=2 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1063 x=104 y=441 width=11 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1064 x=360 y=324 width=16 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 +char id=1065 x=42 y=68 width=18 height=19 xoffset=2 yoffset=4 xadvance=20 page=0 chnl=15 +char id=1066 x=342 y=324 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=1067 x=323 y=341 width=15 height=15 xoffset=2 yoffset=4 xadvance=19 page=0 chnl=15 +char id=1068 x=78 y=441 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1069 x=428 y=372 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1070 x=167 y=296 width=18 height=15 xoffset=2 yoffset=4 xadvance=21 page=0 chnl=15 +char id=1071 x=292 y=390 width=12 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1072 x=180 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1073 x=456 y=452 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1074 x=0 y=98 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1075 x=174 y=98 width=7 height=11 xoffset=1 yoffset=8 xadvance=8 page=1 chnl=15 +char id=1076 x=222 y=32 width=11 height=14 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1077 x=457 y=72 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1078 x=348 y=61 width=14 height=11 xoffset=0 yoffset=8 xadvance=14 page=1 chnl=15 +char id=1079 x=135 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 +char id=1080 x=350 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1081 x=308 y=486 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=1082 x=65 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=9 page=1 chnl=15 +char id=1083 x=12 y=86 width=10 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1084 x=144 y=74 width=11 height=11 xoffset=1 yoffset=8 xadvance=13 page=1 chnl=15 +char id=1085 x=339 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1086 x=337 y=73 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1087 x=75 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 +char id=1088 x=143 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=1089 x=251 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1090 x=421 y=73 width=10 height=11 xoffset=0 yoffset=8 xadvance=10 page=1 chnl=15 +char id=1091 x=180 y=457 width=10 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 +char id=1092 x=334 y=64 width=15 height=19 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=1093 x=313 y=73 width=10 height=11 xoffset=0 yoffset=8 xadvance=10 page=1 chnl=15 +char id=1094 x=497 y=435 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=1095 x=273 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1096 x=316 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 +char id=1097 x=102 y=345 width=15 height=15 xoffset=1 yoffset=8 xadvance=16 page=0 chnl=15 +char id=1098 x=300 y=73 width=11 height=11 xoffset=1 yoffset=8 xadvance=13 page=1 chnl=15 +char id=1099 x=442 y=60 width=13 height=11 xoffset=1 yoffset=8 xadvance=15 page=1 chnl=15 +char id=1100 x=284 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1101 x=240 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1102 x=364 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=16 page=1 chnl=15 +char id=1103 x=481 y=72 width=10 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1104 x=228 y=472 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1105 x=392 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=1106 x=195 y=166 width=10 height=19 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1107 x=74 y=16 width=7 height=15 xoffset=1 yoffset=4 xadvance=8 page=1 chnl=15 +char id=1108 x=306 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1109 x=262 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1110 x=508 y=339 width=2 height=15 xoffset=1 yoffset=4 xadvance=5 page=0 chnl=15 +char id=1111 x=180 y=47 width=6 height=14 xoffset=0 yoffset=5 xadvance=6 page=1 chnl=15 +char id=1112 x=461 y=184 width=4 height=19 xoffset=-1 yoffset=4 xadvance=4 page=0 chnl=15 +char id=1113 x=418 y=500 width=18 height=11 xoffset=0 yoffset=8 xadvance=19 page=0 chnl=15 +char id=1114 x=235 y=61 width=15 height=11 xoffset=1 yoffset=8 xadvance=17 page=1 chnl=15 +char id=1115 x=204 y=457 width=10 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1116 x=352 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 +char id=1117 x=66 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=1118 x=147 y=166 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=1119 x=0 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1120 x=311 y=260 width=26 height=15 xoffset=1 yoffset=4 xadvance=28 page=0 chnl=15 +char id=1121 x=45 y=74 width=13 height=11 xoffset=0 yoffset=8 xadvance=13 page=1 chnl=15 +char id=1122 x=485 y=323 width=15 height=15 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1123 x=334 y=389 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=1124 x=407 y=291 width=18 height=15 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 +char id=1125 x=458 y=500 width=13 height=11 xoffset=1 yoffset=8 xadvance=15 page=0 chnl=15 +char id=1126 x=0 y=361 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1127 x=235 y=73 width=11 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1128 x=191 y=311 width=17 height=15 xoffset=2 yoffset=4 xadvance=19 page=0 chnl=15 +char id=1129 x=332 y=61 width=14 height=11 xoffset=1 yoffset=8 xadvance=15 page=1 chnl=15 +char id=1130 x=51 y=345 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=1131 x=130 y=74 width=12 height=11 xoffset=1 yoffset=8 xadvance=14 page=1 chnl=15 +char id=1132 x=465 y=275 width=19 height=15 xoffset=2 yoffset=4 xadvance=22 page=0 chnl=15 +char id=1133 x=95 y=62 width=16 height=11 xoffset=1 yoffset=8 xadvance=18 page=1 chnl=15 +char id=1134 x=453 y=0 width=11 height=22 xoffset=1 yoffset=1 xadvance=13 page=0 chnl=15 +char id=1135 x=351 y=224 width=10 height=18 xoffset=0 yoffset=5 xadvance=10 page=0 chnl=15 +char id=1136 x=187 y=344 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=1137 x=320 y=390 width=12 height=15 xoffset=1 yoffset=8 xadvance=14 page=0 chnl=15 +char id=1138 x=416 y=356 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1139 x=24 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1140 x=210 y=311 width=17 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=1141 x=427 y=60 width=13 height=11 xoffset=0 yoffset=8 xadvance=13 page=1 chnl=15 +char id=1142 x=62 y=68 width=17 height=19 xoffset=0 yoffset=0 xadvance=17 page=0 chnl=15 +char id=1143 x=353 y=373 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=1144 x=165 y=46 width=22 height=19 xoffset=1 yoffset=4 xadvance=23 page=0 chnl=15 +char id=1145 x=444 y=275 width=19 height=15 xoffset=1 yoffset=8 xadvance=19 page=0 chnl=15 +char id=1146 x=21 y=246 width=17 height=17 xoffset=0 yoffset=3 xadvance=18 page=0 chnl=15 +char id=1147 x=365 y=47 width=11 height=13 xoffset=1 yoffset=7 xadvance=13 page=1 chnl=15 +char id=1148 x=140 y=46 width=23 height=19 xoffset=1 yoffset=0 xadvance=25 page=0 chnl=15 +char id=1149 x=40 y=246 width=16 height=17 xoffset=1 yoffset=2 xadvance=18 page=0 chnl=15 +char id=1150 x=0 y=208 width=26 height=18 xoffset=1 yoffset=1 xadvance=28 page=0 chnl=15 +char id=1151 x=125 y=32 width=13 height=14 xoffset=0 yoffset=5 xadvance=13 page=1 chnl=15 +char id=1152 x=135 y=106 width=13 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1153 x=176 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=1154 x=260 y=423 width=11 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=1155 x=297 y=113 width=7 height=3 xoffset=-4 yoffset=4 xadvance=0 page=1 chnl=15 +char id=1156 x=234 y=117 width=7 height=3 xoffset=-3 yoffset=4 xadvance=0 page=1 chnl=15 +char id=1157 x=509 y=443 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=1158 x=509 y=441 width=1 height=1 xoffset=0 yoffset=0 xadvance=0 page=0 chnl=15 +char id=1159 x=99 y=118 width=11 height=3 xoffset=-5 yoffset=2 xadvance=0 page=1 chnl=15 +char id=1160 x=490 y=0 width=18 height=21 xoffset=-9 yoffset=2 xadvance=0 page=0 chnl=15 +char id=1161 x=466 y=0 width=22 height=21 xoffset=-11 yoffset=2 xadvance=0 page=0 chnl=15 +char id=1162 x=202 y=0 width=14 height=23 xoffset=1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=1163 x=175 y=225 width=11 height=18 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1164 x=383 y=372 width=13 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1165 x=389 y=437 width=10 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=1166 x=306 y=390 width=12 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1167 x=319 y=486 width=9 height=15 xoffset=2 yoffset=8 xadvance=12 page=0 chnl=15 +char id=1168 x=277 y=185 width=7 height=19 xoffset=2 yoffset=0 xadvance=10 page=0 chnl=15 +char id=1169 x=20 y=16 width=7 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 +char id=1170 x=65 y=425 width=11 height=15 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=1171 x=55 y=98 width=8 height=11 xoffset=0 yoffset=8 xadvance=8 page=1 chnl=15 +char id=1172 x=311 y=125 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1173 x=360 y=453 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=1174 x=327 y=44 width=20 height=19 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 +char id=1175 x=16 y=32 width=14 height=14 xoffset=0 yoffset=8 xadvance=14 page=1 chnl=15 +char id=1176 x=395 y=144 width=11 height=19 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 +char id=1177 x=462 y=0 width=8 height=15 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 +char id=1178 x=135 y=167 width=10 height=19 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1179 x=109 y=47 width=8 height=14 xoffset=1 yoffset=8 xadvance=9 page=1 chnl=15 +char id=1180 x=216 y=473 width=10 height=15 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1181 x=95 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=9 page=1 chnl=15 +char id=1182 x=278 y=390 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1183 x=88 y=489 width=9 height=15 xoffset=0 yoffset=4 xadvance=9 page=0 chnl=15 +char id=1184 x=126 y=329 width=16 height=15 xoffset=0 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1185 x=261 y=73 width=11 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1186 x=297 y=125 width=12 height=19 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1187 x=235 y=32 width=11 height=14 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1188 x=20 y=313 width=17 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 +char id=1189 x=30 y=74 width=13 height=11 xoffset=1 yoffset=8 xadvance=14 page=1 chnl=15 +char id=1190 x=189 y=45 width=22 height=19 xoffset=1 yoffset=4 xadvance=24 page=0 chnl=15 +char id=1191 x=0 y=329 width=16 height=15 xoffset=1 yoffset=8 xadvance=18 page=0 chnl=15 +char id=1192 x=119 y=345 width=15 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1193 x=274 y=73 width=11 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1194 x=210 y=105 width=13 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1195 x=11 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1196 x=283 y=125 width=12 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=1197 x=308 y=32 width=10 height=14 xoffset=0 yoffset=8 xadvance=10 page=1 chnl=15 +char id=1198 x=194 y=393 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1199 x=12 y=473 width=10 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 +char id=1200 x=462 y=403 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1201 x=480 y=451 width=10 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 +char id=1202 x=225 y=105 width=13 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1203 x=296 y=32 width=10 height=14 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1204 x=119 y=66 width=17 height=19 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 +char id=1205 x=48 y=32 width=14 height=14 xoffset=0 yoffset=8 xadvance=15 page=1 chnl=15 +char id=1206 x=269 y=125 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1207 x=380 y=32 width=10 height=14 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1208 x=377 y=437 width=10 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1209 x=383 y=85 width=9 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1210 x=377 y=421 width=11 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1211 x=330 y=486 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=1212 x=134 y=313 width=17 height=15 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 +char id=1213 x=412 y=61 width=13 height=11 xoffset=0 yoffset=8 xadvance=14 page=1 chnl=15 +char id=1214 x=180 y=206 width=17 height=18 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 +char id=1215 x=95 y=32 width=13 height=14 xoffset=0 yoffset=8 xadvance=14 page=1 chnl=15 +char id=1216 x=378 y=16 width=2 height=15 xoffset=2 yoffset=4 xadvance=6 page=1 chnl=15 +char id=1217 x=305 y=45 width=20 height=19 xoffset=0 yoffset=0 xadvance=19 page=0 chnl=15 +char id=1218 x=64 y=361 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1219 x=255 y=125 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1220 x=168 y=457 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=1221 x=208 y=85 width=14 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1222 x=140 y=32 width=12 height=14 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1223 x=375 y=104 width=13 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1224 x=408 y=468 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=1225 x=64 y=88 width=14 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1226 x=196 y=32 width=11 height=14 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1227 x=252 y=145 width=11 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1228 x=66 y=47 width=9 height=14 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1229 x=138 y=66 width=17 height=19 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 +char id=1230 x=110 y=32 width=13 height=14 xoffset=1 yoffset=8 xadvance=14 page=1 chnl=15 +char id=1231 x=390 y=16 width=2 height=15 xoffset=1 yoffset=4 xadvance=4 page=1 chnl=15 +char id=1232 x=0 y=128 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=1233 x=0 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1234 x=0 y=227 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 +char id=1235 x=476 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=1236 x=115 y=281 width=21 height=15 xoffset=-1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=1237 x=0 y=62 width=17 height=11 xoffset=1 yoffset=8 xadvance=19 page=1 chnl=15 +char id=1238 x=356 y=144 width=11 height=19 xoffset=2 yoffset=0 xadvance=14 page=0 chnl=15 +char id=1239 x=437 y=436 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1240 x=288 y=358 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1241 x=72 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1242 x=366 y=204 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 +char id=1243 x=464 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=1244 x=117 y=208 width=20 height=18 xoffset=0 yoffset=1 xadvance=19 page=0 chnl=15 +char id=1245 x=32 y=32 width=14 height=14 xoffset=0 yoffset=5 xadvance=14 page=1 chnl=15 +char id=1246 x=201 y=225 width=11 height=18 xoffset=1 yoffset=1 xadvance=13 page=0 chnl=15 +char id=1247 x=99 y=47 width=8 height=14 xoffset=1 yoffset=5 xadvance=10 page=1 chnl=15 +char id=1248 x=0 y=441 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 +char id=1249 x=44 y=489 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=1250 x=188 y=225 width=11 height=18 xoffset=2 yoffset=1 xadvance=15 page=0 chnl=15 +char id=1251 x=501 y=16 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 +char id=1252 x=266 y=224 width=11 height=18 xoffset=2 yoffset=1 xadvance=15 page=0 chnl=15 +char id=1253 x=33 y=47 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 +char id=1254 x=382 y=204 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 +char id=1255 x=344 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=1256 x=208 y=359 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1257 x=36 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1258 x=430 y=204 width=14 height=18 xoffset=1 yoffset=1 xadvance=16 page=0 chnl=15 +char id=1259 x=356 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=1260 x=45 y=227 width=13 height=18 xoffset=1 yoffset=1 xadvance=15 page=0 chnl=15 +char id=1261 x=88 y=47 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 +char id=1262 x=105 y=227 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 +char id=1263 x=303 y=224 width=10 height=18 xoffset=0 yoffset=5 xadvance=11 page=0 chnl=15 +char id=1264 x=477 y=204 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 +char id=1265 x=387 y=223 width=10 height=18 xoffset=0 yoffset=5 xadvance=11 page=0 chnl=15 +char id=1266 x=285 y=105 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=1267 x=303 y=165 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=1268 x=214 y=225 width=11 height=18 xoffset=1 yoffset=1 xadvance=14 page=0 chnl=15 +char id=1269 x=11 y=47 width=9 height=14 xoffset=1 yoffset=5 xadvance=11 page=1 chnl=15 +char id=1270 x=385 y=164 width=9 height=19 xoffset=2 yoffset=4 xadvance=11 page=0 chnl=15 +char id=1271 x=139 y=47 width=7 height=14 xoffset=1 yoffset=8 xadvance=8 page=1 chnl=15 +char id=1272 x=253 y=205 width=15 height=18 xoffset=2 yoffset=1 xadvance=19 page=0 chnl=15 +char id=1273 x=80 y=32 width=13 height=14 xoffset=1 yoffset=5 xadvance=15 page=1 chnl=15 +char id=1274 x=408 y=144 width=11 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=1275 x=99 y=489 width=9 height=15 xoffset=-1 yoffset=8 xadvance=8 page=0 chnl=15 +char id=1276 x=432 y=84 width=14 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1277 x=13 y=441 width=11 height=15 xoffset=0 yoffset=8 xadvance=11 page=0 chnl=15 +char id=1278 x=240 y=359 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1279 x=157 y=74 width=11 height=11 xoffset=0 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1280 x=195 y=425 width=11 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1281 x=275 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=11 page=1 chnl=15 +char id=1282 x=227 y=295 width=18 height=15 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 +char id=1283 x=341 y=308 width=16 height=15 xoffset=1 yoffset=4 xadvance=18 page=0 chnl=15 +char id=1284 x=0 y=313 width=18 height=15 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 +char id=1285 x=184 y=62 width=15 height=11 xoffset=1 yoffset=8 xadvance=17 page=1 chnl=15 +char id=1286 x=157 y=126 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1287 x=22 y=47 width=9 height=14 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1288 x=126 y=297 width=19 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 +char id=1289 x=485 y=46 width=18 height=11 xoffset=0 yoffset=8 xadvance=19 page=1 chnl=15 +char id=1290 x=105 y=297 width=19 height=15 xoffset=2 yoffset=4 xadvance=22 page=0 chnl=15 +char id=1291 x=113 y=62 width=16 height=11 xoffset=1 yoffset=8 xadvance=18 page=1 chnl=15 +char id=1292 x=480 y=355 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1293 x=96 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1294 x=16 y=377 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1295 x=15 y=74 width=13 height=11 xoffset=0 yoffset=8 xadvance=14 page=1 chnl=15 +char id=1296 x=91 y=441 width=11 height=15 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15 +char id=1297 x=125 y=98 width=8 height=11 xoffset=1 yoffset=8 xadvance=10 page=1 chnl=15 +char id=1298 x=87 y=128 width=12 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1299 x=130 y=441 width=11 height=15 xoffset=0 yoffset=8 xadvance=12 page=0 chnl=15 +char id=1300 x=205 y=279 width=20 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 +char id=1301 x=131 y=62 width=16 height=11 xoffset=0 yoffset=8 xadvance=16 page=1 chnl=15 +char id=1302 x=425 y=339 width=15 height=15 xoffset=2 yoffset=4 xadvance=17 page=0 chnl=15 +char id=1303 x=32 y=361 width=14 height=15 xoffset=1 yoffset=8 xadvance=15 page=0 chnl=15 +char id=1304 x=21 y=297 width=19 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 +char id=1305 x=38 y=62 width=17 height=11 xoffset=0 yoffset=8 xadvance=18 page=1 chnl=15 +char id=1306 x=346 y=243 width=14 height=16 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=1307 x=198 y=0 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1308 x=138 y=281 width=21 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 +char id=1309 x=76 y=62 width=17 height=11 xoffset=-1 yoffset=8 xadvance=15 page=1 chnl=15 +char id=1310 x=238 y=407 width=12 height=15 xoffset=2 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1311 x=108 y=86 width=10 height=11 xoffset=1 yoffset=8 xadvance=11 page=1 chnl=15 +char id=1312 x=282 y=45 width=21 height=19 xoffset=0 yoffset=4 xadvance=22 page=0 chnl=15 +char id=1313 x=347 y=292 width=18 height=15 xoffset=0 yoffset=8 xadvance=19 page=0 chnl=15 +char id=1314 x=259 y=45 width=21 height=19 xoffset=2 yoffset=4 xadvance=24 page=0 chnl=15 +char id=1315 x=396 y=324 width=16 height=15 xoffset=1 yoffset=8 xadvance=18 page=0 chnl=15 +char id=1316 x=195 y=106 width=13 height=19 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1317 x=312 y=422 width=11 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=1318 x=150 y=106 width=13 height=19 xoffset=2 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1319 x=59 y=128 width=12 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=1320 x=300 y=65 width=15 height=19 xoffset=-1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=1321 x=224 y=407 width=12 height=15 xoffset=-1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=1322 x=83 y=46 width=28 height=19 xoffset=0 yoffset=4 xadvance=28 page=0 chnl=15 +char id=1323 x=406 y=16 width=22 height=14 xoffset=0 yoffset=8 xadvance=22 page=1 chnl=15 +char id=1324 x=485 y=63 width=14 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1325 x=168 y=32 width=12 height=14 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 +char id=1326 x=32 y=88 width=14 height=19 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=1327 x=182 y=32 width=12 height=14 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 +char id=7936 x=12 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=7937 x=24 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=7938 x=36 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=7939 x=96 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=7940 x=463 y=242 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=7941 x=0 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=7942 x=339 y=165 width=10 height=19 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15 +char id=7943 x=207 y=166 width=10 height=19 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15 +char id=7944 x=135 y=393 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=7945 x=413 y=372 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=7946 x=288 y=326 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=7947 x=234 y=327 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=7948 x=198 y=327 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=7949 x=180 y=328 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=7950 x=199 y=206 width=16 height=18 xoffset=0 yoffset=1 xadvance=17 page=0 chnl=15 +char id=7951 x=235 y=206 width=16 height=18 xoffset=0 yoffset=1 xadvance=17 page=0 chnl=15 +char id=7952 x=201 y=262 width=8 height=16 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15 +char id=7953 x=161 y=263 width=8 height=16 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15 +char id=7954 x=261 y=261 width=8 height=16 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15 +char id=7955 x=221 y=262 width=8 height=16 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15 +char id=7956 x=181 y=262 width=8 height=16 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15 +char id=7957 x=211 y=262 width=8 height=16 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15 +char id=7960 x=160 y=361 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=7961 x=48 y=361 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=7962 x=207 y=295 width=18 height=15 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 +char id=7963 x=187 y=295 width=18 height=15 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 +char id=7964 x=147 y=297 width=18 height=15 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 +char id=7965 x=447 y=291 width=18 height=15 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15 +char id=7968 x=421 y=23 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 +char id=7969 x=432 y=23 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 +char id=7970 x=454 y=23 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 +char id=7971 x=0 y=47 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 +char id=7972 x=11 y=47 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 +char id=7973 x=22 y=47 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 +char id=7974 x=283 y=0 width=9 height=23 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 +char id=7975 x=294 y=0 width=9 height=23 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 +char id=7976 x=340 y=341 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=7977 x=408 y=340 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=7978 x=0 y=297 width=19 height=15 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=7979 x=486 y=275 width=19 height=15 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=7980 x=423 y=275 width=19 height=15 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=7981 x=402 y=275 width=19 height=15 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=7982 x=95 y=208 width=20 height=18 xoffset=0 yoffset=1 xadvance=21 page=0 chnl=15 +char id=7983 x=73 y=208 width=20 height=18 xoffset=0 yoffset=1 xadvance=21 page=0 chnl=15 +char id=7984 x=508 y=220 width=2 height=16 xoffset=1 yoffset=3 xadvance=4 page=0 chnl=15 +char id=7985 x=507 y=203 width=2 height=16 xoffset=1 yoffset=3 xadvance=4 page=0 chnl=15 +char id=7986 x=295 y=260 width=6 height=16 xoffset=-1 yoffset=3 xadvance=4 page=0 chnl=15 +char id=7987 x=287 y=260 width=6 height=16 xoffset=-1 yoffset=3 xadvance=4 page=0 chnl=15 +char id=7988 x=279 y=260 width=6 height=16 xoffset=-1 yoffset=3 xadvance=4 page=0 chnl=15 +char id=7989 x=303 y=260 width=6 height=16 xoffset=-1 yoffset=3 xadvance=4 page=0 chnl=15 +char id=7990 x=259 y=185 width=7 height=19 xoffset=-1 yoffset=0 xadvance=4 page=0 chnl=15 +char id=7991 x=286 y=185 width=7 height=19 xoffset=-1 yoffset=0 xadvance=4 page=0 chnl=15 +char id=7992 x=265 y=16 width=5 height=15 xoffset=1 yoffset=4 xadvance=8 page=1 chnl=15 +char id=7993 x=293 y=16 width=5 height=15 xoffset=1 yoffset=4 xadvance=8 page=1 chnl=15 +char id=7994 x=242 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=1 chnl=15 +char id=7995 x=231 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=1 chnl=15 +char id=7996 x=44 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=1 chnl=15 +char id=7997 x=165 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=1 chnl=15 +char id=7998 x=363 y=224 width=10 height=18 xoffset=0 yoffset=1 xadvance=12 page=0 chnl=15 +char id=7999 x=375 y=223 width=10 height=18 xoffset=0 yoffset=1 xadvance=12 page=0 chnl=15 +char id=8000 x=451 y=242 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8001 x=487 y=242 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8002 x=72 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8003 x=84 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8004 x=499 y=242 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8005 x=60 y=264 width=10 height=16 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8008 x=413 y=307 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8009 x=414 y=323 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8010 x=249 y=278 width=20 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 +char id=8011 x=315 y=276 width=20 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 +char id=8012 x=287 y=293 width=18 height=15 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 +char id=8013 x=387 y=292 width=18 height=15 xoffset=1 yoffset=4 xadvance=20 page=0 chnl=15 +char id=8016 x=251 y=261 width=8 height=16 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15 +char id=8017 x=191 y=262 width=8 height=16 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15 +char id=8018 x=241 y=261 width=8 height=16 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15 +char id=8019 x=141 y=264 width=8 height=16 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15 +char id=8020 x=151 y=264 width=8 height=16 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15 +char id=8021 x=171 y=262 width=8 height=16 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15 +char id=8022 x=189 y=186 width=8 height=19 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15 +char id=8023 x=199 y=186 width=8 height=19 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15 +char id=8025 x=267 y=310 width=17 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8027 x=227 y=279 width=20 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 +char id=8029 x=23 y=281 width=21 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 +char id=8031 x=51 y=208 width=20 height=18 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=15 +char id=8032 x=298 y=243 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8033 x=282 y=243 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8034 x=266 y=243 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8035 x=394 y=242 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8036 x=378 y=242 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8037 x=362 y=243 width=14 height=16 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8038 x=0 y=88 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=8039 x=16 y=88 width=14 height=19 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=8040 x=449 y=307 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8041 x=431 y=307 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8042 x=293 y=277 width=20 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 +char id=8043 x=183 y=279 width=20 height=15 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 +char id=8044 x=84 y=297 width=19 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 +char id=8045 x=63 y=297 width=19 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 +char id=8046 x=160 y=206 width=18 height=18 xoffset=1 yoffset=1 xadvance=20 page=0 chnl=15 +char id=8047 x=139 y=207 width=19 height=18 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=15 +char id=8048 x=24 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8049 x=12 y=457 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8050 x=482 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 +char id=8051 x=472 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 +char id=8052 x=55 y=188 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=8053 x=0 y=188 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=8054 x=353 y=16 width=3 height=15 xoffset=0 yoffset=4 xadvance=4 page=1 chnl=15 +char id=8055 x=348 y=16 width=3 height=15 xoffset=1 yoffset=4 xadvance=4 page=1 chnl=15 +char id=8056 x=425 y=436 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8057 x=401 y=436 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8058 x=392 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=10 page=1 chnl=15 +char id=8059 x=452 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=10 page=1 chnl=15 +char id=8060 x=384 y=356 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=8061 x=144 y=361 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=8064 x=339 y=23 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8065 x=327 y=23 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8066 x=303 y=24 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8067 x=375 y=23 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8068 x=387 y=23 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8069 x=351 y=23 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8070 x=260 y=0 width=10 height=23 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15 +char id=8071 x=248 y=0 width=10 height=23 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15 +char id=8072 x=300 y=105 width=13 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=8073 x=345 y=104 width=13 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=8074 x=175 y=66 width=16 height=19 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8075 x=157 y=66 width=16 height=19 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8076 x=193 y=65 width=16 height=19 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8077 x=211 y=65 width=16 height=19 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8078 x=419 y=0 width=16 height=22 xoffset=0 yoffset=1 xadvance=17 page=0 chnl=15 +char id=8079 x=401 y=0 width=16 height=22 xoffset=0 yoffset=1 xadvance=17 page=0 chnl=15 +char id=8080 x=476 y=22 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 +char id=8081 x=487 y=22 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 +char id=8082 x=410 y=23 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 +char id=8083 x=399 y=23 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 +char id=8084 x=33 y=47 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 +char id=8085 x=443 y=23 width=9 height=20 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15 +char id=8086 x=272 y=0 width=9 height=23 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 +char id=8087 x=305 y=0 width=9 height=23 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15 +char id=8088 x=385 y=64 width=15 height=19 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8089 x=368 y=64 width=15 height=19 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8090 x=456 y=44 width=19 height=19 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=8091 x=414 y=44 width=19 height=19 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=8092 x=21 y=68 width=19 height=19 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=8093 x=0 y=68 width=19 height=19 xoffset=1 yoffset=4 xadvance=21 page=0 chnl=15 +char id=8094 x=338 y=0 width=20 height=22 xoffset=0 yoffset=1 xadvance=21 page=0 chnl=15 +char id=8095 x=316 y=0 width=20 height=22 xoffset=0 yoffset=1 xadvance=21 page=0 chnl=15 +char id=8096 x=188 y=24 width=14 height=20 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8097 x=156 y=25 width=14 height=20 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8098 x=140 y=25 width=14 height=20 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8099 x=124 y=25 width=14 height=20 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8100 x=108 y=25 width=14 height=20 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8101 x=92 y=25 width=14 height=20 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8102 x=186 y=0 width=14 height=23 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=8103 x=218 y=0 width=14 height=23 xoffset=1 yoffset=0 xadvance=16 page=0 chnl=15 +char id=8104 x=265 y=65 width=16 height=19 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8105 x=247 y=65 width=16 height=19 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8106 x=371 y=44 width=20 height=19 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 +char id=8107 x=349 y=44 width=20 height=19 xoffset=0 yoffset=4 xadvance=21 page=0 chnl=15 +char id=8108 x=477 y=43 width=19 height=19 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 +char id=8109 x=435 y=44 width=19 height=19 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 +char id=8110 x=381 y=0 width=18 height=22 xoffset=1 yoffset=1 xadvance=20 page=0 chnl=15 +char id=8111 x=360 y=0 width=19 height=22 xoffset=0 yoffset=1 xadvance=20 page=0 chnl=15 +char id=8112 x=48 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8113 x=452 y=31 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=8114 x=327 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8115 x=60 y=473 width=10 height=15 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=8116 x=63 y=168 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8118 x=72 y=473 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8119 x=255 y=165 width=10 height=19 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8120 x=480 y=104 width=13 height=19 xoffset=0 yoffset=0 xadvance=13 page=0 chnl=15 +char id=8121 x=462 y=204 width=13 height=18 xoffset=0 yoffset=1 xadvance=13 page=0 chnl=15 +char id=8122 x=248 y=375 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=8123 x=233 y=375 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=8124 x=435 y=104 width=13 height=19 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=8125 x=18 y=119 width=2 height=4 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8126 x=348 y=508 width=2 height=3 xoffset=3 yoffset=20 xadvance=7 page=0 chnl=15 +char id=8127 x=14 y=119 width=2 height=4 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8128 x=288 y=113 width=7 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8129 x=22 y=505 width=7 height=6 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15 +char id=8130 x=363 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=8131 x=495 y=483 width=9 height=15 xoffset=1 yoffset=8 xadvance=11 page=0 chnl=15 +char id=8132 x=66 y=188 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=8134 x=501 y=63 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=8135 x=418 y=164 width=9 height=19 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=8136 x=170 y=345 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8137 x=136 y=345 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8138 x=305 y=309 width=16 height=15 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 +char id=8139 x=324 y=325 width=16 height=15 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 +char id=8140 x=479 y=124 width=12 height=19 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=8141 x=409 y=106 width=6 height=4 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8142 x=417 y=106 width=6 height=4 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8143 x=141 y=110 width=7 height=7 xoffset=0 yoffset=1 xadvance=7 page=1 chnl=15 +char id=8144 x=163 y=16 width=6 height=15 xoffset=-1 yoffset=4 xadvance=4 page=1 chnl=15 +char id=8145 x=164 y=47 width=6 height=14 xoffset=-1 yoffset=5 xadvance=4 page=1 chnl=15 +char id=8146 x=339 y=185 width=6 height=19 xoffset=-1 yoffset=0 xadvance=4 page=0 chnl=15 +char id=8147 x=419 y=184 width=6 height=19 xoffset=-1 yoffset=0 xadvance=4 page=0 chnl=15 +char id=8150 x=56 y=16 width=7 height=15 xoffset=-1 yoffset=4 xadvance=4 page=1 chnl=15 +char id=8151 x=313 y=185 width=7 height=19 xoffset=-1 yoffset=0 xadvance=4 page=0 chnl=15 +char id=8152 x=411 y=184 width=6 height=19 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 +char id=8153 x=492 y=223 width=6 height=18 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15 +char id=8154 x=107 y=16 width=6 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 +char id=8155 x=99 y=16 width=6 height=15 xoffset=1 yoffset=4 xadvance=9 page=1 chnl=15 +char id=8157 x=425 y=106 width=6 height=4 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8158 x=433 y=106 width=6 height=4 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8159 x=150 y=110 width=7 height=7 xoffset=0 yoffset=1 xadvance=7 page=1 chnl=15 +char id=8160 x=442 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=10 page=1 chnl=15 +char id=8161 x=119 y=47 width=8 height=14 xoffset=1 yoffset=5 xadvance=10 page=1 chnl=15 +char id=8162 x=229 y=186 width=8 height=19 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15 +char id=8163 x=149 y=186 width=8 height=19 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15 +char id=8164 x=315 y=24 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8165 x=363 y=23 width=10 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15 +char id=8166 x=382 y=0 width=8 height=15 xoffset=1 yoffset=4 xadvance=10 page=1 chnl=15 +char id=8167 x=129 y=188 width=8 height=19 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15 +char id=8168 x=368 y=84 width=14 height=19 xoffset=0 yoffset=0 xadvance=14 page=0 chnl=15 +char id=8169 x=398 y=204 width=14 height=18 xoffset=0 yoffset=1 xadvance=14 page=0 chnl=15 +char id=8170 x=247 y=295 width=18 height=15 xoffset=0 yoffset=4 xadvance=18 page=0 chnl=15 +char id=8171 x=427 y=291 width=18 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 +char id=8172 x=96 y=377 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=8173 x=124 y=118 width=8 height=3 xoffset=-1 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8174 x=134 y=118 width=8 height=3 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8175 x=421 y=111 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8178 x=352 y=84 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=8179 x=32 y=377 width=14 height=15 xoffset=1 yoffset=8 xadvance=16 page=0 chnl=15 +char id=8180 x=160 y=86 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=8182 x=16 y=361 width=14 height=15 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=8183 x=144 y=86 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=8184 x=115 y=313 width=17 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 +char id=8185 x=85 y=345 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8186 x=153 y=313 width=17 height=15 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15 +char id=8187 x=18 y=329 width=16 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8188 x=128 y=86 width=14 height=19 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15 +char id=8189 x=491 y=110 width=3 height=3 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8190 x=10 y=119 width=2 height=4 xoffset=2 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8304 x=495 y=94 width=7 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8308 x=441 y=96 width=7 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8309 x=450 y=96 width=7 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8310 x=459 y=96 width=7 height=8 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8311 x=504 y=94 width=6 height=8 xoffset=1 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8312 x=468 y=96 width=7 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8313 x=486 y=96 width=7 height=8 xoffset=0 yoffset=4 xadvance=7 page=1 chnl=15 +char id=8319 x=477 y=96 width=7 height=8 xoffset=1 yoffset=6 xadvance=8 page=1 chnl=15 +char id=8336 x=215 y=110 width=6 height=7 xoffset=1 yoffset=13 xadvance=8 page=1 chnl=15 +char id=8337 x=207 y=110 width=6 height=7 xoffset=1 yoffset=13 xadvance=8 page=1 chnl=15 +char id=8338 x=191 y=110 width=6 height=7 xoffset=1 yoffset=13 xadvance=8 page=1 chnl=15 +char id=8339 x=132 y=110 width=7 height=7 xoffset=0 yoffset=13 xadvance=7 page=1 chnl=15 +char id=8340 x=199 y=110 width=6 height=7 xoffset=1 yoffset=13 xadvance=8 page=1 chnl=15 +char id=8352 x=362 y=389 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8353 x=140 y=246 width=13 height=17 xoffset=1 yoffset=3 xadvance=15 page=0 chnl=15 +char id=8354 x=308 y=374 width=13 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=8355 x=117 y=425 width=11 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8356 x=130 y=425 width=11 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8357 x=467 y=307 width=16 height=15 xoffset=1 yoffset=6 xadvance=18 page=0 chnl=15 +char id=8358 x=68 y=345 width=15 height=15 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15 +char id=8359 x=441 y=259 width=22 height=15 xoffset=0 yoffset=4 xadvance=23 page=0 chnl=15 +char id=8360 x=69 y=281 width=21 height=15 xoffset=2 yoffset=4 xadvance=24 page=0 chnl=15 +char id=8361 x=359 y=276 width=20 height=15 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15 +char id=8362 x=300 y=61 width=14 height=11 xoffset=2 yoffset=8 xadvance=18 page=1 chnl=15 +char id=8363 x=460 y=46 width=7 height=13 xoffset=2 yoffset=4 xadvance=11 page=1 chnl=15 +char id=8364 x=390 y=388 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8365 x=368 y=356 width=14 height=15 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15 +char id=8366 x=404 y=388 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=8367 x=0 y=25 width=21 height=21 xoffset=0 yoffset=2 xadvance=21 page=0 chnl=15 +char id=8368 x=75 y=168 width=10 height=19 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15 +char id=8369 x=15 y=393 width=13 height=15 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=8370 x=414 y=204 width=14 height=18 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=8371 x=323 y=309 width=16 height=15 xoffset=-1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=8372 x=432 y=388 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8373 x=90 y=227 width=13 height=18 xoffset=1 yoffset=3 xadvance=15 page=0 chnl=15 +char id=8374 x=187 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=1 chnl=15 +char id=8375 x=424 y=242 width=12 height=16 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15 +char id=8376 x=446 y=387 width=12 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=8377 x=176 y=0 width=9 height=15 xoffset=1 yoffset=4 xadvance=12 page=1 chnl=15 +char id=8378 x=474 y=387 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8379 x=77 y=313 width=17 height=15 xoffset=0 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8380 x=196 y=47 width=16 height=13 xoffset=0 yoffset=6 xadvance=17 page=1 chnl=15 +char id=8381 x=0 y=409 width=12 height=15 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8382 x=34 y=345 width=15 height=15 xoffset=1 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8383 x=395 y=124 width=12 height=19 xoffset=1 yoffset=2 xadvance=14 page=0 chnl=15 +char id=8592 x=374 y=97 width=21 height=8 xoffset=0 yoffset=10 xadvance=21 page=1 chnl=15 +char id=8593 x=249 y=185 width=8 height=19 xoffset=1 yoffset=5 xadvance=11 page=0 chnl=15 +char id=8594 x=276 y=503 width=21 height=8 xoffset=0 yoffset=10 xadvance=21 page=0 chnl=15 +char id=8595 x=239 y=185 width=8 height=19 xoffset=1 yoffset=5 xadvance=11 page=0 chnl=15 +char id=8596 x=253 y=503 width=21 height=8 xoffset=0 yoffset=10 xadvance=21 page=0 chnl=15 +char id=8597 x=44 y=47 width=8 height=20 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=8616 x=54 y=47 width=8 height=20 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +char id=8706 x=312 y=470 width=10 height=15 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15 +char id=8710 x=398 y=372 width=13 height=15 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15 +char id=8719 x=330 y=105 width=13 height=19 xoffset=2 yoffset=4 xadvance=17 page=0 chnl=15 +char id=8721 x=315 y=105 width=13 height=19 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=8722 x=178 y=122 width=10 height=2 xoffset=1 yoffset=10 xadvance=12 page=1 chnl=15 +char id=8725 x=314 y=243 width=14 height=16 xoffset=-5 yoffset=4 xadvance=4 page=0 chnl=15 +char id=8729 x=333 y=117 width=2 height=2 xoffset=2 yoffset=11 xadvance=6 page=1 chnl=15 +char id=8730 x=290 y=24 width=11 height=20 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15 +char id=8734 x=22 y=110 width=12 height=7 xoffset=1 yoffset=8 xadvance=15 page=1 chnl=15 +char id=8735 x=250 y=47 width=14 height=13 xoffset=3 yoffset=6 xadvance=21 page=1 chnl=15 +char id=8745 x=84 y=409 width=12 height=15 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15 +char id=8747 x=48 y=25 width=5 height=21 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 +char id=8776 x=36 y=110 width=12 height=7 xoffset=0 yoffset=8 xadvance=12 page=1 chnl=15 +char id=8800 x=372 y=469 width=10 height=15 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15 +char id=8801 x=488 y=499 width=10 height=12 xoffset=1 yoffset=5 xadvance=12 page=0 chnl=15 +char id=8804 x=332 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=8805 x=320 y=32 width=10 height=14 xoffset=1 yoffset=5 xadvance=12 page=1 chnl=15 +char id=9472 x=52 y=118 width=16 height=3 xoffset=-1 yoffset=11 xadvance=15 page=1 chnl=15 +char id=9474 x=181 y=0 width=3 height=24 xoffset=4 yoffset=0 xadvance=13 page=0 chnl=15 +char id=9484 x=449 y=46 width=9 height=13 xoffset=6 yoffset=11 xadvance=15 page=1 chnl=15 +char id=9488 x=426 y=46 width=10 height=13 xoffset=-1 yoffset=11 xadvance=15 page=1 chnl=15 +char id=9492 x=0 y=47 width=9 height=14 xoffset=6 yoffset=0 xadvance=15 page=1 chnl=15 +char id=9496 x=260 y=32 width=10 height=14 xoffset=-1 yoffset=0 xadvance=15 page=1 chnl=15 +char id=9500 x=150 y=0 width=9 height=24 xoffset=6 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9508 x=126 y=0 width=10 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9516 x=232 y=47 width=16 height=13 xoffset=-1 yoffset=11 xadvance=15 page=1 chnl=15 +char id=9524 x=467 y=16 width=16 height=14 xoffset=-1 yoffset=0 xadvance=15 page=1 chnl=15 +char id=9532 x=0 y=0 width=16 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9552 x=231 y=504 width=16 height=7 xoffset=-1 yoffset=9 xadvance=15 page=0 chnl=15 +char id=9553 x=172 y=0 width=7 height=24 xoffset=4 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9554 x=220 y=0 width=9 height=15 xoffset=6 yoffset=9 xadvance=15 page=1 chnl=15 +char id=9555 x=339 y=47 width=11 height=13 xoffset=4 yoffset=11 xadvance=15 page=1 chnl=15 +char id=9556 x=403 y=420 width=11 height=15 xoffset=4 yoffset=9 xadvance=15 page=0 chnl=15 +char id=9557 x=420 y=468 width=10 height=15 xoffset=-1 yoffset=9 xadvance=15 page=0 chnl=15 +char id=9558 x=297 y=47 width=12 height=13 xoffset=-1 yoffset=11 xadvance=15 page=1 chnl=15 +char id=9559 x=98 y=409 width=12 height=15 xoffset=-1 yoffset=9 xadvance=15 page=0 chnl=15 +char id=9560 x=130 y=264 width=9 height=16 xoffset=6 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9561 x=209 y=32 width=11 height=14 xoffset=4 yoffset=0 xadvance=15 page=1 chnl=15 +char id=9562 x=438 y=242 width=11 height=16 xoffset=4 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9563 x=475 y=242 width=10 height=16 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9564 x=154 y=32 width=12 height=14 xoffset=-1 yoffset=0 xadvance=15 page=1 chnl=15 +char id=9565 x=410 y=242 width=12 height=16 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9566 x=161 y=0 width=9 height=24 xoffset=6 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9567 x=100 y=0 width=11 height=24 xoffset=4 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9568 x=113 y=0 width=11 height=24 xoffset=4 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9569 x=138 y=0 width=10 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9570 x=86 y=0 width=12 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9571 x=72 y=0 width=12 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9572 x=395 y=308 width=16 height=15 xoffset=-1 yoffset=9 xadvance=15 page=0 chnl=15 +char id=9573 x=214 y=47 width=16 height=13 xoffset=-1 yoffset=11 xadvance=15 page=1 chnl=15 +char id=9574 x=377 y=308 width=16 height=15 xoffset=-1 yoffset=9 xadvance=15 page=0 chnl=15 +char id=9575 x=230 y=244 width=16 height=16 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9576 x=449 y=16 width=16 height=14 xoffset=-1 yoffset=0 xadvance=15 page=1 chnl=15 +char id=9577 x=248 y=244 width=16 height=16 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9578 x=54 y=0 width=16 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9579 x=36 y=0 width=16 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9580 x=18 y=0 width=16 height=24 xoffset=-1 yoffset=0 xadvance=15 page=0 chnl=15 +char id=9632 x=365 y=501 width=11 height=10 xoffset=1 yoffset=9 xadvance=13 page=0 chnl=15 +char id=9633 x=269 y=97 width=9 height=10 xoffset=2 yoffset=9 xadvance=13 page=1 chnl=15 +char id=9642 x=63 y=505 width=5 height=6 xoffset=1 yoffset=9 xadvance=7 page=0 chnl=15 +char id=9643 x=56 y=505 width=5 height=6 xoffset=1 yoffset=9 xadvance=7 page=0 chnl=15 +char id=9644 x=82 y=505 width=21 height=5 xoffset=0 yoffset=11 xadvance=21 page=0 chnl=15 +char id=9650 x=17 y=345 width=15 height=15 xoffset=3 yoffset=4 xadvance=21 page=0 chnl=15 +char id=9658 x=0 y=345 width=15 height=15 xoffset=3 yoffset=4 xadvance=21 page=0 chnl=15 +char id=9660 x=468 y=323 width=15 height=15 xoffset=3 yoffset=4 xadvance=21 page=0 chnl=15 +char id=9668 x=459 y=339 width=15 height=15 xoffset=3 yoffset=4 xadvance=21 page=0 chnl=15 +char id=9674 x=492 y=467 width=10 height=15 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15 +char id=9675 x=378 y=501 width=10 height=10 xoffset=1 yoffset=8 xadvance=13 page=0 chnl=15 +char id=9676 x=402 y=501 width=10 height=10 xoffset=1 yoffset=8 xadvance=12 page=0 chnl=15 +char id=9679 x=257 y=97 width=10 height=10 xoffset=1 yoffset=8 xadvance=13 page=1 chnl=15 +char id=9688 x=352 y=501 width=11 height=10 xoffset=1 yoffset=9 xadvance=13 page=0 chnl=15 +char id=9689 x=473 y=499 width=13 height=12 xoffset=0 yoffset=7 xadvance=13 page=0 chnl=15 +char id=9702 x=48 y=505 width=6 height=6 xoffset=1 yoffset=9 xadvance=7 page=0 chnl=15 +char id=9786 x=0 y=32 width=14 height=14 xoffset=4 yoffset=7 xadvance=21 page=1 chnl=15 +char id=9787 x=485 y=16 width=14 height=14 xoffset=4 yoffset=7 xadvance=22 page=1 chnl=15 +char id=9788 x=55 y=25 width=19 height=20 xoffset=0 yoffset=2 xadvance=19 page=0 chnl=15 +char id=9792 x=23 y=25 width=12 height=21 xoffset=2 yoffset=3 xadvance=16 page=0 chnl=15 +char id=9794 x=204 y=24 width=14 height=20 xoffset=1 yoffset=2 xadvance=16 page=0 chnl=15 +char id=9824 x=352 y=47 width=11 height=13 xoffset=0 yoffset=6 xadvance=11 page=1 chnl=15 +char id=9827 x=266 y=47 width=14 height=13 xoffset=0 yoffset=6 xadvance=14 page=1 chnl=15 +char id=9829 x=325 y=47 width=12 height=13 xoffset=0 yoffset=6 xadvance=12 page=1 chnl=15 +char id=9830 x=378 y=47 width=10 height=13 xoffset=0 yoffset=6 xadvance=11 page=1 chnl=15 +char id=9834 x=52 y=425 width=11 height=15 xoffset=0 yoffset=5 xadvance=11 page=0 chnl=15 +char id=9835 x=15 y=227 width=13 height=18 xoffset=1 yoffset=3 xadvance=16 page=0 chnl=15 +char id=9839 x=219 y=244 width=9 height=17 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15 +kernings count=456 +kerning first=32 second=65 amount=-1 +kerning first=1168 second=187 amount=-2 +kerning first=1168 second=171 amount=-2 +kerning first=32 second=902 amount=-1 +kerning first=32 second=913 amount=-1 +kerning first=32 second=916 amount=-1 +kerning first=32 second=923 amount=-1 +kerning first=1168 second=46 amount=-3 +kerning first=1168 second=44 amount=-3 +kerning first=1118 second=46 amount=-2 +kerning first=49 second=49 amount=-2 +kerning first=65 second=32 amount=-1 +kerning first=65 second=84 amount=-2 +kerning first=65 second=86 amount=-2 +kerning first=65 second=87 amount=-1 +kerning first=65 second=89 amount=-2 +kerning first=1118 second=44 amount=-2 +kerning first=1100 second=1095 amount=-1 +kerning first=1100 second=1090 amount=-2 +kerning first=1091 second=1076 amount=-1 +kerning first=70 second=44 amount=-2 +kerning first=70 second=46 amount=-2 +kerning first=70 second=65 amount=-1 +kerning first=76 second=32 amount=-1 +kerning first=76 second=84 amount=-2 +kerning first=76 second=86 amount=-2 +kerning first=76 second=87 amount=-2 +kerning first=76 second=89 amount=-2 +kerning first=76 second=121 amount=-1 +kerning first=1091 second=46 amount=-2 +kerning first=1091 second=44 amount=-2 +kerning first=80 second=44 amount=-3 +kerning first=80 second=46 amount=-3 +kerning first=80 second=65 amount=-2 +kerning first=1090 second=1078 amount=1 +kerning first=1090 second=1076 amount=-1 +kerning first=1090 second=46 amount=-2 +kerning first=1090 second=44 amount=-2 +kerning first=1088 second=1083 amount=-1 +kerning first=84 second=44 amount=-2 +kerning first=84 second=45 amount=-1 +kerning first=84 second=46 amount=-2 +kerning first=84 second=58 amount=-2 +kerning first=84 second=894 amount=-2 +kerning first=84 second=65 amount=-2 +kerning first=1079 second=1095 amount=-1 +kerning first=84 second=97 amount=-2 +kerning first=84 second=99 amount=-2 +kerning first=84 second=101 amount=-2 +kerning first=84 second=105 amount=-1 +kerning first=84 second=111 amount=-2 +kerning first=84 second=114 amount=-1 +kerning first=84 second=115 amount=-2 +kerning first=84 second=117 amount=-1 +kerning first=84 second=119 amount=-1 +kerning first=84 second=121 amount=-1 +kerning first=86 second=44 amount=-2 +kerning first=86 second=45 amount=-1 +kerning first=86 second=46 amount=-2 +kerning first=86 second=58 amount=-1 +kerning first=86 second=894 amount=-1 +kerning first=86 second=65 amount=-2 +kerning first=86 second=97 amount=-2 +kerning first=86 second=101 amount=-1 +kerning first=1077 second=1095 amount=-1 +kerning first=86 second=111 amount=-1 +kerning first=86 second=114 amount=-1 +kerning first=86 second=117 amount=-1 +kerning first=86 second=121 amount=-1 +kerning first=87 second=44 amount=-1 +kerning first=1077 second=1090 amount=-1 +kerning first=87 second=46 amount=-1 +kerning first=1077 second=1083 amount=-1 +kerning first=1075 second=1076 amount=-1 +kerning first=87 second=65 amount=-1 +kerning first=87 second=97 amount=-1 +kerning first=1075 second=46 amount=-3 +kerning first=1075 second=44 amount=-3 +kerning first=1074 second=1098 amount=-1 +kerning first=1074 second=1095 amount=-1 +kerning first=1073 second=1098 amount=-1 +kerning first=1073 second=1095 amount=-1 +kerning first=1073 second=1093 amount=-1 +kerning first=89 second=44 amount=-3 +kerning first=89 second=45 amount=-2 +kerning first=89 second=46 amount=-3 +kerning first=89 second=58 amount=-1 +kerning first=89 second=894 amount=-1 +kerning first=89 second=65 amount=-2 +kerning first=89 second=97 amount=-2 +kerning first=89 second=101 amount=-2 +kerning first=89 second=105 amount=-1 +kerning first=89 second=111 amount=-2 +kerning first=89 second=112 amount=-2 +kerning first=89 second=113 amount=-2 +kerning first=89 second=117 amount=-1 +kerning first=89 second=118 amount=-1 +kerning first=1073 second=1083 amount=-1 +kerning first=1073 second=1076 amount=-1 +kerning first=114 second=44 amount=-1 +kerning first=114 second=46 amount=-1 +kerning first=1070 second=1083 amount=-1 +kerning first=118 second=44 amount=-2 +kerning first=118 second=46 amount=-2 +kerning first=119 second=44 amount=-1 +kerning first=119 second=46 amount=-1 +kerning first=121 second=44 amount=-2 +kerning first=121 second=46 amount=-2 +kerning first=1070 second=1076 amount=-1 +kerning first=1070 second=1063 amount=-1 +kerning first=1070 second=1061 amount=-1 +kerning first=1070 second=1058 amount=-1 +kerning first=1070 second=1051 amount=-1 +kerning first=1070 second=1044 amount=-1 +kerning first=1070 second=1040 amount=-1 +kerning first=1069 second=1083 amount=-1 +kerning first=1069 second=1076 amount=-1 +kerning first=915 second=44 amount=-2 +kerning first=915 second=46 amount=-2 +kerning first=915 second=912 amount=2 +kerning first=915 second=913 amount=-2 +kerning first=915 second=916 amount=-2 +kerning first=915 second=923 amount=-2 +kerning first=915 second=953 amount=-1 +kerning first=915 second=970 amount=1 +kerning first=1069 second=1061 amount=-1 +kerning first=1069 second=1051 amount=-1 +kerning first=1069 second=1044 amount=-1 +kerning first=920 second=933 amount=-1 +kerning first=920 second=939 amount=-1 +kerning first=934 second=913 amount=-1 +kerning first=934 second=933 amount=-1 +kerning first=934 second=939 amount=-1 +kerning first=1068 second=1071 amount=-1 +kerning first=1068 second=1063 amount=-2 +kerning first=948 second=967 amount=-1 +kerning first=1068 second=1061 amount=-1 +kerning first=1068 second=1058 amount=-2 +kerning first=1068 second=1051 amount=-1 +kerning first=1068 second=1046 amount=-1 +kerning first=1066 second=1071 amount=-1 +kerning first=1061 second=1069 amount=-1 +kerning first=1061 second=1060 amount=-1 +kerning first=1061 second=1057 amount=-1 +kerning first=1061 second=1054 amount=-1 +kerning first=1060 second=1083 amount=-1 +kerning first=1060 second=1071 amount=-1 +kerning first=1060 second=1059 amount=-1 +kerning first=1060 second=1058 amount=-1 +kerning first=966 second=967 amount=-1 +kerning first=1060 second=1051 amount=-1 +kerning first=1060 second=1044 amount=-1 +kerning first=902 second=934 amount=-1 +kerning first=1059 second=1103 amount=-1 +kerning first=902 second=932 amount=-2 +kerning first=902 second=933 amount=-2 +kerning first=902 second=939 amount=-2 +kerning first=1059 second=1102 amount=-1 +kerning first=1059 second=1097 amount=-1 +kerning first=1059 second=1096 amount=-1 +kerning first=908 second=933 amount=-1 +kerning first=910 second=920 amount=-1 +kerning first=910 second=934 amount=-1 +kerning first=910 second=945 amount=-2 +kerning first=910 second=963 amount=-2 +kerning first=910 second=966 amount=-2 +kerning first=910 second=912 amount=2 +kerning first=910 second=913 amount=-2 +kerning first=910 second=916 amount=-2 +kerning first=910 second=923 amount=-2 +kerning first=910 second=927 amount=-1 +kerning first=910 second=937 amount=-1 +kerning first=910 second=942 amount=-2 +kerning first=910 second=943 amount=-1 +kerning first=910 second=951 amount=-2 +kerning first=910 second=953 amount=-1 +kerning first=910 second=954 amount=-2 +kerning first=910 second=956 amount=-2 +kerning first=910 second=959 amount=-2 +kerning first=910 second=970 amount=1 +kerning first=910 second=972 amount=-2 +kerning first=1059 second=1094 amount=-1 +kerning first=1059 second=1093 amount=-1 +kerning first=913 second=32 amount=-1 +kerning first=1059 second=1089 amount=-1 +kerning first=1059 second=1088 amount=-1 +kerning first=913 second=934 amount=-1 +kerning first=1059 second=1087 amount=-1 +kerning first=913 second=932 amount=-2 +kerning first=913 second=933 amount=-2 +kerning first=913 second=939 amount=-2 +kerning first=1059 second=1086 amount=-1 +kerning first=1059 second=1085 amount=-1 +kerning first=1059 second=1084 amount=-1 +kerning first=916 second=32 amount=-1 +kerning first=1059 second=1083 amount=-1 +kerning first=1059 second=1082 amount=-1 +kerning first=916 second=932 amount=-1 +kerning first=916 second=933 amount=-2 +kerning first=916 second=939 amount=-2 +kerning first=922 second=920 amount=-1 +kerning first=922 second=934 amount=-1 +kerning first=1059 second=1081 amount=-1 +kerning first=1059 second=1080 amount=-1 +kerning first=1059 second=1079 amount=-1 +kerning first=1059 second=1078 amount=-1 +kerning first=922 second=927 amount=-1 +kerning first=1059 second=1077 amount=-1 +kerning first=1059 second=1076 amount=-2 +kerning first=1059 second=1075 amount=-1 +kerning first=1059 second=1074 amount=-1 +kerning first=1059 second=1060 amount=-1 +kerning first=1059 second=1054 amount=-1 +kerning first=1059 second=1051 amount=-1 +kerning first=1059 second=1044 amount=-1 +kerning first=923 second=32 amount=-1 +kerning first=1059 second=1040 amount=-1 +kerning first=1059 second=187 amount=-1 +kerning first=923 second=932 amount=-2 +kerning first=923 second=933 amount=-2 +kerning first=923 second=939 amount=-2 +kerning first=1059 second=171 amount=-1 +kerning first=1059 second=46 amount=-3 +kerning first=1059 second=44 amount=-3 +kerning first=927 second=933 amount=-1 +kerning first=927 second=939 amount=-1 +kerning first=1058 second=1103 amount=-1 +kerning first=929 second=44 amount=-3 +kerning first=929 second=46 amount=-3 +kerning first=929 second=913 amount=-2 +kerning first=929 second=916 amount=-2 +kerning first=929 second=923 amount=-2 +kerning first=931 second=964 amount=-1 +kerning first=931 second=960 amount=-1 +kerning first=1058 second=1102 amount=-1 +kerning first=932 second=44 amount=-2 +kerning first=932 second=46 amount=-2 +kerning first=932 second=58 amount=-2 +kerning first=932 second=894 amount=-2 +kerning first=1058 second=1100 amount=-1 +kerning first=1058 second=1099 amount=-1 +kerning first=932 second=945 amount=-2 +kerning first=932 second=949 amount=-2 +kerning first=932 second=963 amount=-2 +kerning first=932 second=966 amount=-2 +kerning first=932 second=912 amount=2 +kerning first=932 second=913 amount=-2 +kerning first=932 second=916 amount=-2 +kerning first=932 second=923 amount=-2 +kerning first=1058 second=1097 amount=-1 +kerning first=1058 second=1093 amount=-1 +kerning first=932 second=940 amount=-2 +kerning first=932 second=941 amount=-2 +kerning first=932 second=944 amount=-2 +kerning first=932 second=947 amount=-2 +kerning first=932 second=951 amount=-2 +kerning first=932 second=953 amount=-1 +kerning first=932 second=956 amount=-2 +kerning first=932 second=957 amount=-1 +kerning first=932 second=959 amount=-2 +kerning first=932 second=965 amount=-2 +kerning first=932 second=967 amount=-1 +kerning first=932 second=968 amount=-2 +kerning first=932 second=970 amount=2 +kerning first=932 second=971 amount=-2 +kerning first=932 second=972 amount=-2 +kerning first=932 second=973 amount=-2 +kerning first=1058 second=1091 amount=-1 +kerning first=933 second=44 amount=-3 +kerning first=933 second=45 amount=-2 +kerning first=933 second=46 amount=-3 +kerning first=933 second=58 amount=-1 +kerning first=933 second=894 amount=-1 +kerning first=933 second=920 amount=-1 +kerning first=933 second=934 amount=-1 +kerning first=933 second=945 amount=-2 +kerning first=933 second=963 amount=-2 +kerning first=933 second=966 amount=-2 +kerning first=933 second=912 amount=2 +kerning first=933 second=913 amount=-2 +kerning first=933 second=916 amount=-2 +kerning first=933 second=923 amount=-2 +kerning first=933 second=927 amount=-1 +kerning first=933 second=937 amount=-1 +kerning first=933 second=942 amount=-2 +kerning first=933 second=943 amount=-1 +kerning first=933 second=947 amount=-1 +kerning first=933 second=951 amount=-2 +kerning first=933 second=953 amount=-1 +kerning first=933 second=954 amount=-2 +kerning first=933 second=956 amount=-2 +kerning first=933 second=959 amount=-2 +kerning first=933 second=970 amount=1 +kerning first=933 second=972 amount=-2 +kerning first=936 second=945 amount=-1 +kerning first=936 second=948 amount=-1 +kerning first=936 second=963 amount=-1 +kerning first=936 second=966 amount=-1 +kerning first=936 second=940 amount=-1 +kerning first=1058 second=1089 amount=-1 +kerning first=936 second=959 amount=-1 +kerning first=936 second=969 amount=-1 +kerning first=936 second=972 amount=-1 +kerning first=936 second=974 amount=-1 +kerning first=1058 second=1088 amount=-1 +kerning first=1058 second=1087 amount=-1 +kerning first=1058 second=1086 amount=-2 +kerning first=939 second=920 amount=-1 +kerning first=939 second=934 amount=-1 +kerning first=939 second=945 amount=-2 +kerning first=939 second=963 amount=-2 +kerning first=939 second=966 amount=-2 +kerning first=939 second=912 amount=2 +kerning first=939 second=913 amount=-2 +kerning first=939 second=916 amount=-2 +kerning first=939 second=923 amount=-2 +kerning first=939 second=927 amount=-1 +kerning first=939 second=937 amount=-1 +kerning first=939 second=942 amount=-2 +kerning first=939 second=943 amount=-1 +kerning first=939 second=951 amount=-2 +kerning first=939 second=953 amount=-1 +kerning first=939 second=954 amount=-2 +kerning first=939 second=956 amount=-2 +kerning first=939 second=959 amount=-2 +kerning first=939 second=970 amount=1 +kerning first=939 second=972 amount=-2 +kerning first=950 second=945 amount=-1 +kerning first=950 second=948 amount=-1 +kerning first=950 second=963 amount=-1 +kerning first=950 second=964 amount=-1 +kerning first=950 second=966 amount=-1 +kerning first=950 second=940 amount=-1 +kerning first=1058 second=1084 amount=-1 +kerning first=950 second=947 amount=-1 +kerning first=1058 second=1083 amount=-1 +kerning first=950 second=952 amount=-1 +kerning first=1058 second=1082 amount=-1 +kerning first=1058 second=1080 amount=-1 +kerning first=950 second=957 amount=-1 +kerning first=950 second=959 amount=-1 +kerning first=950 second=969 amount=-1 +kerning first=950 second=972 amount=-1 +kerning first=950 second=974 amount=-1 +kerning first=950 second=960 amount=-1 +kerning first=1058 second=1077 amount=-1 +kerning first=1058 second=1074 amount=-1 +kerning first=1058 second=1072 amount=-1 +kerning first=1058 second=1060 amount=-1 +kerning first=1058 second=1054 amount=-1 +kerning first=1058 second=1044 amount=-1 +kerning first=1058 second=1040 amount=-1 +kerning first=1058 second=187 amount=-1 +kerning first=1058 second=171 amount=-1 +kerning first=1058 second=46 amount=-2 +kerning first=1058 second=44 amount=-2 +kerning first=1057 second=1066 amount=-1 +kerning first=1057 second=1063 amount=-1 +kerning first=1057 second=1061 amount=-1 +kerning first=1057 second=1059 amount=-1 +kerning first=1057 second=1058 amount=-1 +kerning first=1057 second=1051 amount=-1 +kerning first=1056 second=1103 amount=-1 +kerning first=1056 second=1086 amount=-1 +kerning first=1056 second=1077 amount=-1 +kerning first=1056 second=1076 amount=-2 +kerning first=1056 second=1072 amount=-1 +kerning first=955 second=965 amount=-1 +kerning first=1056 second=1061 amount=-1 +kerning first=1056 second=1058 amount=-1 +kerning first=955 second=973 amount=-1 +kerning first=1056 second=1051 amount=-1 +kerning first=958 second=945 amount=-1 +kerning first=958 second=948 amount=-1 +kerning first=958 second=963 amount=-1 +kerning first=958 second=966 amount=-1 +kerning first=958 second=940 amount=-1 +kerning first=958 second=950 amount=-1 +kerning first=958 second=958 amount=-1 +kerning first=958 second=959 amount=-1 +kerning first=958 second=962 amount=-1 +kerning first=958 second=972 amount=-1 +kerning first=1056 second=1044 amount=-1 +kerning first=1056 second=1040 amount=-1 +kerning first=959 second=967 amount=-1 +kerning first=1056 second=187 amount=-1 +kerning first=1056 second=46 amount=-4 +kerning first=1056 second=44 amount=-4 +kerning first=1054 second=1061 amount=-1 +kerning first=967 second=945 amount=-1 +kerning first=967 second=948 amount=-1 +kerning first=967 second=963 amount=-1 +kerning first=967 second=966 amount=-1 +kerning first=967 second=940 amount=-1 +kerning first=967 second=950 amount=-1 +kerning first=967 second=959 amount=-1 +kerning first=967 second=962 amount=-1 +kerning first=967 second=969 amount=-1 +kerning first=967 second=972 amount=-1 +kerning first=967 second=974 amount=-1 +kerning first=1050 second=1060 amount=-1 +kerning first=1044 second=1079 amount=1 +kerning first=969 second=967 amount=-1 +kerning first=1044 second=1063 amount=-1 +kerning first=1043 second=1103 amount=-1 +kerning first=1043 second=1102 amount=-1 +kerning first=972 second=967 amount=-1 +kerning first=1043 second=1100 amount=-1 +kerning first=1043 second=1099 amount=-1 +kerning first=1043 second=1091 amount=-1 +kerning first=974 second=967 amount=-1 +kerning first=1043 second=1088 amount=-1 +kerning first=1027 second=44 amount=-3 +kerning first=1027 second=46 amount=-3 +kerning first=1027 second=171 amount=-1 +kerning first=1027 second=187 amount=-1 +kerning first=1043 second=1086 amount=-1 +kerning first=1043 second=1085 amount=-1 +kerning first=1043 second=1084 amount=-1 +kerning first=1043 second=1083 amount=-1 +kerning first=1040 second=1044 amount=1 +kerning first=1043 second=1080 amount=-1 +kerning first=1043 second=1077 amount=-1 +kerning first=1043 second=1076 amount=-1 +kerning first=1043 second=1074 amount=-1 +kerning first=1043 second=1072 amount=-1 +kerning first=1040 second=1058 amount=-2 +kerning first=1040 second=1059 amount=-1 +kerning first=1040 second=1060 amount=-1 +kerning first=1040 second=1063 amount=-2 +kerning first=1043 second=1071 amount=-1 +kerning first=1043 second=1057 amount=-1 +kerning first=1043 second=1054 amount=-1 +kerning first=1043 second=1051 amount=-1 +kerning first=1043 second=1044 amount=-1 +kerning first=1043 second=1040 amount=-1 +kerning first=1043 second=187 amount=-1 +kerning first=1043 second=171 amount=-1 +kerning first=1043 second=46 amount=-3 +kerning first=1043 second=44 amount=-3 +kerning first=1041 second=1058 amount=-1 +kerning first=1042 second=1095 amount=-1 +kerning first=1042 second=1090 amount=-1 +kerning first=1042 second=1071 amount=-1 +kerning first=1041 second=1063 amount=-1 +kerning first=1041 second=1066 amount=-1 +kerning first=1042 second=1066 amount=-1 +kerning first=1042 second=1063 amount=-1 +kerning first=1042 second=1061 amount=-1 +kerning first=1042 second=1060 amount=-1 +kerning first=1042 second=1040 amount=-1 +kerning first=1042 second=1059 amount=-1 +kerning first=1042 second=1058 amount=-1 +kerning first=1042 second=1047 amount=-1 +kerning first=1042 second=1057 amount=-1 +kerning first=1042 second=1054 amount=-1 diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular-Title_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Title_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular-Title_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Title_0.png diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular-Title_1.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Title_1.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular-Title_1.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular-Title_1.png diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular.fnt b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular.fnt similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular.fnt rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular.fnt diff --git a/engine/src/main/resources/assets/fonts/NotoSans-Regular_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSans-Regular_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSans-Regular_0.png diff --git a/engine/src/main/resources/assets/fonts/NotoSansCJK-JP-Bold_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansCJK-JP-Bold_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSansCJK-JP-Bold_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansCJK-JP-Bold_0.png diff --git a/engine/src/main/resources/assets/fonts/NotoSansCJK-JP-Regular-Large_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansCJK-JP-Regular-Large_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSansCJK-JP-Regular-Large_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansCJK-JP-Regular-Large_0.png diff --git a/engine/src/main/resources/assets/fonts/NotoSansCJK-JP-Regular-Medium_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansCJK-JP-Regular-Medium_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSansCJK-JP-Regular-Medium_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansCJK-JP-Regular-Medium_0.png diff --git a/engine/src/main/resources/assets/fonts/NotoSansCJK-JP-Regular_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansCJK-JP-Regular_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSansCJK-JP-Regular_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansCJK-JP-Regular_0.png diff --git a/engine/src/main/resources/assets/fonts/NotoSansSymbols-Bold_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansSymbols-Bold_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSansSymbols-Bold_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansSymbols-Bold_0.png diff --git a/engine/src/main/resources/assets/fonts/NotoSansSymbols-Regular-Large_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansSymbols-Regular-Large_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSansSymbols-Regular-Large_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansSymbols-Regular-Large_0.png diff --git a/engine/src/main/resources/assets/fonts/NotoSansSymbols-Regular-Medium_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansSymbols-Regular-Medium_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSansSymbols-Regular-Medium_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansSymbols-Regular-Medium_0.png diff --git a/engine/src/main/resources/assets/fonts/NotoSansSymbols-Regular_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansSymbols-Regular_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/NotoSansSymbols-Regular_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/NotoSansSymbols-Regular_0.png diff --git a/engine/src/main/resources/assets/fonts/noto_sans_jp_hira_kana_kanji_0.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/noto_sans_jp_hira_kana_kanji_0.png similarity index 100% rename from engine/src/main/resources/assets/fonts/noto_sans_jp_hira_kana_kanji_0.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/noto_sans_jp_hira_kana_kanji_0.png diff --git a/engine/src/main/resources/assets/fonts/noto_sans_jp_hira_kana_kanji_1.png b/engine/src/main/resources/org/terasology/engine/assets/fonts/noto_sans_jp_hira_kana_kanji_1.png similarity index 100% rename from engine/src/main/resources/assets/fonts/noto_sans_jp_hira_kana_kanji_1.png rename to engine/src/main/resources/org/terasology/engine/assets/fonts/noto_sans_jp_hira_kana_kanji_1.png diff --git a/engine/src/main/resources/assets/i18n/game.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/game.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/game.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/game.lang diff --git a/engine/src/main/resources/assets/i18n/game_en.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/game_en.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/game_en.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/game_en.lang diff --git a/engine/src/main/resources/assets/i18n/menu.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu.lang diff --git a/engine/src/main/resources/assets/i18n/menu_ar.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_ar.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_ar.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_ar.lang diff --git a/engine/src/main/resources/assets/i18n/menu_cs.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_cs.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_cs.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_cs.lang diff --git a/engine/src/main/resources/assets/i18n/menu_de.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_de.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_de.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_de.lang diff --git a/engine/src/main/resources/assets/i18n/menu_en.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_en.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_en.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_en.lang diff --git a/engine/src/main/resources/assets/i18n/menu_es.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_es.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_es.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_es.lang diff --git a/engine/src/main/resources/assets/i18n/menu_fa.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_fa.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_fa.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_fa.lang diff --git a/engine/src/main/resources/assets/i18n/menu_fr.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_fr.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_fr.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_fr.lang diff --git a/engine/src/main/resources/assets/i18n/menu_gl.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_gl.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_gl.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_gl.lang diff --git a/engine/src/main/resources/assets/i18n/menu_hi.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_hi.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_hi.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_hi.lang diff --git a/engine/src/main/resources/assets/i18n/menu_hu.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_hu.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_hu.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_hu.lang diff --git a/engine/src/main/resources/assets/i18n/menu_id.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_id.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_id.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_id.lang diff --git a/engine/src/main/resources/assets/i18n/menu_it.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_it.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_it.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_it.lang diff --git a/engine/src/main/resources/assets/i18n/menu_ja.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_ja.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_ja.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_ja.lang diff --git a/engine/src/main/resources/assets/i18n/menu_ko.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_ko.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_ko.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_ko.lang diff --git a/engine/src/main/resources/assets/i18n/menu_nl.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_nl.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_nl.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_nl.lang diff --git a/engine/src/main/resources/assets/i18n/menu_pl.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_pl.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_pl.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_pl.lang diff --git a/engine/src/main/resources/assets/i18n/menu_pr.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_pr.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_pr.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_pr.lang diff --git a/engine/src/main/resources/assets/i18n/menu_pt.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_pt.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_pt.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_pt.lang diff --git a/engine/src/main/resources/assets/i18n/menu_ro.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_ro.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_ro.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_ro.lang diff --git a/engine/src/main/resources/assets/i18n/menu_ru.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_ru.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_ru.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_ru.lang diff --git a/engine/src/main/resources/assets/i18n/menu_sq.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_sq.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_sq.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_sq.lang diff --git a/engine/src/main/resources/assets/i18n/menu_sv.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_sv.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_sv.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_sv.lang diff --git a/engine/src/main/resources/assets/i18n/menu_tr.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_tr.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_tr.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_tr.lang diff --git a/engine/src/main/resources/assets/i18n/menu_uk.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_uk.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_uk.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_uk.lang diff --git a/engine/src/main/resources/assets/i18n/menu_zh.lang b/engine/src/main/resources/org/terasology/engine/assets/i18n/menu_zh.lang similarity index 100% rename from engine/src/main/resources/assets/i18n/menu_zh.lang rename to engine/src/main/resources/org/terasology/engine/assets/i18n/menu_zh.lang diff --git a/engine/src/main/resources/assets/materials/cubesm.mat b/engine/src/main/resources/org/terasology/engine/assets/materials/cubesm.mat similarity index 100% rename from engine/src/main/resources/assets/materials/cubesm.mat rename to engine/src/main/resources/org/terasology/engine/assets/materials/cubesm.mat diff --git a/engine/src/main/resources/assets/materials/default.mat b/engine/src/main/resources/org/terasology/engine/assets/materials/default.mat similarity index 100% rename from engine/src/main/resources/assets/materials/default.mat rename to engine/src/main/resources/org/terasology/engine/assets/materials/default.mat diff --git a/engine/src/main/resources/assets/materials/droppedItem.mat b/engine/src/main/resources/org/terasology/engine/assets/materials/droppedItem.mat similarity index 100% rename from engine/src/main/resources/assets/materials/droppedItem.mat rename to engine/src/main/resources/org/terasology/engine/assets/materials/droppedItem.mat diff --git a/engine/src/main/resources/assets/materials/floatingCubeSkin.mat b/engine/src/main/resources/org/terasology/engine/assets/materials/floatingCubeSkin.mat similarity index 100% rename from engine/src/main/resources/assets/materials/floatingCubeSkin.mat rename to engine/src/main/resources/org/terasology/engine/assets/materials/floatingCubeSkin.mat diff --git a/engine/src/main/resources/assets/materials/hand.mat b/engine/src/main/resources/org/terasology/engine/assets/materials/hand.mat similarity index 100% rename from engine/src/main/resources/assets/materials/hand.mat rename to engine/src/main/resources/org/terasology/engine/assets/materials/hand.mat diff --git a/engine/src/main/resources/assets/materials/testMaterial.mat b/engine/src/main/resources/org/terasology/engine/assets/materials/testMaterial.mat similarity index 100% rename from engine/src/main/resources/assets/materials/testMaterial.mat rename to engine/src/main/resources/org/terasology/engine/assets/materials/testMaterial.mat diff --git a/engine/src/main/resources/assets/materials/ui/UILitMesh.mat b/engine/src/main/resources/org/terasology/engine/assets/materials/ui/UILitMesh.mat similarity index 100% rename from engine/src/main/resources/assets/materials/ui/UILitMesh.mat rename to engine/src/main/resources/org/terasology/engine/assets/materials/ui/UILitMesh.mat diff --git a/engine/src/main/resources/assets/materials/ui/UITexture.mat b/engine/src/main/resources/org/terasology/engine/assets/materials/ui/UITexture.mat similarity index 100% rename from engine/src/main/resources/assets/materials/ui/UITexture.mat rename to engine/src/main/resources/org/terasology/engine/assets/materials/ui/UITexture.mat diff --git a/engine/src/main/resources/assets/materials/ui/UIUnderline.mat b/engine/src/main/resources/org/terasology/engine/assets/materials/ui/UIUnderline.mat similarity index 100% rename from engine/src/main/resources/assets/materials/ui/UIUnderline.mat rename to engine/src/main/resources/org/terasology/engine/assets/materials/ui/UIUnderline.mat diff --git a/engine/src/main/resources/assets/materials/white.mat b/engine/src/main/resources/org/terasology/engine/assets/materials/white.mat similarity index 100% rename from engine/src/main/resources/assets/materials/white.mat rename to engine/src/main/resources/org/terasology/engine/assets/materials/white.mat diff --git a/engine/src/main/resources/assets/mesh/Cat.obj b/engine/src/main/resources/org/terasology/engine/assets/mesh/Cat.obj similarity index 100% rename from engine/src/main/resources/assets/mesh/Cat.obj rename to engine/src/main/resources/org/terasology/engine/assets/mesh/Cat.obj diff --git a/engine/src/main/resources/assets/mesh/Pony.obj b/engine/src/main/resources/org/terasology/engine/assets/mesh/Pony.obj similarity index 100% rename from engine/src/main/resources/assets/mesh/Pony.obj rename to engine/src/main/resources/org/terasology/engine/assets/mesh/Pony.obj diff --git a/engine/src/main/resources/assets/mesh/UIBillboard.obj b/engine/src/main/resources/org/terasology/engine/assets/mesh/UIBillboard.obj similarity index 100% rename from engine/src/main/resources/assets/mesh/UIBillboard.obj rename to engine/src/main/resources/org/terasology/engine/assets/mesh/UIBillboard.obj diff --git a/engine/src/main/resources/assets/mesh/cube.obj b/engine/src/main/resources/org/terasology/engine/assets/mesh/cube.obj similarity index 100% rename from engine/src/main/resources/assets/mesh/cube.obj rename to engine/src/main/resources/org/terasology/engine/assets/mesh/cube.obj diff --git a/engine/src/main/resources/assets/mesh/hand.obj b/engine/src/main/resources/org/terasology/engine/assets/mesh/hand.obj similarity index 100% rename from engine/src/main/resources/assets/mesh/hand.obj rename to engine/src/main/resources/org/terasology/engine/assets/mesh/hand.obj diff --git a/engine/src/main/resources/assets/music/MenuTheme.ogg b/engine/src/main/resources/org/terasology/engine/assets/music/MenuTheme.ogg similarity index 100% rename from engine/src/main/resources/assets/music/MenuTheme.ogg rename to engine/src/main/resources/org/terasology/engine/assets/music/MenuTheme.ogg diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/counter.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/counter.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/counter.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/counter.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/dynselector.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/dynselector.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/dynselector.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/dynselector.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/fail.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/fail.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/fail.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/fail.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/guard.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/guard.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/guard.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/guard.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/invert.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/invert.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/invert.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/invert.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/lookup.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/lookup.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/lookup.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/lookup.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/loop.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/loop.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/loop.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/loop.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/parallel.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/parallel.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/parallel.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/parallel.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/playMusic.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/playMusic.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/playMusic.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/playMusic.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/playSound.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/playSound.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/playSound.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/playSound.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/running.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/running.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/running.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/running.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/selector.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/selector.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/selector.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/selector.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/sequence.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/sequence.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/sequence.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/sequence.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/setAnimation.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/setAnimation.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/setAnimation.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/setAnimation.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/sleep.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/sleep.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/sleep.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/sleep.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/succeed.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/succeed.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/succeed.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/succeed.prefab diff --git a/engine/src/main/resources/assets/prefabs/behaviorActions/timeout.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/timeout.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/behaviorActions/timeout.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/behaviorActions/timeout.prefab diff --git a/engine/src/main/resources/assets/prefabs/blocks/blockItemBase.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/blocks/blockItemBase.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/blocks/blockItemBase.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/blocks/blockItemBase.prefab diff --git a/engine/src/main/resources/assets/prefabs/blocks/blockType.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/blocks/blockType.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/blocks/blockType.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/blocks/blockType.prefab diff --git a/engine/src/main/resources/assets/prefabs/cubesm.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/cubesm.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/cubesm.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/cubesm.prefab diff --git a/engine/src/main/resources/assets/prefabs/damageTypes/directDamage.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/damageTypes/directDamage.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/damageTypes/directDamage.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/damageTypes/directDamage.prefab diff --git a/engine/src/main/resources/assets/prefabs/damageTypes/drowningDamage.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/damageTypes/drowningDamage.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/damageTypes/drowningDamage.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/damageTypes/drowningDamage.prefab diff --git a/engine/src/main/resources/assets/prefabs/damageTypes/explosiveDamage.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/damageTypes/explosiveDamage.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/damageTypes/explosiveDamage.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/damageTypes/explosiveDamage.prefab diff --git a/engine/src/main/resources/assets/prefabs/damageTypes/healingDamage.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/damageTypes/healingDamage.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/damageTypes/healingDamage.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/damageTypes/healingDamage.prefab diff --git a/engine/src/main/resources/assets/prefabs/damageTypes/physicalDamage.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/damageTypes/physicalDamage.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/damageTypes/physicalDamage.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/damageTypes/physicalDamage.prefab diff --git a/engine/src/main/resources/assets/prefabs/damageTypes/supportRemovedDamage.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/damageTypes/supportRemovedDamage.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/damageTypes/supportRemovedDamage.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/damageTypes/supportRemovedDamage.prefab diff --git a/engine/src/main/resources/assets/prefabs/defaultVisualCharacter.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/defaultVisualCharacter.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/defaultVisualCharacter.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/defaultVisualCharacter.prefab diff --git a/engine/src/main/resources/assets/prefabs/floatingCube.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/floatingCube.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/floatingCube.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/floatingCube.prefab diff --git a/engine/src/main/resources/assets/prefabs/iconItem.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/iconItem.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/iconItem.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/iconItem.prefab diff --git a/engine/src/main/resources/assets/prefabs/itemBase.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/itemBase.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/itemBase.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/itemBase.prefab diff --git a/engine/src/main/resources/assets/prefabs/itemPickup.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/itemPickup.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/itemPickup.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/itemPickup.prefab diff --git a/engine/src/main/resources/assets/prefabs/multiWorldSim.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/multiWorldSim.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/multiWorldSim.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/multiWorldSim.prefab diff --git a/engine/src/main/resources/assets/prefabs/null.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/null.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/null.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/null.prefab diff --git a/engine/src/main/resources/assets/prefabs/player/camera.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/player/camera.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/player/camera.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/player/camera.prefab diff --git a/engine/src/main/resources/assets/prefabs/player/client.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/player/client.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/player/client.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/player/client.prefab diff --git a/engine/src/main/resources/assets/prefabs/player/clientInfo.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/player/clientInfo.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/player/clientInfo.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/player/clientInfo.prefab diff --git a/engine/src/main/resources/assets/prefabs/player/firstPersonHeldItemMountPoint.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/player/firstPersonHeldItemMountPoint.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/player/firstPersonHeldItemMountPoint.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/player/firstPersonHeldItemMountPoint.prefab diff --git a/engine/src/main/resources/assets/prefabs/player/gaze.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/player/gaze.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/player/gaze.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/player/gaze.prefab diff --git a/engine/src/main/resources/assets/prefabs/player/hand.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/player/hand.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/player/hand.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/player/hand.prefab diff --git a/engine/src/main/resources/assets/prefabs/player/player.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/player/player.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/player/player.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/player/player.prefab diff --git a/engine/src/main/resources/assets/prefabs/player/remotePersonHeldItemMountPoint.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/player/remotePersonHeldItemMountPoint.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/player/remotePersonHeldItemMountPoint.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/player/remotePersonHeldItemMountPoint.prefab diff --git a/engine/src/main/resources/assets/prefabs/test.prefab b/engine/src/main/resources/org/terasology/engine/assets/prefabs/test.prefab similarity index 100% rename from engine/src/main/resources/assets/prefabs/test.prefab rename to engine/src/main/resources/org/terasology/engine/assets/prefabs/test.prefab diff --git a/engine/src/main/resources/assets/shaders/animateOpacity_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/animateOpacity_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/animateOpacity_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/animateOpacity_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/animateOpacity_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/animateOpacity_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/animateOpacity_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/animateOpacity_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/block.info b/engine/src/main/resources/org/terasology/engine/assets/shaders/block.info similarity index 100% rename from engine/src/main/resources/assets/shaders/block.info rename to engine/src/main/resources/org/terasology/engine/assets/shaders/block.info diff --git a/engine/src/main/resources/assets/shaders/blockSelection.info b/engine/src/main/resources/org/terasology/engine/assets/shaders/blockSelection.info similarity index 100% rename from engine/src/main/resources/assets/shaders/blockSelection.info rename to engine/src/main/resources/org/terasology/engine/assets/shaders/blockSelection.info diff --git a/engine/src/main/resources/assets/shaders/blockSelection_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/blockSelection_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/blockSelection_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/blockSelection_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/blockSelection_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/blockSelection_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/blockSelection_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/blockSelection_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/block_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/block_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/block_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/block_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/block_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/block_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/block_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/block_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/blur_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/blur_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/blur_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/blur_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/blur_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/blur_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/blur_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/blur_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/chunk_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/chunk_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/chunk_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/chunk_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/chunk_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/chunk_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/chunk_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/chunk_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/debug_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/debug_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/debug_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/debug_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/debug_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/debug_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/debug_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/debug_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/defaultTextured.info b/engine/src/main/resources/org/terasology/engine/assets/shaders/defaultTextured.info similarity index 100% rename from engine/src/main/resources/assets/shaders/defaultTextured.info rename to engine/src/main/resources/org/terasology/engine/assets/shaders/defaultTextured.info diff --git a/engine/src/main/resources/assets/shaders/defaultTextured_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/defaultTextured_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/defaultTextured_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/defaultTextured_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/defaultTextured_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/defaultTextured_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/defaultTextured_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/defaultTextured_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/default_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/default_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/default_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/default_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/default_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/default_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/default_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/default_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/downSampler_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/downSampler_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/downSampler_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/downSampler_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/downSampler_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/downSampler_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/downSampler_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/downSampler_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/fancy/testShader.info b/engine/src/main/resources/org/terasology/engine/assets/shaders/fancy/testShader.info similarity index 100% rename from engine/src/main/resources/assets/shaders/fancy/testShader.info rename to engine/src/main/resources/org/terasology/engine/assets/shaders/fancy/testShader.info diff --git a/engine/src/main/resources/assets/shaders/fancy/testShader_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/fancy/testShader_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/fancy/testShader_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/fancy/testShader_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/fancy/testShader_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/fancy/testShader_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/fancy/testShader_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/fancy/testShader_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/genericMeshMaterial.info b/engine/src/main/resources/org/terasology/engine/assets/shaders/genericMeshMaterial.info similarity index 100% rename from engine/src/main/resources/assets/shaders/genericMeshMaterial.info rename to engine/src/main/resources/org/terasology/engine/assets/shaders/genericMeshMaterial.info diff --git a/engine/src/main/resources/assets/shaders/genericMeshMaterial_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/genericMeshMaterial_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/genericMeshMaterial_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/genericMeshMaterial_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/genericMeshMaterial_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/genericMeshMaterial_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/genericMeshMaterial_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/genericMeshMaterial_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/highPass_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/highPass_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/highPass_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/highPass_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/highPass_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/highPass_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/highPass_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/highPass_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/initialPost_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/initialPost_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/initialPost_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/initialPost_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/initialPost_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/initialPost_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/initialPost_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/initialPost_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/lightBufferPass_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/lightBufferPass_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/lightBufferPass_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/lightBufferPass_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/lightBufferPass_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/lightBufferPass_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/lightBufferPass_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/lightBufferPass_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/lightGeometryPass_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/lightGeometryPass_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/lightGeometryPass_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/lightGeometryPass_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/lightGeometryPass_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/lightGeometryPass_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/lightGeometryPass_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/lightGeometryPass_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/lightShafts_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/lightShafts_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/lightShafts_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/lightShafts_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/lightShafts_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/lightShafts_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/lightShafts_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/lightShafts_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/ocDistortion_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/ocDistortion_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/ocDistortion_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ocDistortion_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/ocDistortion_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/ocDistortion_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/ocDistortion_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ocDistortion_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/particle_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/particle_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/particle_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/particle_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/particle_geom.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/particle_geom.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/particle_geom.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/particle_geom.glsl diff --git a/engine/src/main/resources/assets/shaders/particle_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/particle_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/particle_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/particle_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/post_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/post_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/post_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/post_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/post_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/post_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/post_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/post_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/prePostComposite_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/prePostComposite_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/prePostComposite_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/prePostComposite_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/prePostComposite_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/prePostComposite_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/prePostComposite_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/prePostComposite_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/shadowMap_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/shadowMap_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/shadowMap_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/shadowMap_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/shadowMap_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/shadowMap_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/shadowMap_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/shadowMap_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/simple_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/simple_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/simple_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/simple_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/simple_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/simple_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/simple_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/simple_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/sky_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/sky_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/sky_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/sky_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/sky_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/sky_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/sky_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/sky_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/sobel_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/sobel_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/sobel_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/sobel_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/sobel_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/sobel_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/sobel_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/sobel_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/ssaoBlur_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/ssaoBlur_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/ssaoBlur_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ssaoBlur_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/ssaoBlur_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/ssaoBlur_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/ssaoBlur_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ssaoBlur_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/ssao_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/ssao_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/ssao_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ssao_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/ssao_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/ssao_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/ssao_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ssao_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/toneMapping_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/toneMapping_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/toneMapping_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/toneMapping_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/toneMapping_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/toneMapping_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/toneMapping_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/toneMapping_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/ui/font.info b/engine/src/main/resources/org/terasology/engine/assets/shaders/ui/font.info similarity index 100% rename from engine/src/main/resources/assets/shaders/ui/font.info rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ui/font.info diff --git a/engine/src/main/resources/assets/shaders/ui/font_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/ui/font_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/ui/font_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ui/font_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/ui/font_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/ui/font_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/ui/font_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ui/font_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/ui/uiLitMesh.info b/engine/src/main/resources/org/terasology/engine/assets/shaders/ui/uiLitMesh.info similarity index 100% rename from engine/src/main/resources/assets/shaders/ui/uiLitMesh.info rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ui/uiLitMesh.info diff --git a/engine/src/main/resources/assets/shaders/ui/uiLitMesh_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/ui/uiLitMesh_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/ui/uiLitMesh_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ui/uiLitMesh_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/ui/uiLitMesh_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/ui/uiLitMesh_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/ui/uiLitMesh_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ui/uiLitMesh_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/ui/uitexture.info b/engine/src/main/resources/org/terasology/engine/assets/shaders/ui/uitexture.info similarity index 100% rename from engine/src/main/resources/assets/shaders/ui/uitexture.info rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ui/uitexture.info diff --git a/engine/src/main/resources/assets/shaders/ui/uitexture_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/ui/uitexture_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/ui/uitexture_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ui/uitexture_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/ui/uitexture_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/ui/uitexture_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/ui/uitexture_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/ui/uitexture_vert.glsl diff --git a/engine/src/main/resources/assets/shaders/vignette_frag.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/vignette_frag.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/vignette_frag.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/vignette_frag.glsl diff --git a/engine/src/main/resources/assets/shaders/vignette_vert.glsl b/engine/src/main/resources/org/terasology/engine/assets/shaders/vignette_vert.glsl similarity index 100% rename from engine/src/main/resources/assets/shaders/vignette_vert.glsl rename to engine/src/main/resources/org/terasology/engine/assets/shaders/vignette_vert.glsl diff --git a/engine/src/main/resources/assets/shapes/billboard.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/billboard.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/billboard.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/billboard.shape diff --git a/engine/src/main/resources/assets/shapes/cube.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/cube.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/cube.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/cube.shape diff --git a/engine/src/main/resources/assets/shapes/eighthBlock.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/eighthBlock.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/eighthBlock.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/eighthBlock.shape diff --git a/engine/src/main/resources/assets/shapes/halfBlock.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/halfBlock.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/halfBlock.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/halfBlock.shape diff --git a/engine/src/main/resources/assets/shapes/horizontalOffsetPlane.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/horizontalOffsetPlane.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/horizontalOffsetPlane.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/horizontalOffsetPlane.shape diff --git a/engine/src/main/resources/assets/shapes/loweredCube.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/loweredCube.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/loweredCube.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/loweredCube.shape diff --git a/engine/src/main/resources/assets/shapes/none.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/none.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/none.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/none.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/UpperHalfSlopeLedge.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/UpperHalfSlopeLedge.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/UpperHalfSlopeLedge.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/UpperHalfSlopeLedge.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/UpperHalfSlopeTip.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/UpperHalfSlopeTip.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/UpperHalfSlopeTip.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/UpperHalfSlopeTip.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/halfSlope.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/halfSlope.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/halfSlope.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/halfSlope.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/halfSlopeCorner.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/halfSlopeCorner.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/halfSlopeCorner.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/halfSlopeCorner.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/halfSlopeLedge.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/halfSlopeLedge.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/halfSlopeLedge.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/halfSlopeLedge.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/halfSlopeTip.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/halfSlopeTip.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/halfSlopeTip.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/halfSlopeTip.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/quarterSlope.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/quarterSlope.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/quarterSlope.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/quarterSlope.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/slope.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/slope.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/slope.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/slope.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/slopeCorner.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/slopeCorner.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/slopeCorner.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/slopeCorner.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/slopeLedge.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/slopeLedge.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/slopeLedge.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/slopeLedge.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/slopeTip.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/slopeTip.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/slopeTip.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/slopeTip.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/steepSlope.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/steepSlope.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/steepSlope.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/steepSlope.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/steepSlopeCorner.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/steepSlopeCorner.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/steepSlopeCorner.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/steepSlopeCorner.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/steepSlopeLedge.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/steepSlopeLedge.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/steepSlopeLedge.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/steepSlopeLedge.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/steepSlopeTip.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/steepSlopeTip.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/steepSlopeTip.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/steepSlopeTip.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/upperHalfSlope.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/upperHalfSlope.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/upperHalfSlope.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/upperHalfSlope.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/upperHalfSlopeCorner.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/upperHalfSlopeCorner.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/upperHalfSlopeCorner.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/upperHalfSlopeCorner.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/upperSteepSlope.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/upperSteepSlope.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/upperSteepSlope.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/upperSteepSlope.shape diff --git a/engine/src/main/resources/assets/shapes/slopes/upperSteepSlopeCorner.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/upperSteepSlopeCorner.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/slopes/upperSteepSlopeCorner.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/slopes/upperSteepSlopeCorner.shape diff --git a/engine/src/main/resources/assets/shapes/stair.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/stair.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/stair.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/stair.shape diff --git a/engine/src/main/resources/assets/shapes/testSphere.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/testSphere.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/testSphere.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/testSphere.shape diff --git a/engine/src/main/resources/assets/shapes/trimmedLoweredCube.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/trimmedLoweredCube.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/trimmedLoweredCube.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/trimmedLoweredCube.shape diff --git a/engine/src/main/resources/assets/shapes/trimmedRaisedCube.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/trimmedRaisedCube.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/trimmedRaisedCube.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/trimmedRaisedCube.shape diff --git a/engine/src/main/resources/assets/shapes/verticalOffsetPlane.shape b/engine/src/main/resources/org/terasology/engine/assets/shapes/verticalOffsetPlane.shape similarity index 100% rename from engine/src/main/resources/assets/shapes/verticalOffsetPlane.shape rename to engine/src/main/resources/org/terasology/engine/assets/shapes/verticalOffsetPlane.shape diff --git a/engine/src/main/resources/assets/skeletalMesh/3cubesm.gltf b/engine/src/main/resources/org/terasology/engine/assets/skeletalMesh/3cubesm.gltf similarity index 100% rename from engine/src/main/resources/assets/skeletalMesh/3cubesm.gltf rename to engine/src/main/resources/org/terasology/engine/assets/skeletalMesh/3cubesm.gltf diff --git a/engine/src/main/resources/assets/skeletalMesh/cubesm.gltf b/engine/src/main/resources/org/terasology/engine/assets/skeletalMesh/cubesm.gltf similarity index 100% rename from engine/src/main/resources/assets/skeletalMesh/cubesm.gltf rename to engine/src/main/resources/org/terasology/engine/assets/skeletalMesh/cubesm.gltf diff --git a/engine/src/main/resources/assets/skeletalMesh/floatingCube.gltf b/engine/src/main/resources/org/terasology/engine/assets/skeletalMesh/floatingCube.gltf similarity index 100% rename from engine/src/main/resources/assets/skeletalMesh/floatingCube.gltf rename to engine/src/main/resources/org/terasology/engine/assets/skeletalMesh/floatingCube.gltf diff --git a/engine/src/main/resources/assets/skins/behaviorEditor.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/behaviorEditor.skin similarity index 100% rename from engine/src/main/resources/assets/skins/behaviorEditor.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/behaviorEditor.skin diff --git a/engine/src/main/resources/assets/skins/chat.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/chat.skin similarity index 100% rename from engine/src/main/resources/assets/skins/chat.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/chat.skin diff --git a/engine/src/main/resources/assets/skins/console.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/console.skin similarity index 100% rename from engine/src/main/resources/assets/skins/console.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/console.skin diff --git a/engine/src/main/resources/assets/skins/contextMenuScreen.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/contextMenuScreen.skin similarity index 100% rename from engine/src/main/resources/assets/skins/contextMenuScreen.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/contextMenuScreen.skin diff --git a/engine/src/main/resources/assets/skins/deathScreen.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/deathScreen.skin similarity index 100% rename from engine/src/main/resources/assets/skins/deathScreen.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/deathScreen.skin diff --git a/engine/src/main/resources/assets/skins/debugOverlay.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/debugOverlay.skin similarity index 100% rename from engine/src/main/resources/assets/skins/debugOverlay.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/debugOverlay.skin diff --git a/engine/src/main/resources/assets/skins/default.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/default.skin similarity index 100% rename from engine/src/main/resources/assets/skins/default.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/default.skin diff --git a/engine/src/main/resources/assets/skins/framed_image.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/framed_image.skin similarity index 100% rename from engine/src/main/resources/assets/skins/framed_image.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/framed_image.skin diff --git a/engine/src/main/resources/assets/skins/graypopup.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/graypopup.skin similarity index 100% rename from engine/src/main/resources/assets/skins/graypopup.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/graypopup.skin diff --git a/engine/src/main/resources/assets/skins/hud.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/hud.skin similarity index 100% rename from engine/src/main/resources/assets/skins/hud.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/hud.skin diff --git a/engine/src/main/resources/assets/skins/loadingScreen.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/loadingScreen.skin similarity index 100% rename from engine/src/main/resources/assets/skins/loadingScreen.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/loadingScreen.skin diff --git a/engine/src/main/resources/assets/skins/mainmenu.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/mainmenu.skin similarity index 100% rename from engine/src/main/resources/assets/skins/mainmenu.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/mainmenu.skin diff --git a/engine/src/main/resources/assets/skins/messageBox.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/messageBox.skin similarity index 100% rename from engine/src/main/resources/assets/skins/messageBox.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/messageBox.skin diff --git a/engine/src/main/resources/assets/skins/notification.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/notification.skin similarity index 100% rename from engine/src/main/resources/assets/skins/notification.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/notification.skin diff --git a/engine/src/main/resources/assets/skins/nuiEditorScreen.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/nuiEditorScreen.skin similarity index 100% rename from engine/src/main/resources/assets/skins/nuiEditorScreen.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/nuiEditorScreen.skin diff --git a/engine/src/main/resources/assets/skins/onlinePlayersOverlay.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/onlinePlayersOverlay.skin similarity index 100% rename from engine/src/main/resources/assets/skins/onlinePlayersOverlay.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/onlinePlayersOverlay.skin diff --git a/engine/src/main/resources/assets/skins/pauseMenu.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/pauseMenu.skin similarity index 100% rename from engine/src/main/resources/assets/skins/pauseMenu.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/pauseMenu.skin diff --git a/engine/src/main/resources/assets/skins/popup.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/popup.skin similarity index 100% rename from engine/src/main/resources/assets/skins/popup.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/popup.skin diff --git a/engine/src/main/resources/assets/skins/settingsmenu.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/settingsmenu.skin similarity index 100% rename from engine/src/main/resources/assets/skins/settingsmenu.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/settingsmenu.skin diff --git a/engine/src/main/resources/assets/skins/solid.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/solid.skin similarity index 100% rename from engine/src/main/resources/assets/skins/solid.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/solid.skin diff --git a/engine/src/main/resources/assets/skins/treeViewTestScreen.skin b/engine/src/main/resources/org/terasology/engine/assets/skins/treeViewTestScreen.skin similarity index 100% rename from engine/src/main/resources/assets/skins/treeViewTestScreen.skin rename to engine/src/main/resources/org/terasology/engine/assets/skins/treeViewTestScreen.skin diff --git a/engine/src/main/resources/assets/sounds/Click.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/Click.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/Click.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/Click.ogg diff --git a/engine/src/main/resources/assets/sounds/Death.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/Death.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/Death.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/Death.ogg diff --git a/engine/src/main/resources/assets/sounds/Dig.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/Dig.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/Dig.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/Dig.ogg diff --git a/engine/src/main/resources/assets/sounds/Drink.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/Drink.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/Drink.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/Drink.ogg diff --git a/engine/src/main/resources/assets/sounds/FootGrass1.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/FootGrass1.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/FootGrass1.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/FootGrass1.ogg diff --git a/engine/src/main/resources/assets/sounds/FootGrass2.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/FootGrass2.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/FootGrass2.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/FootGrass2.ogg diff --git a/engine/src/main/resources/assets/sounds/FootGrass3.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/FootGrass3.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/FootGrass3.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/FootGrass3.ogg diff --git a/engine/src/main/resources/assets/sounds/FootGrass4.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/FootGrass4.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/FootGrass4.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/FootGrass4.ogg diff --git a/engine/src/main/resources/assets/sounds/FootGrass5.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/FootGrass5.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/FootGrass5.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/FootGrass5.ogg diff --git a/engine/src/main/resources/assets/sounds/HeartBeat.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/HeartBeat.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/HeartBeat.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/HeartBeat.ogg diff --git a/engine/src/main/resources/assets/sounds/Land.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/Land.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/Land.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/Land.ogg diff --git a/engine/src/main/resources/assets/sounds/Loot.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/Loot.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/Loot.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/Loot.ogg diff --git a/engine/src/main/resources/assets/sounds/PlaceBlock.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/PlaceBlock.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/PlaceBlock.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/PlaceBlock.ogg diff --git a/engine/src/main/resources/assets/sounds/RemoveBlock.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/RemoveBlock.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/RemoveBlock.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/RemoveBlock.ogg diff --git a/engine/src/main/resources/assets/sounds/Slime1.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/Slime1.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/Slime1.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/Slime1.ogg diff --git a/engine/src/main/resources/assets/sounds/Slime2.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/Slime2.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/Slime2.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/Slime2.ogg diff --git a/engine/src/main/resources/assets/sounds/Slime3.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/Slime3.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/Slime3.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/Slime3.ogg diff --git a/engine/src/main/resources/assets/sounds/Slime4.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/Slime4.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/Slime4.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/Slime4.ogg diff --git a/engine/src/main/resources/assets/sounds/Slime5.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/Slime5.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/Slime5.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/Slime5.ogg diff --git a/engine/src/main/resources/assets/sounds/Slime6.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/Slime6.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/Slime6.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/Slime6.ogg diff --git a/engine/src/main/resources/assets/sounds/camera.ogg b/engine/src/main/resources/org/terasology/engine/assets/sounds/camera.ogg similarity index 100% rename from engine/src/main/resources/assets/sounds/camera.ogg rename to engine/src/main/resources/org/terasology/engine/assets/sounds/camera.ogg diff --git a/engine/src/main/resources/assets/textures/3cubesm.png b/engine/src/main/resources/org/terasology/engine/assets/textures/3cubesm.png similarity index 100% rename from engine/src/main/resources/assets/textures/3cubesm.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/3cubesm.png diff --git a/engine/src/main/resources/assets/textures/buffs.png b/engine/src/main/resources/org/terasology/engine/assets/textures/buffs.png similarity index 100% rename from engine/src/main/resources/assets/textures/buffs.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/buffs.png diff --git a/engine/src/main/resources/assets/textures/colorGradingLut1.png b/engine/src/main/resources/org/terasology/engine/assets/textures/colorGradingLut1.png similarity index 100% rename from engine/src/main/resources/assets/textures/colorGradingLut1.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/colorGradingLut1.png diff --git a/engine/src/main/resources/assets/textures/colorGradingLut1.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/colorGradingLut1.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/colorGradingLut1.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/colorGradingLut1.texinfo diff --git a/engine/src/main/resources/assets/textures/colorGradingLut2.png b/engine/src/main/resources/org/terasology/engine/assets/textures/colorGradingLut2.png similarity index 100% rename from engine/src/main/resources/assets/textures/colorGradingLut2.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/colorGradingLut2.png diff --git a/engine/src/main/resources/assets/textures/colorGradingLut2.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/colorGradingLut2.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/colorGradingLut2.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/colorGradingLut2.texinfo diff --git a/engine/src/main/resources/assets/textures/colorGradingLutIdentity.png b/engine/src/main/resources/org/terasology/engine/assets/textures/colorGradingLutIdentity.png similarity index 100% rename from engine/src/main/resources/assets/textures/colorGradingLutIdentity.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/colorGradingLutIdentity.png diff --git a/engine/src/main/resources/assets/textures/colorGradingLutIdentity.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/colorGradingLutIdentity.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/colorGradingLutIdentity.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/colorGradingLutIdentity.texinfo diff --git a/engine/src/main/resources/assets/textures/crosshair.png b/engine/src/main/resources/org/terasology/engine/assets/textures/crosshair.png similarity index 100% rename from engine/src/main/resources/assets/textures/crosshair.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/crosshair.png diff --git a/engine/src/main/resources/assets/textures/cubesm.png b/engine/src/main/resources/org/terasology/engine/assets/textures/cubesm.png similarity index 100% rename from engine/src/main/resources/assets/textures/cubesm.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/cubesm.png diff --git a/engine/src/main/resources/assets/textures/default.png b/engine/src/main/resources/org/terasology/engine/assets/textures/default.png similarity index 100% rename from engine/src/main/resources/assets/textures/default.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/default.png diff --git a/engine/src/main/resources/assets/textures/defaultPreview.jpeg b/engine/src/main/resources/org/terasology/engine/assets/textures/defaultPreview.jpeg similarity index 100% rename from engine/src/main/resources/assets/textures/defaultPreview.jpeg rename to engine/src/main/resources/org/terasology/engine/assets/textures/defaultPreview.jpeg diff --git a/engine/src/main/resources/assets/textures/effects.png b/engine/src/main/resources/org/terasology/engine/assets/textures/effects.png similarity index 100% rename from engine/src/main/resources/assets/textures/effects.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/effects.png diff --git a/engine/src/main/resources/assets/textures/foliagecolor.png b/engine/src/main/resources/org/terasology/engine/assets/textures/foliagecolor.png similarity index 100% rename from engine/src/main/resources/assets/textures/foliagecolor.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/foliagecolor.png diff --git a/engine/src/main/resources/assets/textures/grasscolor.png b/engine/src/main/resources/org/terasology/engine/assets/textures/grasscolor.png similarity index 100% rename from engine/src/main/resources/assets/textures/grasscolor.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/grasscolor.png diff --git a/engine/src/main/resources/assets/textures/gui_menu.png b/engine/src/main/resources/org/terasology/engine/assets/textures/gui_menu.png similarity index 100% rename from engine/src/main/resources/assets/textures/gui_menu.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/gui_menu.png diff --git a/engine/src/main/resources/assets/textures/hand.png b/engine/src/main/resources/org/terasology/engine/assets/textures/hand.png similarity index 100% rename from engine/src/main/resources/assets/textures/hand.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/hand.png diff --git a/engine/src/main/resources/assets/textures/icons.png b/engine/src/main/resources/org/terasology/engine/assets/textures/icons.png similarity index 100% rename from engine/src/main/resources/assets/textures/icons.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/icons.png diff --git a/engine/src/main/resources/assets/textures/inventory.png b/engine/src/main/resources/org/terasology/engine/assets/textures/inventory.png similarity index 100% rename from engine/src/main/resources/assets/textures/inventory.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/inventory.png diff --git a/engine/src/main/resources/assets/textures/items.png b/engine/src/main/resources/org/terasology/engine/assets/textures/items.png similarity index 100% rename from engine/src/main/resources/assets/textures/items.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/items.png diff --git a/engine/src/main/resources/assets/textures/loadingBackground.jpeg b/engine/src/main/resources/org/terasology/engine/assets/textures/loadingBackground.jpeg similarity index 100% rename from engine/src/main/resources/assets/textures/loadingBackground.jpeg rename to engine/src/main/resources/org/terasology/engine/assets/textures/loadingBackground.jpeg diff --git a/engine/src/main/resources/assets/textures/loadingBackground.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/loadingBackground.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/loadingBackground.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/loadingBackground.texinfo diff --git a/engine/src/main/resources/assets/textures/menuBackground.jpeg b/engine/src/main/resources/org/terasology/engine/assets/textures/menuBackground.jpeg similarity index 100% rename from engine/src/main/resources/assets/textures/menuBackground.jpeg rename to engine/src/main/resources/org/terasology/engine/assets/textures/menuBackground.jpeg diff --git a/engine/src/main/resources/assets/textures/menuBackground.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/menuBackground.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/menuBackground.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/menuBackground.texinfo diff --git a/engine/src/main/resources/assets/textures/openbook.png b/engine/src/main/resources/org/terasology/engine/assets/textures/openbook.png similarity index 100% rename from engine/src/main/resources/assets/textures/openbook.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/openbook.png diff --git a/engine/src/main/resources/assets/textures/perlinNoiseTileable.png b/engine/src/main/resources/org/terasology/engine/assets/textures/perlinNoiseTileable.png similarity index 100% rename from engine/src/main/resources/assets/textures/perlinNoiseTileable.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/perlinNoiseTileable.png diff --git a/engine/src/main/resources/assets/textures/perlinNoiseTileable.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/perlinNoiseTileable.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/perlinNoiseTileable.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/perlinNoiseTileable.texinfo diff --git a/engine/src/main/resources/assets/textures/selection.png b/engine/src/main/resources/org/terasology/engine/assets/textures/selection.png similarity index 100% rename from engine/src/main/resources/assets/textures/selection.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/selection.png diff --git a/engine/src/main/resources/assets/textures/shadow.png b/engine/src/main/resources/org/terasology/engine/assets/textures/shadow.png similarity index 100% rename from engine/src/main/resources/assets/textures/shadow.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/shadow.png diff --git a/engine/src/main/resources/assets/textures/sky180.png b/engine/src/main/resources/org/terasology/engine/assets/textures/sky180.png similarity index 100% rename from engine/src/main/resources/assets/textures/sky180.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/sky180.png diff --git a/engine/src/main/resources/assets/textures/sky180.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/sky180.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/sky180.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/sky180.texinfo diff --git a/engine/src/main/resources/assets/textures/sky90.png b/engine/src/main/resources/org/terasology/engine/assets/textures/sky90.png similarity index 100% rename from engine/src/main/resources/assets/textures/sky90.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/sky90.png diff --git a/engine/src/main/resources/assets/textures/sky90.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/sky90.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/sky90.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/sky90.texinfo diff --git a/engine/src/main/resources/assets/textures/terasology.png b/engine/src/main/resources/org/terasology/engine/assets/textures/terasology.png similarity index 100% rename from engine/src/main/resources/assets/textures/terasology.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/terasology.png diff --git a/engine/src/main/resources/assets/textures/terrain.png b/engine/src/main/resources/org/terasology/engine/assets/textures/terrain.png similarity index 100% rename from engine/src/main/resources/assets/textures/terrain.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/terrain.png diff --git a/engine/src/main/resources/assets/textures/ui/advancedSetup/angryGooey.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/advancedSetup/angryGooey.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/advancedSetup/angryGooey.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/advancedSetup/angryGooey.png diff --git a/engine/src/main/resources/assets/textures/ui/advancedSetup/happyGooey.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/advancedSetup/happyGooey.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/advancedSetup/happyGooey.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/advancedSetup/happyGooey.png diff --git a/engine/src/main/resources/assets/textures/ui/area.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/area.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/area.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/area.png diff --git a/engine/src/main/resources/assets/textures/ui/box.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/box.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/box.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/box.png diff --git a/engine/src/main/resources/assets/textures/ui/boxActive.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/boxActive.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/boxActive.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/boxActive.png diff --git a/engine/src/main/resources/assets/textures/ui/boxDisabled.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/boxDisabled.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/boxDisabled.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/boxDisabled.png diff --git a/engine/src/main/resources/assets/textures/ui/button.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/button.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/button.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/button.png diff --git a/engine/src/main/resources/assets/textures/ui/buttonDown.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/buttonDown.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/buttonDown.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/buttonDown.png diff --git a/engine/src/main/resources/assets/textures/ui/buttonOver.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/buttonOver.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/buttonOver.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/buttonOver.png diff --git a/engine/src/main/resources/assets/textures/ui/checkbox.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkbox.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/checkbox.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkbox.png diff --git a/engine/src/main/resources/assets/textures/ui/checkbox.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkbox.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/ui/checkbox.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkbox.texinfo diff --git a/engine/src/main/resources/assets/textures/ui/checkboxChecked.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxChecked.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/checkboxChecked.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxChecked.png diff --git a/engine/src/main/resources/assets/textures/ui/checkboxChecked.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxChecked.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/ui/checkboxChecked.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxChecked.texinfo diff --git a/engine/src/main/resources/assets/textures/ui/checkboxCheckedDisabled.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxCheckedDisabled.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/checkboxCheckedDisabled.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxCheckedDisabled.png diff --git a/engine/src/main/resources/assets/textures/ui/checkboxCheckedDisabled.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxCheckedDisabled.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/ui/checkboxCheckedDisabled.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxCheckedDisabled.texinfo diff --git a/engine/src/main/resources/assets/textures/ui/checkboxCheckedHover.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxCheckedHover.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/checkboxCheckedHover.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxCheckedHover.png diff --git a/engine/src/main/resources/assets/textures/ui/checkboxCheckedHover.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxCheckedHover.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/ui/checkboxCheckedHover.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxCheckedHover.texinfo diff --git a/engine/src/main/resources/assets/textures/ui/checkboxDisabled.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxDisabled.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/checkboxDisabled.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxDisabled.png diff --git a/engine/src/main/resources/assets/textures/ui/checkboxDisabled.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxDisabled.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/ui/checkboxDisabled.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxDisabled.texinfo diff --git a/engine/src/main/resources/assets/textures/ui/checkboxHover.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxHover.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/checkboxHover.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxHover.png diff --git a/engine/src/main/resources/assets/textures/ui/checkboxHover.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxHover.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/ui/checkboxHover.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/checkboxHover.texinfo diff --git a/engine/src/main/resources/assets/textures/ui/dropdown.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/dropdown.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/dropdown.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/dropdown.png diff --git a/engine/src/main/resources/assets/textures/ui/dropdownActive.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/dropdownActive.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/dropdownActive.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/dropdownActive.png diff --git a/engine/src/main/resources/assets/textures/ui/dropdownDisabled.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/dropdownDisabled.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/dropdownDisabled.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/dropdownDisabled.png diff --git a/engine/src/main/resources/assets/textures/ui/dropdownList.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/dropdownList.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/dropdownList.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/dropdownList.png diff --git a/engine/src/main/resources/assets/textures/ui/dropdownListItemActive.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/dropdownListItemActive.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/dropdownListItemActive.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/dropdownListItemActive.png diff --git a/engine/src/main/resources/assets/textures/ui/handle.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/handle.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/handle.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/handle.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/LICENSE_NOTES b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/LICENSE_NOTES similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/LICENSE_NOTES rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/LICENSE_NOTES diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_array.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_array.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_array.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_array.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_attribute.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_attribute.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_attribute.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_attribute.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_cardLayout.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_cardLayout.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_cardLayout.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_cardLayout.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_columnlayout.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_columnlayout.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_columnlayout.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_columnlayout.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_flowlayout.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_flowlayout.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_flowlayout.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_flowlayout.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_miglayout.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_miglayout.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_miglayout.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_miglayout.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_object.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_object.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_object.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_object.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_relativelayout.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_relativelayout.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_relativelayout.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_relativelayout.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_rowlayout.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_rowlayout.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_rowlayout.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_rowlayout.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uibox.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uibox.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uibox.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uibox.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uibutton.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uibutton.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uibutton.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uibutton.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uicheckbox.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uicheckbox.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uicheckbox.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uicheckbox.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uidoubleslider.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uidoubleslider.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uidoubleslider.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uidoubleslider.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uidropdown.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uidropdown.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uidropdown.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uidropdown.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uidropdownscrollable.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uidropdownscrollable.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uidropdownscrollable.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uidropdownscrollable.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uiimage.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uiimage.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uiimage.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uiimage.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uilabel.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uilabel.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uilabel.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uilabel.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uilist.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uilist.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uilist.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uilist.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uiloadbar.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uiloadbar.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uiloadbar.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uiloadbar.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uiscrollbar.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uiscrollbar.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uiscrollbar.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uiscrollbar.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uislider.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uislider.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uislider.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uislider.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uispace.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uispace.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uispace.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uispace.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uitext.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uitext.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uitext.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uitext.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uitextentry.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uitextentry.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uitextentry.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uitextentry.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uitooltip.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uitooltip.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uitooltip.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uitooltip.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_uitreeview.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uitreeview.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_uitreeview.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_uitreeview.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/editor/editor_zoomablelayout.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_zoomablelayout.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/editor/editor_zoomablelayout.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/editor/editor_zoomablelayout.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_ar.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_ar.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_ar.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_ar.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_cs.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_cs.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_cs.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_cs.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_de.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_de.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_de.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_de.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_en.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_en.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_en.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_en.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_es.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_es.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_es.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_es.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_fa.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_fa.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_fa.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_fa.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_fr.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_fr.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_fr.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_fr.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_gl.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_gl.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_gl.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_gl.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_hi.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_hi.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_hi.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_hi.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_hu.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_hu.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_hu.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_hu.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_in.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_in.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_in.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_in.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_it.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_it.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_it.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_it.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_ja.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_ja.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_ja.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_ja.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_ko.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_ko.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_ko.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_ko.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_lt.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_lt.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_lt.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_lt.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_nl.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_nl.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_nl.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_nl.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_pl.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_pl.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_pl.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_pl.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_pr.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_pr.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_pr.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_pr.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_pt.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_pt.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_pt.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_pt.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_ro.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_ro.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_ro.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_ro.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_ru.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_ru.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_ru.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_ru.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_sq.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_sq.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_sq.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_sq.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_sv.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_sv.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_sv.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_sv.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_tr.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_tr.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_tr.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_tr.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_uk.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_uk.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_uk.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_uk.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/flags/flag_zh.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_zh.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/flags/flag_zh.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/flags/flag_zh.png diff --git a/engine/src/main/resources/assets/textures/ui/icons/icon_blank.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/icon_blank.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/icons/icon_blank.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/icons/icon_blank.png diff --git a/engine/src/main/resources/assets/textures/ui/pauseMenu/greyedBackground.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/pauseMenu/greyedBackground.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/pauseMenu/greyedBackground.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/pauseMenu/greyedBackground.png diff --git a/engine/src/main/resources/assets/textures/ui/pauseMenu/reddenedBackground.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/pauseMenu/reddenedBackground.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/pauseMenu/reddenedBackground.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/pauseMenu/reddenedBackground.png diff --git a/engine/src/main/resources/assets/textures/ui/radial/radialUnit.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/radial/radialUnit.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/radial/radialUnit.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/radial/radialUnit.png diff --git a/engine/src/main/resources/assets/textures/ui/radial/radialUnitSelected.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/radial/radialUnitSelected.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/radial/radialUnitSelected.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/radial/radialUnitSelected.png diff --git a/engine/src/main/resources/assets/textures/ui/resetBox.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/resetBox.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/resetBox.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/resetBox.png diff --git a/engine/src/main/resources/assets/textures/ui/resetBoxDisabled.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/resetBoxDisabled.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/resetBoxDisabled.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/resetBoxDisabled.png diff --git a/engine/src/main/resources/assets/textures/ui/sliderTrack.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/sliderTrack.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/sliderTrack.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/sliderTrack.png diff --git a/engine/src/main/resources/assets/textures/ui/statusBar.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/statusBar.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/statusBar.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/statusBar.png diff --git a/engine/src/main/resources/assets/textures/ui/testWindowBorder.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/testWindowBorder.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/testWindowBorder.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/testWindowBorder.png diff --git a/engine/src/main/resources/assets/textures/ui/testWindowBorder.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/testWindowBorder.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/ui/testWindowBorder.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/testWindowBorder.texinfo diff --git a/engine/src/main/resources/assets/textures/ui/testWindowBorderOver.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/testWindowBorderOver.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/testWindowBorderOver.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/testWindowBorderOver.png diff --git a/engine/src/main/resources/assets/textures/ui/testWindowBorderOver.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/testWindowBorderOver.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/ui/testWindowBorderOver.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/testWindowBorderOver.texinfo diff --git a/engine/src/main/resources/assets/textures/ui/treeView/LICENSE_NOTES b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/treeView/LICENSE_NOTES similarity index 100% rename from engine/src/main/resources/assets/textures/ui/treeView/LICENSE_NOTES rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/treeView/LICENSE_NOTES diff --git a/engine/src/main/resources/assets/textures/ui/treeView/contract.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/treeView/contract.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/treeView/contract.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/treeView/contract.png diff --git a/engine/src/main/resources/assets/textures/ui/treeView/contractOver.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/treeView/contractOver.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/treeView/contractOver.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/treeView/contractOver.png diff --git a/engine/src/main/resources/assets/textures/ui/treeView/expand.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/treeView/expand.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/treeView/expand.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/treeView/expand.png diff --git a/engine/src/main/resources/assets/textures/ui/treeView/expandOver.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/treeView/expandOver.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/treeView/expandOver.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/treeView/expandOver.png diff --git a/engine/src/main/resources/assets/textures/ui/white.png b/engine/src/main/resources/org/terasology/engine/assets/textures/ui/white.png similarity index 100% rename from engine/src/main/resources/assets/textures/ui/white.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/ui/white.png diff --git a/engine/src/main/resources/assets/textures/vignette.png b/engine/src/main/resources/org/terasology/engine/assets/textures/vignette.png similarity index 100% rename from engine/src/main/resources/assets/textures/vignette.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/vignette.png diff --git a/engine/src/main/resources/assets/textures/vignette.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/vignette.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/vignette.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/vignette.texinfo diff --git a/engine/src/main/resources/assets/textures/waterNormal.png b/engine/src/main/resources/org/terasology/engine/assets/textures/waterNormal.png similarity index 100% rename from engine/src/main/resources/assets/textures/waterNormal.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/waterNormal.png diff --git a/engine/src/main/resources/assets/textures/waterNormal.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/waterNormal.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/waterNormal.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/waterNormal.texinfo diff --git a/engine/src/main/resources/assets/textures/waterNormalAlt.png b/engine/src/main/resources/org/terasology/engine/assets/textures/waterNormalAlt.png similarity index 100% rename from engine/src/main/resources/assets/textures/waterNormalAlt.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/waterNormalAlt.png diff --git a/engine/src/main/resources/assets/textures/waterNormalAlt.texinfo b/engine/src/main/resources/org/terasology/engine/assets/textures/waterNormalAlt.texinfo similarity index 100% rename from engine/src/main/resources/assets/textures/waterNormalAlt.texinfo rename to engine/src/main/resources/org/terasology/engine/assets/textures/waterNormalAlt.texinfo diff --git a/engine/src/main/resources/assets/textures/waterStill.png b/engine/src/main/resources/org/terasology/engine/assets/textures/waterStill.png similarity index 100% rename from engine/src/main/resources/assets/textures/waterStill.png rename to engine/src/main/resources/org/terasology/engine/assets/textures/waterStill.png diff --git a/engine/src/main/resources/assets/ui/behaviorEditorScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/behaviorEditorScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/behaviorEditorScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/behaviorEditorScreen.ui diff --git a/engine/src/main/resources/assets/ui/chat.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/chat.ui similarity index 100% rename from engine/src/main/resources/assets/ui/chat.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/chat.ui diff --git a/engine/src/main/resources/assets/ui/config/autoConfigScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/config/autoConfigScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/config/autoConfigScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/config/autoConfigScreen.ui diff --git a/engine/src/main/resources/assets/ui/config/colorPickerWidget.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/config/colorPickerWidget.ui similarity index 100% rename from engine/src/main/resources/assets/ui/config/colorPickerWidget.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/config/colorPickerWidget.ui diff --git a/engine/src/main/resources/assets/ui/config/numberRangeSettingWidget.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/config/numberRangeSettingWidget.ui similarity index 100% rename from engine/src/main/resources/assets/ui/config/numberRangeSettingWidget.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/config/numberRangeSettingWidget.ui diff --git a/engine/src/main/resources/assets/ui/confirmChangePopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/confirmChangePopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/confirmChangePopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/confirmChangePopup.ui diff --git a/engine/src/main/resources/assets/ui/confirmPopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/confirmPopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/confirmPopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/confirmPopup.ui diff --git a/engine/src/main/resources/assets/ui/console.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/console.ui similarity index 100% rename from engine/src/main/resources/assets/ui/console.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/console.ui diff --git a/engine/src/main/resources/assets/ui/contextMenuScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/contextMenuScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/contextMenuScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/contextMenuScreen.ui diff --git a/engine/src/main/resources/assets/ui/editor/enumEditorScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/editor/enumEditorScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/editor/enumEditorScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/editor/enumEditorScreen.ui diff --git a/engine/src/main/resources/assets/ui/editor/nuiEditorScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/editor/nuiEditorScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/editor/nuiEditorScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/editor/nuiEditorScreen.ui diff --git a/engine/src/main/resources/assets/ui/editor/nuiEditorSettingsScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/editor/nuiEditorSettingsScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/editor/nuiEditorSettingsScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/editor/nuiEditorSettingsScreen.ui diff --git a/engine/src/main/resources/assets/ui/editor/nuiSkinEditorScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/editor/nuiSkinEditorScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/editor/nuiSkinEditorScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/editor/nuiSkinEditorScreen.ui diff --git a/engine/src/main/resources/assets/ui/editor/widgetSelectionScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/editor/widgetSelectionScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/editor/widgetSelectionScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/editor/widgetSelectionScreen.ui diff --git a/engine/src/main/resources/assets/ui/enterTextPopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/enterTextPopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/enterTextPopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/enterTextPopup.ui diff --git a/engine/src/main/resources/assets/ui/enterUsernamePopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/enterUsernamePopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/enterUsernamePopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/enterUsernamePopup.ui diff --git a/engine/src/main/resources/assets/ui/hud/toolbar.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/hud/toolbar.ui similarity index 100% rename from engine/src/main/resources/assets/ui/hud/toolbar.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/hud/toolbar.ui diff --git a/engine/src/main/resources/assets/ui/ingame/deathScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/ingame/deathScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/ingame/deathScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/ingame/deathScreen.ui diff --git a/engine/src/main/resources/assets/ui/ingame/debugInfo.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/ingame/debugInfo.ui similarity index 100% rename from engine/src/main/resources/assets/ui/ingame/debugInfo.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/ingame/debugInfo.ui diff --git a/engine/src/main/resources/assets/ui/ingame/debugOverlay.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/ingame/debugOverlay.ui similarity index 100% rename from engine/src/main/resources/assets/ui/ingame/debugOverlay.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/ingame/debugOverlay.ui diff --git a/engine/src/main/resources/assets/ui/ingame/extraMenuScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/ingame/extraMenuScreen.ui similarity index 98% rename from engine/src/main/resources/assets/ui/ingame/extraMenuScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/ingame/extraMenuScreen.ui index f73ce2c75e7..118266a919b 100644 --- a/engine/src/main/resources/assets/ui/ingame/extraMenuScreen.ui +++ b/engine/src/main/resources/org/terasology/engine/assets/ui/ingame/extraMenuScreen.ui @@ -33,7 +33,7 @@ } }, { - "type": "engine:columnLayout", + "type": "ColumnLayout", "layoutInfo": { "use-content-width": true, "use-content-height": true, diff --git a/engine/src/main/resources/assets/ui/ingame/inspectionScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/ingame/inspectionScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/ingame/inspectionScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/ingame/inspectionScreen.ui diff --git a/engine/src/main/resources/assets/ui/ingame/pauseMenu.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/ingame/pauseMenu.ui similarity index 100% rename from engine/src/main/resources/assets/ui/ingame/pauseMenu.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/ingame/pauseMenu.ui diff --git a/engine/src/main/resources/assets/ui/launchPopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/launchPopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/launchPopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/launchPopup.ui diff --git a/engine/src/main/resources/assets/ui/loadingScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/loadingScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/loadingScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/loadingScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/addServerPopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/addServerPopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/addServerPopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/addServerPopup.ui diff --git a/engine/src/main/resources/assets/ui/menu/advancedGameSetupScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/advancedGameSetupScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/advancedGameSetupScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/advancedGameSetupScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/audioMenuScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/audioMenuScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/audioMenuScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/audioMenuScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/changeBindingPopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/changeBindingPopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/changeBindingPopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/changeBindingPopup.ui diff --git a/engine/src/main/resources/assets/ui/menu/confirmUrlPopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/confirmUrlPopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/confirmUrlPopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/confirmUrlPopup.ui diff --git a/engine/src/main/resources/assets/ui/menu/creditsScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/creditsScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/creditsScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/creditsScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/devToolsMenuScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/devToolsMenuScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/devToolsMenuScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/devToolsMenuScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/extrasMenuScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/extrasMenuScreen.ui similarity index 98% rename from engine/src/main/resources/assets/ui/menu/extrasMenuScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/extrasMenuScreen.ui index b835c8da53f..cf78ba0ccd5 100644 --- a/engine/src/main/resources/assets/ui/menu/extrasMenuScreen.ui +++ b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/extrasMenuScreen.ui @@ -33,7 +33,7 @@ } }, { - "type": "engine:columnLayout", + "type": "ColumnLayout", "layoutInfo": { "use-content-width": true, "use-content-height": true, diff --git a/engine/src/main/resources/assets/ui/menu/filePickerPopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/filePickerPopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/filePickerPopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/filePickerPopup.ui diff --git a/engine/src/main/resources/assets/ui/menu/gameDetailsScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/gameDetailsScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/gameDetailsScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/gameDetailsScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/inputSettingsScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/inputSettingsScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/inputSettingsScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/inputSettingsScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/joinGameScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/joinGameScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/joinGameScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/joinGameScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/mainMenuScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/mainMenuScreen.ui similarity index 98% rename from engine/src/main/resources/assets/ui/menu/mainMenuScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/mainMenuScreen.ui index 87fb071a4da..fea77423ef2 100644 --- a/engine/src/main/resources/assets/ui/menu/mainMenuScreen.ui +++ b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/mainMenuScreen.ui @@ -32,7 +32,7 @@ } }, { - "type": "engine:columnLayout", + "type": "ColumnLayout", "layoutInfo": { "use-content-width": true, "use-content-height": true, diff --git a/engine/src/main/resources/assets/ui/menu/moduleDetailsScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/moduleDetailsScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/moduleDetailsScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/moduleDetailsScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/nameRecordingScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/nameRecordingScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/nameRecordingScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/nameRecordingScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/newGameScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/newGameScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/newGameScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/newGameScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/playerMenuScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/playerMenuScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/playerMenuScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/playerMenuScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/previewWorldScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/previewWorldScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/previewWorldScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/previewWorldScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/renderingModuleSettingScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/renderingModuleSettingScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/renderingModuleSettingScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/renderingModuleSettingScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/selectGameScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/selectGameScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/selectGameScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/selectGameScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/settingsMenuScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/settingsMenuScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/settingsMenuScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/settingsMenuScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/startPlayingScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/startPlayingScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/startPlayingScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/startPlayingScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/storageServiceLoginPopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/storageServiceLoginPopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/storageServiceLoginPopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/storageServiceLoginPopup.ui diff --git a/engine/src/main/resources/assets/ui/menu/threeButtonPopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/threeButtonPopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/threeButtonPopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/threeButtonPopup.ui diff --git a/engine/src/main/resources/assets/ui/menu/twoButtonPopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/twoButtonPopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/twoButtonPopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/twoButtonPopup.ui diff --git a/engine/src/main/resources/assets/ui/menu/universeSetupScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/universeSetupScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/universeSetupScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/universeSetupScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/videoMenuScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/videoMenuScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/videoMenuScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/videoMenuScreen.ui diff --git a/engine/src/main/resources/assets/ui/menu/worldPreGenerationScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/menu/worldPreGenerationScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/menu/worldPreGenerationScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/menu/worldPreGenerationScreen.ui diff --git a/engine/src/main/resources/assets/ui/messagePopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/messagePopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/messagePopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/messagePopup.ui diff --git a/engine/src/main/resources/assets/ui/migTestScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/migTestScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/migTestScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/migTestScreen.ui diff --git a/engine/src/main/resources/assets/ui/notificationOverlay.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/notificationOverlay.ui similarity index 100% rename from engine/src/main/resources/assets/ui/notificationOverlay.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/notificationOverlay.ui diff --git a/engine/src/main/resources/assets/ui/onlinePlayersOverlay.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/onlinePlayersOverlay.ui similarity index 100% rename from engine/src/main/resources/assets/ui/onlinePlayersOverlay.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/onlinePlayersOverlay.ui diff --git a/engine/src/main/resources/assets/ui/recordScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/recordScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/recordScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/recordScreen.ui diff --git a/engine/src/main/resources/assets/ui/replayScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/replayScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/replayScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/replayScreen.ui diff --git a/engine/src/main/resources/assets/ui/telemetryScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/telemetryScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/telemetryScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/telemetryScreen.ui diff --git a/engine/src/main/resources/assets/ui/types/builtinTypeWidgetTestScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/types/builtinTypeWidgetTestScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/types/builtinTypeWidgetTestScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/types/builtinTypeWidgetTestScreen.ui diff --git a/engine/src/main/resources/assets/ui/types/mathTypeWidgetTestScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/types/mathTypeWidgetTestScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/types/mathTypeWidgetTestScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/types/mathTypeWidgetTestScreen.ui diff --git a/engine/src/main/resources/assets/ui/waitPopup.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/waitPopup.ui similarity index 100% rename from engine/src/main/resources/assets/ui/waitPopup.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/waitPopup.ui diff --git a/engine/src/main/resources/assets/ui/worldSetupScreen.ui b/engine/src/main/resources/org/terasology/engine/assets/ui/worldSetupScreen.ui similarity index 100% rename from engine/src/main/resources/assets/ui/worldSetupScreen.ui rename to engine/src/main/resources/org/terasology/engine/assets/ui/worldSetupScreen.ui diff --git a/engine/src/main/resources/engine-module.txt b/engine/src/main/resources/org/terasology/engine/engine-module.txt similarity index 76% rename from engine/src/main/resources/engine-module.txt rename to engine/src/main/resources/org/terasology/engine/engine-module.txt index ec56868874b..156db61a748 100644 --- a/engine/src/main/resources/engine-module.txt +++ b/engine/src/main/resources/org/terasology/engine/engine-module.txt @@ -1,6 +1,6 @@ { "id" : "engine", - "version" : "4.4.0-SNAPSHOT", + "version" : "4.4.1-SNAPSHOT", "displayName" : "Terasology Engine", "description" : "Core engine content" } diff --git a/engine/src/main/resources/org/terasology/icons/gooey_sweet_128.png b/engine/src/main/resources/org/terasology/engine/icons/gooey_sweet_128.png similarity index 100% rename from engine/src/main/resources/org/terasology/icons/gooey_sweet_128.png rename to engine/src/main/resources/org/terasology/engine/icons/gooey_sweet_128.png diff --git a/engine/src/main/resources/org/terasology/icons/gooey_sweet_16.png b/engine/src/main/resources/org/terasology/engine/icons/gooey_sweet_16.png similarity index 100% rename from engine/src/main/resources/org/terasology/icons/gooey_sweet_16.png rename to engine/src/main/resources/org/terasology/engine/icons/gooey_sweet_16.png diff --git a/engine/src/main/resources/org/terasology/icons/gooey_sweet_32.png b/engine/src/main/resources/org/terasology/engine/icons/gooey_sweet_32.png similarity index 100% rename from engine/src/main/resources/org/terasology/icons/gooey_sweet_32.png rename to engine/src/main/resources/org/terasology/engine/icons/gooey_sweet_32.png diff --git a/engine/src/main/resources/org/terasology/icons/gooey_sweet_64.png b/engine/src/main/resources/org/terasology/engine/icons/gooey_sweet_64.png similarity index 100% rename from engine/src/main/resources/org/terasology/icons/gooey_sweet_64.png rename to engine/src/main/resources/org/terasology/engine/icons/gooey_sweet_64.png diff --git a/engine/src/main/resources/org/terasology/include/globalDefinesIncl.glsl b/engine/src/main/resources/org/terasology/engine/include/globalDefinesIncl.glsl similarity index 100% rename from engine/src/main/resources/org/terasology/include/globalDefinesIncl.glsl rename to engine/src/main/resources/org/terasology/engine/include/globalDefinesIncl.glsl diff --git a/engine/src/main/resources/org/terasology/include/globalFunctionsFragIncl.glsl b/engine/src/main/resources/org/terasology/engine/include/globalFunctionsFragIncl.glsl similarity index 100% rename from engine/src/main/resources/org/terasology/include/globalFunctionsFragIncl.glsl rename to engine/src/main/resources/org/terasology/engine/include/globalFunctionsFragIncl.glsl diff --git a/engine/src/main/resources/org/terasology/include/globalFunctionsVertIncl.glsl b/engine/src/main/resources/org/terasology/engine/include/globalFunctionsVertIncl.glsl similarity index 100% rename from engine/src/main/resources/org/terasology/include/globalFunctionsVertIncl.glsl rename to engine/src/main/resources/org/terasology/engine/include/globalFunctionsVertIncl.glsl diff --git a/engine/src/main/resources/org/terasology/include/globalUniformsIncl.glsl b/engine/src/main/resources/org/terasology/engine/include/globalUniformsIncl.glsl similarity index 100% rename from engine/src/main/resources/org/terasology/include/globalUniformsIncl.glsl rename to engine/src/main/resources/org/terasology/engine/include/globalUniformsIncl.glsl diff --git a/facades/PC/build.gradle.kts b/facades/PC/build.gradle.kts index 279d916aba8..6249d280a46 100644 --- a/facades/PC/build.gradle.kts +++ b/facades/PC/build.gradle.kts @@ -61,7 +61,6 @@ group = "org.terasology.facades" dependencies { implementation(project(":engine")) - implementation("org.terasology:reflections:0.9.12-MB") implementation(project(":subsystems:DiscordRPC")) // TODO: Consider whether we can move the CR dependency back here from the engine, where it is referenced from the main menu diff --git a/facades/TeraEd/src/main/java/org/terasology/editor/properties/ReflectionProvider.java b/facades/TeraEd/src/main/java/org/terasology/editor/properties/ReflectionProvider.java index 0e8551ce249..36d90209be6 100644 --- a/facades/TeraEd/src/main/java/org/terasology/editor/properties/ReflectionProvider.java +++ b/facades/TeraEd/src/main/java/org/terasology/editor/properties/ReflectionProvider.java @@ -18,7 +18,7 @@ import com.google.common.collect.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.ResourceUrn; +import org.terasology.gestalt.assets.ResourceUrn; import org.terasology.engine.context.Context; import org.terasology.nui.properties.Range; import org.terasology.reflection.copy.CopyStrategyLibrary; diff --git a/facades/TeraEd/src/main/java/org/terasology/editor/subsystem/AwtInput.java b/facades/TeraEd/src/main/java/org/terasology/editor/subsystem/AwtInput.java index a542dca5dfe..c1e1256600a 100644 --- a/facades/TeraEd/src/main/java/org/terasology/editor/subsystem/AwtInput.java +++ b/facades/TeraEd/src/main/java/org/terasology/editor/subsystem/AwtInput.java @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 package org.terasology.editor.subsystem; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.config.Config; import org.terasology.engine.config.ControllerConfig; import org.terasology.engine.context.Context; diff --git a/facades/TeraEd/src/main/java/org/terasology/editor/subsystem/LwjglPortlet.java b/facades/TeraEd/src/main/java/org/terasology/editor/subsystem/LwjglPortlet.java index c2eddd6872e..ebae5893f77 100644 --- a/facades/TeraEd/src/main/java/org/terasology/editor/subsystem/LwjglPortlet.java +++ b/facades/TeraEd/src/main/java/org/terasology/editor/subsystem/LwjglPortlet.java @@ -11,7 +11,7 @@ import org.lwjgl.system.MemoryUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.terasology.assets.module.ModuleAwareAssetTypeManager; +import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager; import org.terasology.engine.config.Config; import org.terasology.engine.config.RenderingConfig; import org.terasology.engine.context.Context; diff --git a/subsystems/DiscordRPC/src/main/java/org/terasology/subsystem/discordrpc/DiscordRPCSubSystem.java b/subsystems/DiscordRPC/src/main/java/org/terasology/subsystem/discordrpc/DiscordRPCSubSystem.java index a8a4914bfd6..0e4331471df 100644 --- a/subsystems/DiscordRPC/src/main/java/org/terasology/subsystem/discordrpc/DiscordRPCSubSystem.java +++ b/subsystems/DiscordRPC/src/main/java/org/terasology/subsystem/discordrpc/DiscordRPCSubSystem.java @@ -132,8 +132,10 @@ public synchronized void postInitialise(Context context) { @Override public synchronized void preShutdown() { - thread.disable(); - thread.stop(); + if (thread != null) { + thread.disable(); + thread.stop(); + } } @Override diff --git a/subsystems/TypeHandlerLibrary/build.gradle.kts b/subsystems/TypeHandlerLibrary/build.gradle.kts index 06d9ed35bce..e94a48bdcc3 100644 --- a/subsystems/TypeHandlerLibrary/build.gradle.kts +++ b/subsystems/TypeHandlerLibrary/build.gradle.kts @@ -17,8 +17,8 @@ dependencies { implementation("org.terasology:reflections:0.9.12-MB") implementation("org.terasology.nui:nui-reflect:3.0.0-SNAPSHOT") - implementation("org.terasology:gestalt-module:5.1.5") - implementation("org.terasology:gestalt-asset-core:5.1.5") + implementation("org.terasology.gestalt:gestalt-module:7.0.6-SNAPSHOT") + implementation("org.terasology.gestalt:gestalt-asset-core:7.0.6-SNAPSHOT") testImplementation("org.junit.jupiter:junit-jupiter-api:5.5.2") testImplementation("org.junit.jupiter:junit-jupiter-params:5.5.2") diff --git a/subsystems/TypeHandlerLibrary/src/main/java/org/terasology/persistence/typeHandling/package-info.java b/subsystems/TypeHandlerLibrary/src/main/java/org/terasology/persistence/typeHandling/package-info.java index c5a409ec97d..405e40af1e8 100644 --- a/subsystems/TypeHandlerLibrary/src/main/java/org/terasology/persistence/typeHandling/package-info.java +++ b/subsystems/TypeHandlerLibrary/src/main/java/org/terasology/persistence/typeHandling/package-info.java @@ -6,6 +6,7 @@ * Type handlers provide the algorithms for serializing and deserializing types - this uses an implementation agnostic set of interfaces * so TypeHandlers can be used for different serialization techniques (Json, Protobuf, etc). */ -@API package org.terasology.persistence.typeHandling; +@API +package org.terasology.persistence.typeHandling; -import org.terasology.module.sandbox.API; +import org.terasology.gestalt.module.sandbox.API; diff --git a/subsystems/build.gradle b/subsystems/build.gradle index 10d5d2d2a2e..0e6771f98f1 100644 --- a/subsystems/build.gradle +++ b/subsystems/build.gradle @@ -1,18 +1,14 @@ -// Copyright 2020 The Terasology Foundation +// Copyright 2021 The Terasology Foundation // SPDX-License-Identifier: Apache-2.0 -import org.reflections.Reflections -import org.reflections.scanners.SubTypesScanner -import org.reflections.scanners.TypeAnnotationsScanner -import org.reflections.util.ConfigurationBuilder - subprojects { - // Hack for getting sourcesSets.main.output there. + // Hack for getting sourcesSets.main.output there. plugins.apply('java') plugins.apply('idea') + def sourceSets = project.getConvention().getPlugin(JavaPluginConvention.class).sourceSets - + sourceSets.main.java.outputDir = new File("$buildDir/classes") idea { module { @@ -23,26 +19,4 @@ subprojects { downloadSources = true } } - - task cacheReflections { - description = 'Caches reflection output to make regular startup faster. May go stale and need cleanup at times.' - inputs.files sourceSets.main.output.classesDirs, - // getClassesDir from all sourceSets (for any jvm (seems) language) - configurations."${sourceSets.main.runtimeClasspathConfigurationName}" - - outputs.upToDateWhen {classes.state.upToDate} - def outputDir = sourceSets.main.java.outputDir - outputs.file("$outputDir/reflections.cache") - dependsOn classes - - doLast { - // Without the .mkdirs() we might hit a scenario where the classes dir doesn't exist yet - Reflections reflections = new Reflections(new ConfigurationBuilder() - .filterInputsBy { it.startsWith('org/terasology/')} - .addUrls(inputs.files.collect { it.toURI().toURL() }) - .setScanners(new TypeAnnotationsScanner(), new SubTypesScanner())) - reflections.save("$outputDir/reflections.cache") - } - } - tasks.getByName('jar').dependsOn('cacheReflections') } diff --git a/templates/build.gradle b/templates/build.gradle index 258072da71b..6f6748cfd03 100644 --- a/templates/build.gradle +++ b/templates/build.gradle @@ -5,6 +5,7 @@ buildscript { repositories { mavenCentral() + google() maven { url = uri("https://plugins.gradle.org/m2/") } diff --git a/templates/facades.gradle b/templates/facades.gradle index 236007a9bc3..b5eb74306f2 100644 --- a/templates/facades.gradle +++ b/templates/facades.gradle @@ -6,6 +6,7 @@ apply plugin: 'pmd' // Same repository configuration as root project repositories { + google() mavenCentral() // MovingBlocks Artifactory instance for libs not readily available elsewhere plus our own libs