mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-23 08:38:51 +00:00
Add Validator API & cleanup Fabric
This commit is contained in:
@@ -6,7 +6,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.api.transform.Transformer;
|
||||
import com.dfsek.terra.bukkit.world.block.BukkitBlockData;
|
||||
import com.dfsek.terra.bukkit.world.block.BukkitMaterialData;
|
||||
import com.dfsek.terra.bukkit.world.block.data.BukkitMultipleFacing;
|
||||
|
||||
@@ -12,8 +12,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.api.transform.MapTransform;
|
||||
import com.dfsek.terra.api.transform.Transformer;
|
||||
import com.dfsek.terra.bukkit.command.command.TerraCommand;
|
||||
import com.dfsek.terra.bukkit.command.command.structure.LocateCommand;
|
||||
import com.dfsek.terra.bukkit.generator.BukkitChunkGenerator;
|
||||
|
||||
@@ -10,8 +10,10 @@ 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.api.transform.MapTransform;
|
||||
import com.dfsek.terra.api.transform.NotNullValidator;
|
||||
import com.dfsek.terra.api.transform.Transformer;
|
||||
import com.dfsek.terra.biome.UserDefinedBiome;
|
||||
import com.dfsek.terra.config.base.PluginConfig;
|
||||
import com.dfsek.terra.config.lang.LangUtil;
|
||||
import com.dfsek.terra.fabric.inventory.FabricItemHandle;
|
||||
@@ -29,9 +31,13 @@ import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.registry.BuiltinRegistries;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.world.biome.Biome;
|
||||
import net.minecraft.world.biome.BiomeEffects;
|
||||
import net.minecraft.world.biome.GenerationSettings;
|
||||
import net.minecraft.world.biome.SpawnSettings;
|
||||
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.DefaultBiomeFeatures;
|
||||
import net.minecraft.world.gen.feature.Feature;
|
||||
import net.minecraft.world.gen.feature.HugeMushroomFeature;
|
||||
import net.minecraft.world.gen.feature.TreeFeature;
|
||||
@@ -139,19 +145,42 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
|
||||
}
|
||||
}
|
||||
|
||||
Transformer<String, Biome> biomeFixer = new Transformer.Builder<String, Biome>()
|
||||
.addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse(id)), new NotNullValidator<>())
|
||||
.addTransform(id -> BuiltinRegistries.BIOME.get(Identifier.tryParse("minecraft:" + id.toLowerCase())), new NotNullValidator<>()).build();
|
||||
|
||||
@Override
|
||||
public void register(TypeRegistry registry) {
|
||||
genericLoaders.register(registry);
|
||||
registry
|
||||
.registerLoader(BlockData.class, (t, o, l) -> worldHandle.createBlockData((String) o))
|
||||
.registerLoader(MaterialData.class, (t, o, l) -> worldHandle.createMaterialData((String) o))
|
||||
.registerLoader(com.dfsek.terra.api.generic.world.Biome.class, (t, o, l) -> {
|
||||
String id = (String) o;
|
||||
if(!id.contains(":")) id = "minecraft:" + id.toLowerCase();
|
||||
Identifier identifier = new Identifier(id);
|
||||
Biome biome = BuiltinRegistries.BIOME.get(identifier);
|
||||
return new FabricBiome(biome);
|
||||
});
|
||||
.registerLoader(com.dfsek.terra.api.generic.world.Biome.class, (t, o, l) -> new FabricBiome(biomeFixer.translate((String) o)));
|
||||
}
|
||||
|
||||
private Biome createBiome(UserDefinedBiome biome) {
|
||||
SpawnSettings.Builder spawnSettings = new SpawnSettings.Builder();
|
||||
DefaultBiomeFeatures.addFarmAnimals(spawnSettings);
|
||||
DefaultBiomeFeatures.addMonsters(spawnSettings, 95, 5, 100);
|
||||
|
||||
GenerationSettings.Builder generationSettings = new GenerationSettings.Builder();
|
||||
|
||||
return (new Biome.Builder())
|
||||
.precipitation(Biome.Precipitation.RAIN)
|
||||
.category(Biome.Category.NONE)
|
||||
.depth(0.125F)
|
||||
.scale(0.05F)
|
||||
.temperature(0.8F)
|
||||
.downfall(0.4F)
|
||||
.effects((new BiomeEffects.Builder())
|
||||
.waterColor(0x3f76e4)
|
||||
.waterFogColor(0x050533)
|
||||
.fogColor(0xc0d8ff)
|
||||
.skyColor(0x77adff)
|
||||
.build())
|
||||
.spawnSettings(spawnSettings.build())
|
||||
.generationSettings(generationSettings.build())
|
||||
.build();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
package com.dfsek.terra.fabric.mixin;
|
||||
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.font.TextRenderer;
|
||||
import net.minecraft.client.gui.screen.world.CreateWorldScreen;
|
||||
import net.minecraft.client.gui.screen.world.MoreOptionsDialog;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(MoreOptionsDialog.class)
|
||||
public class MoreOptionsDialogMixin {
|
||||
|
||||
@Inject(at = @At("HEAD"), method = "method_28092(Lnet/minecraft/client/gui/screen/world/CreateWorldScreen;Lnet/minecraft/client/MinecraftClient;Lnet/minecraft/client/font/TextRenderer;)V")
|
||||
private void draw(final CreateWorldScreen parent, MinecraftClient client, TextRenderer textRenderer, CallbackInfo info) {
|
||||
System.out.println("More options opened");
|
||||
}
|
||||
|
||||
/*@Inject(at = @At("RETURN"), method = "setVisible(B)V")
|
||||
private void setVisible(boolean visible, CallbackInfo info) {
|
||||
System.out.println("redraw");
|
||||
}
|
||||
*/
|
||||
}
|
||||
@@ -5,7 +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.api.transform.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;
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.dfsek.terra.fabric.world.features;
|
||||
|
||||
import com.mojang.serialization.Codec;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.StructureWorldAccess;
|
||||
import net.minecraft.world.gen.chunk.ChunkGenerator;
|
||||
import net.minecraft.world.gen.feature.DefaultFeatureConfig;
|
||||
import net.minecraft.world.gen.feature.Feature;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class FloraFeature extends Feature<DefaultFeatureConfig> {
|
||||
public FloraFeature(Codec<DefaultFeatureConfig> codec) {
|
||||
super(codec);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, DefaultFeatureConfig config) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,9 @@ import com.dfsek.terra.api.generic.world.World;
|
||||
import com.dfsek.terra.api.generic.world.block.Block;
|
||||
import com.dfsek.terra.api.generic.world.vector.Location;
|
||||
import com.dfsek.terra.fabric.world.block.FabricBlock;
|
||||
import com.dfsek.terra.fabric.world.generator.FabricChunkGenerator;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.ServerWorldAccess;
|
||||
import net.minecraft.world.StructureWorldAccess;
|
||||
import net.minecraft.world.WorldAccess;
|
||||
|
||||
@@ -35,12 +37,12 @@ public class FabricWorldAccess implements World {
|
||||
|
||||
@Override
|
||||
public ChunkGenerator getGenerator() {
|
||||
return null;
|
||||
return new FabricChunkGenerator(((ServerWorldAccess) delegate).toServerWorld().getChunkManager().getChunkGenerator());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return delegate.toString();
|
||||
return ((ServerWorldAccess) delegate).toServerWorld().worldProperties.getLevelName();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
accessWidener v1 named
|
||||
|
||||
extendable method net/minecraft/client/world/GeneratorType <init> (Ljava/lang/String;)V
|
||||
accessible field net/minecraft/server/world/ServerWorld Lnet/minecraft/world/level/ServerWorldProperties worldProperties
|
||||
accessible field net/minecraft/server/world/ServerWorld worldProperties Lnet/minecraft/world/level/ServerWorldProperties;
|
||||
mutable field net/minecraft/server/world/ServerWorld worldProperties Lnet/minecraft/world/level/ServerWorldProperties;
|
||||
@@ -5,8 +5,7 @@
|
||||
"compatibilityLevel": "JAVA_8",
|
||||
"mixins": [],
|
||||
"client": [
|
||||
"GeneratorTypeAccessor",
|
||||
"MoreOptionsDialogMixin"
|
||||
"GeneratorTypeAccessor"
|
||||
],
|
||||
"server": [],
|
||||
"injectors": {
|
||||
|
||||
Reference in New Issue
Block a user