mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-17 14:21:08 +00:00
reimplement sapling override
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
package com.dfsek.terra;
|
package com.dfsek.terra;
|
||||||
|
|
||||||
import com.dfsek.terra.api.platform.TerraPlugin;
|
import com.dfsek.terra.api.platform.TerraPlugin;
|
||||||
|
import com.dfsek.terra.api.platform.generator.GeneratorWrapper;
|
||||||
import com.dfsek.terra.api.platform.world.World;
|
import com.dfsek.terra.api.platform.world.World;
|
||||||
import com.dfsek.terra.biome.BiomeZone;
|
import com.dfsek.terra.biome.BiomeZone;
|
||||||
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
|
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
|
||||||
import com.dfsek.terra.config.base.ConfigPack;
|
import com.dfsek.terra.config.base.ConfigPack;
|
||||||
import com.dfsek.terra.generation.MasterChunkGenerator;
|
|
||||||
|
|
||||||
public class TerraWorld {
|
public class TerraWorld {
|
||||||
private final TerraBiomeGrid grid;
|
private final TerraBiomeGrid grid;
|
||||||
@@ -24,7 +24,7 @@ public class TerraWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isTerraWorld(World w) {
|
public static boolean isTerraWorld(World w) {
|
||||||
return w.getGenerator() instanceof MasterChunkGenerator;
|
return w.getGenerator().getHandle() instanceof GeneratorWrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TerraBiomeGrid getGrid() {
|
public TerraBiomeGrid getGrid() {
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.dfsek.terra.api.platform.generator;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.platform.Handle;
|
||||||
|
|
||||||
|
public interface GeneratorWrapper extends Handle {
|
||||||
|
}
|
||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
package com.dfsek.terra.bukkit.generator;
|
package com.dfsek.terra.bukkit.generator;
|
||||||
|
|
||||||
import com.dfsek.terra.api.platform.Handle;
|
|
||||||
import com.dfsek.terra.api.platform.TerraPlugin;
|
import com.dfsek.terra.api.platform.TerraPlugin;
|
||||||
|
import com.dfsek.terra.api.platform.generator.GeneratorWrapper;
|
||||||
import com.dfsek.terra.api.platform.world.Chunk;
|
import com.dfsek.terra.api.platform.world.Chunk;
|
||||||
import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
|
import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
|
||||||
import com.dfsek.terra.api.world.generation.population.PopulationManager;
|
import com.dfsek.terra.api.world.generation.population.PopulationManager;
|
||||||
@@ -30,7 +30,7 @@ import java.util.logging.Level;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements Handle {
|
public class BukkitChunkGeneratorWrapper extends ChunkGenerator implements GeneratorWrapper {
|
||||||
|
|
||||||
private static final Map<com.dfsek.terra.api.platform.world.World, PopulationManager> popMap = new HashMap<>();
|
private static final Map<com.dfsek.terra.api.platform.world.World, PopulationManager> popMap = new HashMap<>();
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,21 @@
|
|||||||
package com.dfsek.terra.bukkit.listeners;
|
package com.dfsek.terra.bukkit.listeners;
|
||||||
|
|
||||||
|
import com.dfsek.terra.TerraWorld;
|
||||||
|
import com.dfsek.terra.api.math.vector.Location;
|
||||||
import com.dfsek.terra.api.platform.TerraPlugin;
|
import com.dfsek.terra.api.platform.TerraPlugin;
|
||||||
|
import com.dfsek.terra.api.platform.world.World;
|
||||||
|
import com.dfsek.terra.api.transform.MapTransform;
|
||||||
|
import com.dfsek.terra.api.transform.Transformer;
|
||||||
|
import com.dfsek.terra.api.util.FastRandom;
|
||||||
|
import com.dfsek.terra.api.world.tree.Tree;
|
||||||
|
import com.dfsek.terra.bukkit.BukkitWorld;
|
||||||
|
import com.dfsek.terra.config.base.ConfigPack;
|
||||||
|
import com.dfsek.terra.debug.Debug;
|
||||||
|
import com.dfsek.terra.registry.TreeRegistry;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.TreeType;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.world.StructureGrowEvent;
|
import org.bukkit.event.world.StructureGrowEvent;
|
||||||
@@ -15,9 +30,19 @@ public class EventListener implements Listener {
|
|||||||
this.main = main;
|
this.main = main;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final Transformer<TreeType, String> TREE_TYPE_STRING_TRANSFORMER = new Transformer.Builder<TreeType, String>()
|
||||||
|
.addTransform(new MapTransform<TreeType, String>()
|
||||||
|
.add(TreeType.COCOA_TREE, "JUNGLE_COCOA")
|
||||||
|
.add(TreeType.BIG_TREE, "LARGE_OAK")
|
||||||
|
.add(TreeType.TALL_REDWOOD, "LARGE_SPRUCE")
|
||||||
|
.add(TreeType.REDWOOD, "SPRUCE")
|
||||||
|
.add(TreeType.TREE, "OAK")
|
||||||
|
.add(TreeType.MEGA_REDWOOD, "MEGA_SPRUCE")
|
||||||
|
.add(TreeType.SWAMP, "SWAMP_OAK"))
|
||||||
|
.addTransform(TreeType::toString).build();
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onSaplingGrow(StructureGrowEvent e) {
|
public void onSaplingGrow(StructureGrowEvent e) {
|
||||||
/*
|
|
||||||
World bukkit = new BukkitWorld(e.getWorld());
|
World bukkit = new BukkitWorld(e.getWorld());
|
||||||
if(!TerraWorld.isTerraWorld(bukkit)) return;
|
if(!TerraWorld.isTerraWorld(bukkit)) return;
|
||||||
TerraWorld tw = main.getWorld(bukkit);
|
TerraWorld tw = main.getWorld(bukkit);
|
||||||
@@ -28,14 +53,10 @@ public class EventListener implements Listener {
|
|||||||
BlockData data = block.getBlockData();
|
BlockData data = block.getBlockData();
|
||||||
block.setType(Material.AIR);
|
block.setType(Material.AIR);
|
||||||
TreeRegistry registry = c.getTreeRegistry();
|
TreeRegistry registry = c.getTreeRegistry();
|
||||||
Tree tree = registry.get(TreeType.fromBukkit(e.getSpecies()).toString());
|
Tree tree = registry.get(TREE_TYPE_STRING_TRANSFORMER.translate(e.getSpecies()));
|
||||||
Debug.info("Overriding tree type: " + e.getSpecies());
|
Debug.info("Overrode tree type: " + e.getSpecies());
|
||||||
if(tree instanceof TerraTree) {
|
org.bukkit.Location location = e.getLocation().subtract(0, 1, 0);
|
||||||
if(!((TerraTree) tree).plantBlockCheck(e.getLocation().subtract(0, 1, 0), new FastRandom(), main)) {
|
if(!tree.plant(new Location(bukkit, location.getX(), location.getY(), location.getZ()), new FastRandom())) block.setBlockData(data);
|
||||||
block.setBlockData(data);
|
|
||||||
}
|
|
||||||
} else if(!tree.plant(e.getLocation().subtract(0, 1, 0), new FastRandom(), main)) block.setBlockData(data);
|
|
||||||
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.dfsek.terra.fabric.world.generator;
|
package com.dfsek.terra.fabric.world.generator;
|
||||||
|
|
||||||
import com.dfsek.terra.api.platform.Handle;
|
import com.dfsek.terra.api.platform.generator.GeneratorWrapper;
|
||||||
import com.dfsek.terra.api.util.FastRandom;
|
import com.dfsek.terra.api.util.FastRandom;
|
||||||
import com.dfsek.terra.config.base.ConfigPack;
|
import com.dfsek.terra.config.base.ConfigPack;
|
||||||
import com.dfsek.terra.fabric.TerraFabricPlugin;
|
import com.dfsek.terra.fabric.TerraFabricPlugin;
|
||||||
@@ -30,7 +30,7 @@ import net.minecraft.world.gen.chunk.ChunkGenerator;
|
|||||||
import net.minecraft.world.gen.chunk.StructuresConfig;
|
import net.minecraft.world.gen.chunk.StructuresConfig;
|
||||||
import net.minecraft.world.gen.chunk.VerticalBlockSample;
|
import net.minecraft.world.gen.chunk.VerticalBlockSample;
|
||||||
|
|
||||||
public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Handle {
|
public class FabricChunkGeneratorWrapper extends ChunkGenerator implements GeneratorWrapper {
|
||||||
private final long seed;
|
private final long seed;
|
||||||
private final MasterChunkGenerator delegate;
|
private final MasterChunkGenerator delegate;
|
||||||
private final TerraBiomeSource biomeSource;
|
private final TerraBiomeSource biomeSource;
|
||||||
|
|||||||
Reference in New Issue
Block a user