mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-19 07:11:14 +00:00
create noise distributor
This commit is contained in:
+14
@@ -1,17 +1,27 @@
|
|||||||
package com.dfsek.terra.addons.feature.distributor;
|
package com.dfsek.terra.addons.feature.distributor;
|
||||||
|
|
||||||
|
import com.dfsek.tectonic.loading.object.ObjectTemplate;
|
||||||
|
import com.dfsek.terra.addons.feature.distributor.config.NoiseDistributorTemplate;
|
||||||
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.addon.annotations.Addon;
|
import com.dfsek.terra.api.addon.annotations.Addon;
|
||||||
import com.dfsek.terra.api.addon.annotations.Author;
|
import com.dfsek.terra.api.addon.annotations.Author;
|
||||||
import com.dfsek.terra.api.addon.annotations.Version;
|
import com.dfsek.terra.api.addon.annotations.Version;
|
||||||
import com.dfsek.terra.api.event.EventListener;
|
import com.dfsek.terra.api.event.EventListener;
|
||||||
|
import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent;
|
||||||
import com.dfsek.terra.api.injection.annotations.Inject;
|
import com.dfsek.terra.api.injection.annotations.Inject;
|
||||||
|
import com.dfsek.terra.api.registry.CheckedRegistry;
|
||||||
|
import com.dfsek.terra.api.structure.feature.Distributor;
|
||||||
|
import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||||
|
import com.dfsek.terra.api.util.seeded.SeededBuilder;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
@Addon("config-distributors")
|
@Addon("config-distributors")
|
||||||
@Version("1.0.0")
|
@Version("1.0.0")
|
||||||
@Author("Terra")
|
@Author("Terra")
|
||||||
public class DistributorAddon extends TerraAddon implements EventListener {
|
public class DistributorAddon extends TerraAddon implements EventListener {
|
||||||
|
public static final TypeKey<Supplier<ObjectTemplate<SeededBuilder<Distributor>>>> DISTRIBUTOR_TOKEN = new TypeKey<>() {};
|
||||||
@Inject
|
@Inject
|
||||||
private TerraPlugin main;
|
private TerraPlugin main;
|
||||||
|
|
||||||
@@ -21,4 +31,8 @@ public class DistributorAddon extends TerraAddon implements EventListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void packPreLoad(ConfigPackPreLoadEvent event) {
|
||||||
|
CheckedRegistry<Supplier<ObjectTemplate<SeededBuilder<Distributor>>>> distributorRegistry = event.getPack().getOrCreateRegistry(DISTRIBUTOR_TOKEN);
|
||||||
|
distributorRegistry.register("NOISE", NoiseDistributorTemplate::new);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
package com.dfsek.terra.addons.feature.distributor.config;
|
||||||
|
|
||||||
|
import com.dfsek.tectonic.annotations.Value;
|
||||||
|
import com.dfsek.tectonic.loading.object.ObjectTemplate;
|
||||||
|
import com.dfsek.terra.addons.feature.distributor.distributors.NoiseDistributor;
|
||||||
|
import com.dfsek.terra.api.structure.feature.Distributor;
|
||||||
|
import com.dfsek.terra.api.util.seeded.SeededBuilder;
|
||||||
|
import com.dfsek.terra.api.util.seeded.SeededNoiseSampler;
|
||||||
|
|
||||||
|
public class NoiseDistributorTemplate implements ObjectTemplate<SeededBuilder<Distributor>> {
|
||||||
|
@Value("distribution")
|
||||||
|
private SeededNoiseSampler noise;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SeededBuilder<Distributor> get() {
|
||||||
|
return seed -> new NoiseDistributor(noise.build(seed));
|
||||||
|
}
|
||||||
|
}
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
package com.dfsek.terra.addons.feature.distributor.distributors;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.noise.NoiseSampler;
|
||||||
|
import com.dfsek.terra.api.structure.feature.Distributor;
|
||||||
|
|
||||||
|
public class NoiseDistributor implements Distributor {
|
||||||
|
private final NoiseSampler sampler;
|
||||||
|
|
||||||
|
public NoiseDistributor(NoiseSampler sampler) {
|
||||||
|
this.sampler = sampler;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean matches(int x, int z) {
|
||||||
|
return sampler.getNoise(x, z) > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user