mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-04 00:45:57 +00:00
fix probability collection loading
This commit is contained in:
parent
dea12d3056
commit
d2298240ed
@ -13,10 +13,22 @@ import java.util.Map;
|
|||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public class PaletteLayerLoader implements TypeLoader<PaletteLayerHolder> {
|
public class PaletteLayerLoader implements TypeLoader<PaletteLayerHolder> {
|
||||||
|
private static final Type BLOCK_DATA_PROBABILITY_COLLECTION_TYPE;
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private ProbabilityCollection<BlockState> blockStateProbabilityCollection;
|
||||||
|
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = PaletteLayerLoader.class.getDeclaredField("blockStateProbabilityCollection").getGenericType();
|
||||||
|
} catch(NoSuchFieldException e) {
|
||||||
|
throw new Error("this should never happen. i dont know what you did to make this happen but something is very wrong.", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PaletteLayerHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException {
|
public PaletteLayerHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException {
|
||||||
Map<String, Object> map = (Map<String, Object>) o;
|
Map<String, Object> map = (Map<String, Object>) o;
|
||||||
ProbabilityCollection<BlockState> collection = (ProbabilityCollection<BlockState>) configLoader.loadType(/*Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE*/null, map.get("materials"));
|
ProbabilityCollection<BlockState> collection = (ProbabilityCollection<BlockState>) configLoader.loadType(BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials"));
|
||||||
|
|
||||||
NoiseSampler sampler = null;
|
NoiseSampler sampler = null;
|
||||||
if(map.containsKey("noise")) {
|
if(map.containsKey("noise")) {
|
||||||
|
@ -6,6 +6,7 @@ import java.lang.annotation.Annotation;
|
|||||||
import java.lang.reflect.AnnotatedElement;
|
import java.lang.reflect.AnnotatedElement;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.lang.reflect.Type;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
@ -4,6 +4,7 @@ import com.dfsek.tectonic.loading.TypeRegistry;
|
|||||||
import com.dfsek.terra.api.TerraPlugin;
|
import com.dfsek.terra.api.TerraPlugin;
|
||||||
import com.dfsek.terra.api.addon.TerraAddon;
|
import com.dfsek.terra.api.addon.TerraAddon;
|
||||||
import com.dfsek.terra.api.block.BlockType;
|
import com.dfsek.terra.api.block.BlockType;
|
||||||
|
import com.dfsek.terra.api.block.state.BlockState;
|
||||||
import com.dfsek.terra.api.tectonic.LoaderRegistrar;
|
import com.dfsek.terra.api.tectonic.LoaderRegistrar;
|
||||||
import com.dfsek.terra.api.util.MaterialSet;
|
import com.dfsek.terra.api.util.MaterialSet;
|
||||||
import com.dfsek.terra.api.util.ProbabilityCollection;
|
import com.dfsek.terra.api.util.ProbabilityCollection;
|
||||||
@ -33,7 +34,8 @@ public class GenericLoaders implements LoaderRegistrar {
|
|||||||
|
|
||||||
if(main != null) {
|
if(main != null) {
|
||||||
registry.registerLoader(TerraAddon.class, main.getAddons())
|
registry.registerLoader(TerraAddon.class, main.getAddons())
|
||||||
.registerLoader(BlockType.class, (t, object, cf) -> main.getWorldHandle().createBlockData((String) object).getBlockType());
|
.registerLoader(BlockType.class, (t, object, cf) -> main.getWorldHandle().createBlockData((String) object).getBlockType())
|
||||||
|
.registerLoader(BlockState.class, (t, object, cf) -> main.getWorldHandle().createBlockData((String) object));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
package com.dfsek.terra.config.loaders;
|
|
||||||
|
|
||||||
import com.dfsek.terra.api.block.state.BlockState;
|
|
||||||
import com.dfsek.terra.api.util.ProbabilityCollection;
|
|
||||||
import com.dfsek.terra.api.world.Flora;
|
|
||||||
import com.dfsek.terra.api.world.Tree;
|
|
||||||
import com.dfsek.terra.api.world.biome.TerraBiome;
|
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class to hold Type instances for types with generics.
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
public final class Types {
|
|
||||||
public static final Type BLOCK_DATA_PROBABILITY_COLLECTION_TYPE;
|
|
||||||
public static final Type FLORA_PROBABILITY_COLLECTION_TYPE;
|
|
||||||
public static final Type TREE_PROBABILITY_COLLECTION_TYPE;
|
|
||||||
public static final Type TERRA_BIOME_PROBABILITY_COLLECTION_TYPE;
|
|
||||||
public static final Type TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP;
|
|
||||||
|
|
||||||
static {
|
|
||||||
BLOCK_DATA_PROBABILITY_COLLECTION_TYPE = getType("blockStateProbabilityCollection");
|
|
||||||
FLORA_PROBABILITY_COLLECTION_TYPE = getType("floraProbabilityCollection");
|
|
||||||
TREE_PROBABILITY_COLLECTION_TYPE = getType("treeProbabilityCollection");
|
|
||||||
TERRA_BIOME_PROBABILITY_COLLECTION_TYPE = getType("terraBiomeProbabilityCollection");
|
|
||||||
TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP = getType("terraBiomeProbabilityCollectionMap");
|
|
||||||
}
|
|
||||||
|
|
||||||
private ProbabilityCollection<BlockState> blockStateProbabilityCollection;
|
|
||||||
private ProbabilityCollection<Flora> floraProbabilityCollection;
|
|
||||||
private ProbabilityCollection<Tree> treeProbabilityCollection;
|
|
||||||
private ProbabilityCollection<TerraBiome> terraBiomeProbabilityCollection;
|
|
||||||
private Map<TerraBiome, ProbabilityCollection<TerraBiome>> terraBiomeProbabilityCollectionMap;
|
|
||||||
|
|
||||||
private static Type getType(String dummyFieldName) {
|
|
||||||
try {
|
|
||||||
return Types.class.getDeclaredField(dummyFieldName).getGenericType();
|
|
||||||
} catch(NoSuchFieldException e) {
|
|
||||||
throw new Error("this should never happen. i dont know what you did to make this happen but something is very wrong.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -30,6 +30,7 @@ import com.dfsek.terra.api.util.generic.pair.ImmutablePair;
|
|||||||
import com.dfsek.terra.api.util.seeded.NoiseProvider;
|
import com.dfsek.terra.api.util.seeded.NoiseProvider;
|
||||||
import com.dfsek.terra.api.world.TerraWorld;
|
import com.dfsek.terra.api.world.TerraWorld;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
import com.dfsek.terra.config.GenericLoaders;
|
||||||
import com.dfsek.terra.config.dummy.DummyWorld;
|
import com.dfsek.terra.config.dummy.DummyWorld;
|
||||||
import com.dfsek.terra.config.fileloaders.FolderLoader;
|
import com.dfsek.terra.config.fileloaders.FolderLoader;
|
||||||
import com.dfsek.terra.config.fileloaders.ZIPLoader;
|
import com.dfsek.terra.config.fileloaders.ZIPLoader;
|
||||||
@ -100,11 +101,12 @@ public class ConfigPackImpl implements ConfigPack {
|
|||||||
long l = System.nanoTime();
|
long l = System.nanoTime();
|
||||||
|
|
||||||
register(abstractConfigLoader);
|
register(abstractConfigLoader);
|
||||||
register(selfLoader);
|
|
||||||
|
|
||||||
main.register(selfLoader);
|
|
||||||
main.register(abstractConfigLoader);
|
main.register(abstractConfigLoader);
|
||||||
|
|
||||||
|
register(selfLoader);
|
||||||
|
main.register(selfLoader);
|
||||||
|
|
||||||
|
|
||||||
File pack = new File(folder, "pack.yml");
|
File pack = new File(folder, "pack.yml");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -145,6 +147,9 @@ public class ConfigPackImpl implements ConfigPack {
|
|||||||
register(selfLoader);
|
register(selfLoader);
|
||||||
main.register(selfLoader);
|
main.register(selfLoader);
|
||||||
|
|
||||||
|
register(abstractConfigLoader);
|
||||||
|
main.register(abstractConfigLoader);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ZipEntry pack = null;
|
ZipEntry pack = null;
|
||||||
Enumeration<? extends ZipEntry> entries = file.entries();
|
Enumeration<? extends ZipEntry> entries = file.entries();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user