Placed features and some fixes

This commit is contained in:
Shrish Deshpande 2022-12-09 15:24:18 +05:30
parent 89c93ce610
commit 5bf0c9b51f
25 changed files with 198 additions and 106 deletions

View file

@ -147,8 +147,6 @@ public final class ModConfig implements ConfigData {
@RequiresRestart
@Tooltip public double clusterGenChance = 20000;
@RequiresRestart
@Tooltip public int gatewayGenChance = 200;
@RequiresRestart
@Tooltip public List<String> clusterDimBlacklist = new LinkedList<>();
@RequiresRestart
@Tooltip public List<String> gatewayDimBlacklist = new LinkedList<>();

View file

@ -3,17 +3,17 @@ package org.dimdev.dimdoors.enchantment;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentTarget;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import org.dimdev.dimdoors.DimensionalDoors;
import net.minecraft.util.registry.Registry;
public class ModEnchants {
public static Enchantment STRING_THEORY_ENCHANTMENT;
public static void init() {
STRING_THEORY_ENCHANTMENT = Registry.register(
Registry.ENCHANTMENT,
Registries.ENCHANTMENT,
DimensionalDoors.id("string_theory"),
new StringTheoryEnchantment(Enchantment.Rarity.UNCOMMON, EnchantmentTarget.WEARABLE, new EquipmentSlot[] {EquipmentSlot.FEET, EquipmentSlot.LEGS, EquipmentSlot.CHEST, EquipmentSlot.HEAD})
);

View file

@ -7,7 +7,8 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityDimensions;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.SpawnGroup;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@ -40,6 +41,6 @@ public class ModEntityTypes {
}
private static <E extends Entity> EntityType<E> register(String id, EntityType.EntityFactory<E> factory, float width, float height, boolean fixed) {
return Registry.register(Registry.ENTITY_TYPE, id, FabricEntityTypeBuilder.create(SpawnGroup.MONSTER, factory).dimensions(new EntityDimensions(width, height, fixed)).spawnableFarFromPlayer().fireImmune().build());
return Registry.register(Registries.ENTITY_TYPE, id, FabricEntityTypeBuilder.create(SpawnGroup.MONSTER, factory).dimensions(new EntityDimensions(width, height, fixed)).spawnableFarFromPlayer().fireImmune().build());
}
}

View file

@ -1,33 +0,0 @@
package org.dimdev.dimdoors.mixin;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.RegistryKey;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import java.util.Objects;
@Mixin(RegistryKey.class)
public class RegistryKeyMixin {
@Final
@Shadow
private Identifier value;
@Final
@Shadow
private Identifier registry;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof RegistryKey)) return false;
RegistryKey<?> that = (RegistryKey<?>) o;
return Objects.equals(this.value, that.getValue());
}
@Override
public int hashCode() {
return Objects.hash(this.value, this.registry);
}
}

View file

@ -2,7 +2,6 @@ package org.dimdev.dimdoors.mixin.accessor;
import com.google.gson.JsonObject;
import net.minecraft.data.DataWriter;
import net.minecraft.data.server.RecipeProvider;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Invoker;

View file

@ -6,13 +6,13 @@ import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.registry.RegistryKey;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerPlayNetworkHandler;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.Hand;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.World;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

View file

@ -6,8 +6,8 @@ import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.registry.RegistryKey;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.World;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

View file

