Small fixes, custom biome data
This commit is contained in:
parent
6487efb3de
commit
6e882d08d9
4 changed files with 48 additions and 11 deletions
|
@ -8,7 +8,7 @@ yarn_mappings=6
|
|||
loader_version=0.11.3
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 0.1.17
|
||||
mod_version = 0.1.18
|
||||
maven_group = ru.bclib
|
||||
archives_base_name = bclib
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package ru.bclib.util;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Random;
|
||||
|
||||
public class WeighTree<T> {
|
||||
|
@ -20,20 +21,20 @@ public class WeighTree<T> {
|
|||
return root.get(random.nextFloat() * maxWeight);
|
||||
}
|
||||
|
||||
private Node getNode(WeightedList<T> biomes) {
|
||||
int size = biomes.size();
|
||||
private Node getNode(WeightedList<T> list) {
|
||||
int size = list.size();
|
||||
if (size == 1) {
|
||||
return new Leaf(biomes.get(0));
|
||||
return new Leaf(list.get(0));
|
||||
}
|
||||
else if (size == 2) {
|
||||
T first = biomes.get(0);
|
||||
return new Branch(biomes.getWeight(0), new Leaf(first), new Leaf(biomes.get(1)));
|
||||
T first = list.get(0);
|
||||
return new Branch(list.getWeight(0), new Leaf(first), new Leaf(list.get(1)));
|
||||
}
|
||||
else {
|
||||
int index = size >> 1;
|
||||
float separator = biomes.getWeight(index);
|
||||
Node a = getNode(biomes.subList(0, index + 1));
|
||||
Node b = getNode(biomes.subList(index, size));
|
||||
float separator = list.getWeight(index);
|
||||
Node a = getNode(list.subList(0, index + 1));
|
||||
Node b = getNode(list.subList(index, size));
|
||||
return new Branch(separator, a, b);
|
||||
}
|
||||
}
|
||||
|
@ -57,18 +58,33 @@ public class WeighTree<T> {
|
|||
T get(float value) {
|
||||
return value < separator ? min.get(value) : max.get(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format(Locale.ROOT, "[%f, %s, %s]", separator, min.toString(), max.toString());
|
||||
}
|
||||
}
|
||||
|
||||
private class Leaf extends Node {
|
||||
final T biome;
|
||||
|
||||
Leaf(T biome) {
|
||||
this.biome = biome;
|
||||
Leaf(T value) {
|
||||
this.biome = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
T get(float value) {
|
||||
return biome;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format(Locale.ROOT, "[%s]", biome.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return root.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,9 +2,11 @@ package ru.bclib.world.biomes;
|
|||
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
|
@ -31,6 +33,7 @@ public class BCLBiome {
|
|||
protected float maxSubBiomeChance = 1;
|
||||
protected final float genChance;
|
||||
|
||||
private final Map<String, Object> customData;
|
||||
private final float fogDensity;
|
||||
private BCLFeature structuresFeature;
|
||||
private Biome actualBiome;
|
||||
|
@ -44,6 +47,7 @@ public class BCLBiome {
|
|||
this.biome = definition.build();
|
||||
this.genChance = definition.getGenChance();
|
||||
this.fogDensity = definition.getFodDensity();
|
||||
this.customData = definition.getCustomData();
|
||||
}
|
||||
|
||||
public BCLBiome(ResourceLocation id, Biome biome, float fogDensity, float genChance) {
|
||||
|
@ -52,6 +56,7 @@ public class BCLBiome {
|
|||
this.genChance = genChance;
|
||||
this.fogDensity = fogDensity;
|
||||
this.readStructureList();
|
||||
this.customData = Maps.newHashMap();
|
||||
}
|
||||
|
||||
public BCLBiome getEdge() {
|
||||
|
@ -179,4 +184,9 @@ public class BCLBiome {
|
|||
public int hashCode() {
|
||||
return mcID.hashCode();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T getCustomData(String name) {
|
||||
return (T) customData.get(name);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package ru.bclib.world.biomes;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.core.particles.ParticleOptions;
|
||||
|
@ -50,6 +52,7 @@ public class BCLBiomeDef {
|
|||
private final List<CarverInfo> carvers = Lists.newArrayList();
|
||||
private final List<SpawnInfo> mobs = Lists.newArrayList();
|
||||
private final List<SpawnerData> spawns = Lists.newArrayList();
|
||||
private final Map<String, Object> customData = Maps.newHashMap();
|
||||
|
||||
private final ResourceLocation id;
|
||||
|
||||
|
@ -369,4 +372,12 @@ public class BCLBiomeDef {
|
|||
carvers.add(info);
|
||||
return this;
|
||||
}
|
||||
|
||||
public void addCustomData(String name, Object value) {
|
||||
customData.put(name, value);
|
||||
}
|
||||
|
||||
protected Map<String, Object> getCustomData() {
|
||||
return customData;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue