mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-02-16 02:20:57 +00:00
Trees no longer crash fabric. they are incredibly dumb on fabric so i will do them later
This commit is contained in:
@@ -10,6 +10,8 @@ import com.dfsek.terra.api.generic.world.World;
|
||||
import com.dfsek.terra.api.generic.world.WorldHandle;
|
||||
import com.dfsek.terra.api.generic.world.block.BlockData;
|
||||
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
||||
import com.dfsek.terra.api.translator.MapTransform;
|
||||
import com.dfsek.terra.api.translator.Transformer;
|
||||
import com.dfsek.terra.config.base.PluginConfig;
|
||||
import com.dfsek.terra.config.lang.LangUtil;
|
||||
import com.dfsek.terra.fabric.inventory.FabricItemHandle;
|
||||
@@ -29,6 +31,10 @@ import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.world.biome.Biome;
|
||||
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
||||
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
|
||||
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
||||
import net.minecraft.world.gen.feature.Feature;
|
||||
import net.minecraft.world.gen.feature.HugeMushroomFeature;
|
||||
import net.minecraft.world.gen.feature.TreeFeature;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
@@ -150,6 +156,27 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
instance = this;
|
||||
|
||||
Map<Identifier, Feature<?>> treeFeatureMap = new HashMap<>();
|
||||
BuiltinRegistries.CONFIGURED_FEATURE.stream().filter(feature ->
|
||||
feature.feature instanceof TreeFeature
|
||||
|| feature.feature instanceof HugeMushroomFeature).forEach(tree -> System.out.println(BuiltinRegistries.CONFIGURED_FEATURE.getId(tree)));
|
||||
|
||||
Transformer<String, ConfiguredFeature<?, ?>> treeTransformer = new Transformer.Builder<String, ConfiguredFeature<?, ?>>()
|
||||
.addTransform(id -> BuiltinRegistries.CONFIGURED_FEATURE.get(Identifier.tryParse(id)))
|
||||
.addTransform(new MapTransform<String, ConfiguredFeature<?, ?>>()
|
||||
.add("BROWN_MUSHROOM", BuiltinRegistries.CONFIGURED_FEATURE.get(Identifier.tryParse("minecraft:huge_brown_mushroom")))
|
||||
.add("RED_MUSHROOM", BuiltinRegistries.CONFIGURED_FEATURE.get(Identifier.tryParse("minecraft:huge_red_mushroom")))
|
||||
.add("JUNGLE", BuiltinRegistries.CONFIGURED_FEATURE.get(Identifier.tryParse("minecraft:mega_jungle_tree")))
|
||||
.add("JUNGLE_COCOA", BuiltinRegistries.CONFIGURED_FEATURE.get(Identifier.tryParse("minecraft:jungle_tree_no_vine")))
|
||||
.add("LARGE_OAK", BuiltinRegistries.CONFIGURED_FEATURE.get(Identifier.tryParse("minecraft:fancy_oak")))
|
||||
.add("LARGE_SPRUCE", BuiltinRegistries.CONFIGURED_FEATURE.get(Identifier.tryParse("minecraft:pine")))
|
||||
.add("SMALL_JUNGLE", BuiltinRegistries.CONFIGURED_FEATURE.get(Identifier.tryParse("minecraft:jungle_tree")))
|
||||
.add("SWAMP_OAK", BuiltinRegistries.CONFIGURED_FEATURE.get(Identifier.tryParse("minecraft:oak")))
|
||||
.add("TALL_BIRCH", BuiltinRegistries.CONFIGURED_FEATURE.get(Identifier.tryParse("minecraft:birch"))))
|
||||
.addTransform(id -> BuiltinRegistries.CONFIGURED_FEATURE.get(Identifier.tryParse("minecraft:" + id.toLowerCase()))).build();
|
||||
((FabricWorldHandle) worldHandle).setTreeTransformer(treeTransformer);
|
||||
|
||||
config = new File(FabricLoader.getInstance().getConfigDir().toFile(), "Terra");
|
||||
saveDefaultConfig();
|
||||
plugin.load(this);
|
||||
@@ -157,6 +184,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
||||
logger.info("Initializing Terra...");
|
||||
registry.loadAll(this);
|
||||
|
||||
|
||||
/*
|
||||
registry.forEach(config -> {
|
||||
String pack = config.getTemplate().getID().toLowerCase();
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.dfsek.terra.fabric.world;
|
||||
|
||||
import com.dfsek.terra.api.generic.Tree;
|
||||
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
||||
import com.dfsek.terra.api.generic.world.vector.Location;
|
||||
import com.dfsek.terra.fabric.TerraFabricPlugin;
|
||||
import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator;
|
||||
import com.dfsek.terra.fabric.world.handles.world.FabricWorldAccess;
|
||||
import com.dfsek.terra.util.MaterialSet;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.StructureWorldAccess;
|
||||
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
||||
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
public class FabricTree implements Tree {
|
||||
private final ConfiguredFeature<?, ?> delegate;
|
||||
|
||||
public FabricTree(ConfiguredFeature<?, ?> delegate) {
|
||||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean plant(Location l, Random r) {
|
||||
FabricWorldAccess fabricWorldAccess = ((FabricWorldAccess) l.getWorld());
|
||||
ChunkGenerator generatorWrapper = ((FabricChunkGenerator) fabricWorldAccess.getGenerator()).getHandle();
|
||||
return delegate.generate((StructureWorldAccess) fabricWorldAccess.getHandle(), generatorWrapper, r, new BlockPos(l.getBlockX(), l.getBlockY(), l.getBlockZ()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<MaterialData> getSpawnable() {
|
||||
return MaterialSet.get(TerraFabricPlugin.getInstance().getWorldHandle().createMaterialData("minecraft:grass_block"),
|
||||
TerraFabricPlugin.getInstance().getWorldHandle().createMaterialData("minecraft:podzol"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConfiguredFeature<?, ?> getHandle() {
|
||||
return delegate;
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import com.dfsek.terra.api.generic.world.WorldHandle;
|
||||
import com.dfsek.terra.api.generic.world.block.Block;
|
||||
import com.dfsek.terra.api.generic.world.block.BlockData;
|
||||
import com.dfsek.terra.api.generic.world.block.MaterialData;
|
||||
import com.dfsek.terra.api.translator.Transformer;
|
||||
import com.dfsek.terra.fabric.world.block.FabricBlockData;
|
||||
import com.dfsek.terra.fabric.world.block.FabricMaterialData;
|
||||
import com.dfsek.terra.fabric.world.block.data.FabricMultipleFacing;
|
||||
@@ -16,10 +17,17 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.command.argument.BlockArgumentParser;
|
||||
import net.minecraft.state.property.Properties;
|
||||
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class FabricWorldHandle implements WorldHandle {
|
||||
private Transformer<String, ConfiguredFeature<?, ?>> treeTransformer;
|
||||
|
||||
public void setTreeTransformer(Transformer<String, ConfiguredFeature<?, ?>> treeTransformer) {
|
||||
this.treeTransformer = treeTransformer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockData(Block block, BlockData data, boolean physics) {
|
||||
block.setBlockData(data, physics);
|
||||
@@ -59,6 +67,6 @@ public class FabricWorldHandle implements WorldHandle {
|
||||
|
||||
@Override
|
||||
public Tree getTree(String id) {
|
||||
return null;
|
||||
return new FabricTree(treeTransformer.translate(id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.dfsek.terra.generation.TerraChunkGenerator;
|
||||
import com.dfsek.terra.population.CavePopulator;
|
||||
import com.dfsek.terra.population.FloraPopulator;
|
||||
import com.dfsek.terra.population.OrePopulator;
|
||||
import com.dfsek.terra.population.TreePopulator;
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import net.minecraft.block.BlockState;
|
||||
@@ -50,6 +51,7 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Handl
|
||||
private final CavePopulator cavePopulator = new CavePopulator(TerraFabricPlugin.getInstance());
|
||||
private final FloraPopulator floraPopulator = new FloraPopulator(TerraFabricPlugin.getInstance());
|
||||
private final OrePopulator orePopulator = new OrePopulator(TerraFabricPlugin.getInstance());
|
||||
private final TreePopulator treePopulator = new TreePopulator(TerraFabricPlugin.getInstance());
|
||||
|
||||
public FabricChunkGeneratorWrapper(TerraBiomeSource biomeSource, long seed, ConfigPack configPack) {
|
||||
super(biomeSource, new StructuresConfig(false));
|
||||
|
||||
Reference in New Issue
Block a user