@ -5,6 +5,9 @@ import net.minecraft.block.Blocks;
import net.minecraft.fluid.FluidState;
import net.minecraft.fluid.Fluids;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.resource.ResourceManager;
import net.minecraft.server.world.ServerLightingProvider;
import net.minecraft.server.world.ServerWorld;
@ -13,8 +16,6 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.util.math.Vec3i;
import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.ChunkRegion;
import net.minecraft.world.HeightLimitView;
import net.minecraft.world.Heightmap;
@ -90,7 +91,7 @@ public class ChunkGenerator extends PocketGenerator {
LOGGER.info("Generating chunk pocket at location " + pocket.getOrigin());
ServerWorld genWorld = DimensionalDoors.getWorld(RegistryKey.of(Registry.WORLD_KEY, dimensionID));
ServerWorld genWorld = DimensionalDoors.getWorld(RegistryKey.of(RegistryKeys.WORLD, dimensionID));
net.minecraft.world.gen.chunk.ChunkGenerator genWorldChunkGenerator = genWorld.getChunkManager().getChunkGenerator();
NoiseConfig config = NoiseConfig.create(ChunkGeneratorSettings.createMissingSettings(), world.getRegistryManager().get(Registry.NOISE_KEY), world.getSeed());
@ -113,7 +114,7 @@ public class ChunkGenerator extends PocketGenerator {
((ProtoChunk) protoChunk).setStatus(ChunkStatus.STRUCTURE_REFERENCES);
}
for (Chunk protoChunk : protoChunks) {
genWorldChunkGenerator.populateBiomes(genWorld.getRegistryManager().get(Registry.BIOME_KEY), net.minecraft.util.Util.getMainWorkerExecutor(), config, Blender.getNoBlending(), genWorld.getStructureAccessor(), protoChunk);
genWorldChunkGenerator.populateBiomes(genWorld.getRegistryManager().get(RegistryKeys.BIOME), net.minecraft.util.Util.getMainWorkerExecutor(), config, Blender.getNoBlending(), genWorld.getStructureAccessor(), protoChunk);
((ProtoChunk) protoChunk).setStatus(ChunkStatus.BIOMES);
}
for (Chunk protoChunk : protoChunks) {
@ -212,7 +213,7 @@ public class ChunkGenerator extends PocketGenerator {
@Override
public Chunk getChunk(int chunkX, int chunkZ, ChunkStatus leastStatus, boolean create) {
Chunk chunk = super.getChunk(chunkX, chunkZ, leastStatus, false);
return chunk == null ? new ProtoChunkHack(new ChunkPos(chunkX, chunkZ), UpgradeData.NO_UPGRADE_DATA, this, this.getRegistryManager().get(Registry.BIOME_KEY)) : chunk;
return chunk == null ? new ProtoChunkHack(new ChunkPos(chunkX, chunkZ), UpgradeData.NO_UPGRADE_DATA, this, this.getRegistryManager().get(RegistryKeys.BIOME)) : chunk;
}
// TODO: Override getSeed()

View file

@ -6,13 +6,13 @@ import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.enums.DoubleBlockHalf;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.registry.Registries;
import net.minecraft.resource.ResourceManager;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.registry.Registry;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dimdev.dimdoors.api.util.NbtEquations;
@ -57,7 +57,7 @@ public class DimensionalDoorModifier extends AbstractLazyCompatibleModifier {
}
doorTypeString = nbt.getString("door_type");
Block doorBlock = Registry.BLOCK.get(Identifier.tryParse(doorTypeString));
Block doorBlock = Registries.BLOCK.get(Identifier.tryParse(doorTypeString));
if (!(doorBlock instanceof DimensionalDoorBlock)) {
throw new RuntimeException("Could not interpret door type \"" + doorTypeString + "\"");
}

View file

@ -6,11 +6,11 @@ import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder;
import net.fabricmc.fabric.api.util.NbtType;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtElement;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.SimpleRegistry;
import net.minecraft.resource.ResourceManager;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.util.registry.SimpleRegistry;
import org.dimdev.dimdoors.DimensionalDoors;
import org.dimdev.dimdoors.api.util.ReferenceSerializable;
import org.dimdev.dimdoors.api.util.ResourceUtil;
@ -21,7 +21,7 @@ import java.util.Collection;
import java.util.function.Supplier;
public interface Modifier extends ReferenceSerializable {
Registry<ModifierType<? extends Modifier>> REGISTRY = FabricRegistryBuilder.from(new SimpleRegistry<ModifierType<? extends Modifier>>(RegistryKey.ofRegistry(DimensionalDoors.id("modifier_type")), Lifecycle.stable(), null)).buildAndRegister();
Registry<ModifierType<? extends Modifier>> REGISTRY = FabricRegistryBuilder.from(new SimpleRegistry<ModifierType<? extends Modifier>>(RegistryKey.ofRegistry(DimensionalDoors.id("modifier_type")), Lifecycle.stable())).buildAndRegister();
String RESOURCE_STARTING_PATH = "pockets/modifier"; //TODO: might want to restructure data packs

View file

@ -5,13 +5,13 @@ import java.util.UUID;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.util.dynamic.DynamicSerializableUuid;
import net.minecraft.util.Uuids;
public class PlayerRiftPointer extends RegistryVertex {
public static final Codec<PlayerRiftPointer> CODEC = RecordCodecBuilder.create(instance -> {
return instance.group(
DynamicSerializableUuid.CODEC.fieldOf("id").forGetter(a -> a.id),
DynamicSerializableUuid.CODEC.fieldOf("player").forGetter(a -> a.player)
Uuids.CODEC.fieldOf("id").forGetter(a -> a.id),
Uuids.CODEC.fieldOf("player").forGetter(a -> a.player)
).apply(instance, (id, player) -> {
PlayerRiftPointer pointer = new PlayerRiftPointer(player);
pointer.id = id;

View file

@ -1,9 +1,9 @@
package org.dimdev.dimdoors.rift.registry;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.World;
public class PocketEntrancePointer extends RegistryVertex { // TODO: PocketRiftPointer superclass?
@ -35,7 +35,7 @@ public class PocketEntrancePointer extends RegistryVertex { // TODO: PocketRiftP
}
public static PocketEntrancePointer fromNbt(NbtCompound nbt) {
PocketEntrancePointer pointer = new PocketEntrancePointer(RegistryKey.of(Registry.WORLD_KEY, new Identifier(nbt.getString("pocketDim"))), nbt.getInt("pocketId"));
PocketEntrancePointer pointer = new PocketEntrancePointer(RegistryKey.of(RegistryKeys.WORLD, new Identifier(nbt.getString("pocketDim"))), nbt.getInt("pocketId"));
pointer.id = nbt.getUuid("id");
return pointer;
}

View file

@ -4,8 +4,8 @@ import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder;
import net.fabricmc.fabric.api.event.registry.RegistryAttribute;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.world.World;
import org.dimdev.dimdoors.DimensionalDoors;

View file

@ -20,7 +20,7 @@ import org.dimdev.dimdoors.world.pocket.type.Pocket;
import org.dimdev.dimdoors.world.pocket.PocketDirectory;
import org.jgrapht.graph.DefaultDirectedGraph;
import org.jgrapht.graph.DefaultEdge;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.registry.RegistryKey;
import net.minecraft.world.World;
public class RiftRegistry {

View file

@ -1,9 +1,5 @@
package org.dimdev.dimdoors.world.feature;
import java.util.List;
import org.dimdev.dimdoors.DimensionalDoors;
import org.dimdev.dimdoors.block.ModBlocks;
import org.dimdev.dimdoors.world.feature.gateway.LimboGatewayFeature;
import org.dimdev.dimdoors.world.feature.gateway.schematic.EndGateway;
import org.dimdev.dimdoors.world.feature.gateway.schematic.SandstonePillarsGateway;
@ -12,38 +8,23 @@ import org.dimdev.dimdoors.world.feature.gateway.schematic.SchematicGatewayFeatu
import org.dimdev.dimdoors.world.feature.gateway.schematic.SchematicGatewayFeatureConfig;
import org.dimdev.dimdoors.world.feature.gateway.schematic.TwoPillarsGateway;
import net.minecraft.block.Block;
import net.minecraft.fluid.Fluids;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.structure.rule.BlockMatchRuleTest;
import net.minecraft.world.biome.BiomeKeys;
import net.minecraft.world.gen.GenerationStep;
import net.minecraft.world.gen.YOffset;
import net.minecraft.world.gen.feature.ConfiguredFeature;
import net.minecraft.world.gen.feature.ConfiguredFeatures;
import net.minecraft.world.gen.feature.DefaultFeatureConfig;
import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.feature.OreFeatureConfig;
import net.minecraft.world.gen.feature.PlacedFeature;
import net.minecraft.world.gen.feature.PlacedFeatures;
import net.minecraft.world.gen.feature.SpringFeatureConfig;
import net.minecraft.world.gen.placementmodifier.BiomePlacementModifier;
import net.minecraft.world.gen.placementmodifier.CountPlacementModifier;
import net.minecraft.world.gen.placementmodifier.HeightRangePlacementModifier;
import net.minecraft.world.gen.placementmodifier.RarityFilterPlacementModifier;
import net.minecraft.world.gen.placementmodifier.SquarePlacementModifier;
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
import net.fabricmc.fabric.api.tag.convention.v1.ConventionalBiomeTags;
import static net.minecraft.world.gen.feature.Feature.ORE;
import static net.minecraft.world.gen.feature.Feature.SPRING_FEATURE;
import static org.dimdev.dimdoors.DimensionalDoors.id;
@SuppressWarnings("unused")
public final class ModFeatures {
public static final SchematicGateway SANDSTONE_PILLARS_GATEWAY = new SandstonePillarsGateway();
public static final SchematicGateway TWO_PILLARS_GATEWAY = new TwoPillarsGateway();
@ -78,31 +59,31 @@ public final class ModFeatures {
}
public static class Placed {
public static final RegistryEntry<PlacedFeature> SANDSTONE_PILLARS_PLACED_FEATURE = PlacedFeatures.register("dimdoors:sandstone_pillars", Configured.SANDSTONE_PILLARS_CONFIGURED_FEATURE, List.of(RarityFilterPlacementModifier.of(DimensionalDoors.getConfig().getWorldConfig().gatewayGenChance), SquarePlacementModifier.of(), PlacedFeatures.WORLD_SURFACE_WG_HEIGHTMAP, BiomePlacementModifier.of()));
public static final RegistryEntry<PlacedFeature> TWO_PILLARS_PLACED_FEATURE = PlacedFeatures.register("dimdoors:two_pillars", Configured.TWO_PILLARS_CONFIGURED_FEATURE, List.of(RarityFilterPlacementModifier.of(DimensionalDoors.getConfig().getWorldConfig().gatewayGenChance), SquarePlacementModifier.of(), PlacedFeatures.WORLD_SURFACE_WG_HEIGHTMAP, BiomePlacementModifier.of()));
public static final RegistryEntry<PlacedFeature> END_GATEWAY_PLACED_FEATURE = PlacedFeatures.register("dimdoors:end_gateway", Configured.END_GATEWAY_CONFIGURED_FEATURE, List.of(RarityFilterPlacementModifier.of(DimensionalDoors.getConfig().getWorldConfig().gatewayGenChance), SquarePlacementModifier.of(), PlacedFeatures.WORLD_SURFACE_WG_HEIGHTMAP, BiomePlacementModifier.of()));
public static final RegistryEntry<PlacedFeature> LIMBO_GATEWAY_PLACED_FEATURE = PlacedFeatures.register("dimdoors:limbo_gateway", Configured.LIMBO_GATEWAY_CONFIGURED_FEATURE, List.of(RarityFilterPlacementModifier.of(DimensionalDoors.getConfig().getWorldConfig().gatewayGenChance), SquarePlacementModifier.of(), PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP, BiomePlacementModifier.of()));
public static final RegistryEntry<PlacedFeature> SOLID_STATIC_ORE_PLACED_FEATURE = PlacedFeatures.register("dimdoors:solid_static_ore", Configured.SOLID_STATIC_ORE_CONFIGURED_FEATURE, List.of(CountPlacementModifier.of(3), HeightRangePlacementModifier.uniform(YOffset.getBottom(), YOffset.getTop()), SquarePlacementModifier.of(), BiomePlacementModifier.of()));
public static final RegistryEntry<PlacedFeature> DECAYED_BLOCK_ORE_PLACED_FEATURE = PlacedFeatures.register("dimdoors:decayed_block_ore", Configured.DECAYED_BLOCK_ORE_CONFIGURED_FEATURE, List.of(CountPlacementModifier.of(4), HeightRangePlacementModifier.uniform(YOffset.fixed(0), YOffset.fixed(79)), SquarePlacementModifier.of(), BiomePlacementModifier.of()));
public static final RegistryEntry<PlacedFeature> ETERNAL_FLUID_SPRING_PLACED_FEATURE = PlacedFeatures.register("dimdoors:eternal_fluid_spring", Configured.ETERNAL_FLUID_SPRING_CONFIGURED_FEATURE, List.of(CountPlacementModifier.of(25), SquarePlacementModifier.of(), HeightRangePlacementModifier.uniform(YOffset.getBottom(), YOffset.fixed(192)), BiomePlacementModifier.of()));
public static final RegistryKey<PlacedFeature> SANDSTONE_PILLARS = of("sandstone_pillars");
public static final RegistryKey<PlacedFeature> TWO_PILLARS = of("two_pillars");
public static final RegistryKey<PlacedFeature> END_GATEWAY = of("end_gateway");
public static final RegistryKey<PlacedFeature> LIMBO_GATEWAY = of("limbo_gateway");
public static final RegistryKey<PlacedFeature> SOLID_STATIC_ORE = of("solid_static_ore");
public static final RegistryKey<PlacedFeature> DECAYED_BLOCK_ORE = of("decayed_block_ore");
public static final RegistryKey<PlacedFeature> ETERNAL_FLUID_SPRING = of("eternal_fluid_spring");
public static void init() {
BiomeModifications.addFeature(ctx -> ctx.hasTag(ConventionalBiomeTags.IN_OVERWORLD) &&
!ctx.hasTag(ConventionalBiomeTags.DESERT) &&
!ctx.hasTag(ConventionalBiomeTags.OCEAN),
GenerationStep.Feature.SURFACE_STRUCTURES,
TWO_PILLARS_PLACED_FEATURE.getKey().get()
TWO_PILLARS
);
BiomeModifications.addFeature(
ctx -> ctx.hasTag(ConventionalBiomeTags.DESERT),
GenerationStep.Feature.SURFACE_STRUCTURES,
SANDSTONE_PILLARS_PLACED_FEATURE.getKey().get()
SANDSTONE_PILLARS
);
BiomeModifications.addFeature(
ctx -> ctx.getBiomeKey().equals(BiomeKeys.END_HIGHLANDS) || ctx.getBiomeKey().equals(BiomeKeys.END_MIDLANDS) || ctx.getBiomeKey().equals(BiomeKeys.SMALL_END_ISLANDS),
ctx -> !ctx.getBiomeKey().equals(BiomeKeys.THE_END) && ctx.hasTag(ConventionalBiomeTags.IN_THE_END),
GenerationStep.Feature.SURFACE_STRUCTURES,
END_GATEWAY_PLACED_FEATURE.getKey().get()
END_GATEWAY
);
}

View file

@ -1,12 +1,7 @@
package org.dimdev.dimdoors.world.feature.gateway;
import java.util.Set;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.BuiltinRegistries;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.StructureWorldAccess;
import net.minecraft.world.biome.Biome;
public interface Gateway {
void generate(StructureWorldAccess world, BlockPos pos);

View file

@ -1,18 +1,12 @@
package org.dimdev.dimdoors.world.feature.gateway;
import java.util.Set;
import com.google.common.collect.ImmutableSet;
import org.dimdev.dimdoors.block.ModBlocks;
import org.dimdev.dimdoors.world.ModBiomes;
import org.dimdev.dimdoors.world.ModDimensions;
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.StructureWorldAccess;
import net.minecraft.world.biome.Biome;
public enum LimboGateway implements Gateway {
INSTANCE;

View file

@ -0,0 +1,27 @@
{
"feature": "dimdoors:decayed_block_ore",
"placement": [
{
"type": "minecraft:count",
"count": 4
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"max_inclusive": {
"absolute": 79
},
"min_inclusive": {
"absolute": 0
}
}
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:biome"
}
]
}

View file

@ -0,0 +1,19 @@
{
"feature": "dimdoors:end_gateway",
"placement": [
{
"type": "minecraft:rarity_filter",
"chance": 200
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:heightmap",
"heightmap": "WORLD_SURFACE_WG"
},
{
"type": "minecraft:biome"
}
]
}

View file

@ -0,0 +1,27 @@
{
"feature": "dimdoors:eternal_fluid_spring",
"placement": [
{
"type": "minecraft:count",
"count": 8
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"max_inclusive": {
"absolute": 192
},
"min_inclusive": {
"above_bottom": 0
}
}
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:biome"
}
]
}

View file

@ -0,0 +1,19 @@
{
"feature": "dimdoors:limbo_gateway",
"placement": [
{
"type": "minecraft:rarity_filter",
"chance": 200
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:heightmap",
"heightmap": "MOTION_BLOCKING"
},
{
"type": "minecraft:biome"
}
]
}

View file

@ -0,0 +1,19 @@
{
"feature": "dimdoors:sandstone_pillars",
"placement": [
{
"type": "minecraft:rarity_filter",
"chance": 200
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:heightmap",
"heightmap": "WORLD_SURFACE_WG"
},
{
"type": "minecraft:biome"
}
]
}

View file

@ -0,0 +1,27 @@
{
"feature": "dimdoors:solid_static_ore",
"placement": [
{
"type": "minecraft:count",
"count": 3
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"max_inclusive": {
"below_top": 0
},
"min_inclusive": {
"above_bottom": 0
}
}
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:biome"
}
]
}

View file

@ -0,0 +1,19 @@
{
"feature": "dimdoors:two_pillars",
"placement": [
{
"type": "minecraft:rarity_filter",
"chance": 200
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:heightmap",
"heightmap": "WORLD_SURFACE_WG"
},
{
"type": "minecraft:biome"
}
]
}

View file

@ -11,7 +11,6 @@
"ItemMixin",
"ItemMixin$SettingsMixin",
"PlayerEntityMixin",
"RegistryKeyMixin",
"ServerPlayerEntityMixin",
"ServerPlayerInteractionManagerMixin",
"ServerPlayNetworkHandlerMixin",