myrmite coal ore and cavaryn dev

This commit is contained in:
craisinlord committed 2026-07-18 15:36:07 -05:00
1 parent cb278b04c6
commit cc5ab10de7
74 files changed
+662 -179

No files matched your search

@@ -36,15 +36,16 @@ public final class CreativeTabOrder {
"shellstone_stairs", "shellstone_slab", "shellstone_wall", "shellstone_stairs", "shellstone_slab", "shellstone_wall",
"polished_shellstone_stairs", "polished_shellstone_slab", "polished_shellstone_wall", "polished_shellstone_stairs", "polished_shellstone_slab", "polished_shellstone_wall",
"shellstone_brick_stairs", "shellstone_brick_slab", "shellstone_brick_wall", "shellstone_brick_stairs", "shellstone_brick_slab", "shellstone_brick_wall",
"mossy_shellstone_brick_stairs", "mossy_shellstone_brick_slab", "mossy_shellstone_brick_wall" -> 2; "mossy_shellstone_brick_stairs", "mossy_shellstone_brick_slab", "mossy_shellstone_brick_wall",
"blush_moss_block", "blush_moss_carpet",
"lumen_froglight", "roseate_froglight" -> 2;
case "antimetal", "polished_antimetal" -> 3; case "antimetal", "polished_antimetal" -> 3;
case "dream_sand", "dream_sandstone", "chiseled_dream_sandstone", case "dream_sand", "dream_sandstone", "chiseled_dream_sandstone",
"cut_dream_sandstone", "smooth_dream_sandstone", "cut_dream_sandstone", "smooth_dream_sandstone",
"dream_sandstone_stairs", "dream_sandstone_slab", "dream_sandstone_wall", "dream_sandstone_stairs", "dream_sandstone_slab", "dream_sandstone_wall",
"smooth_dream_sandstone_stairs", "smooth_dream_sandstone_slab", "smooth_dream_sandstone_stairs", "smooth_dream_sandstone_slab",
"cut_dream_sandstone_slab" -> 4; "cut_dream_sandstone_slab" -> 4;
case "umbral_moss_block", "umbral_moss_carpet", case "umbral_moss_block", "umbral_moss_carpet" -> 4;
"blush_moss_block", "blush_moss_carpet" -> 4;
case "uranium_ore", "deepslate_uranium_ore", "broodstone_uranium_ore", case "uranium_ore", "deepslate_uranium_ore", "broodstone_uranium_ore",
"titanium_ore", "deepslate_titanium_ore", "broodstone_titanium_ore", "titanium_ore", "deepslate_titanium_ore", "broodstone_titanium_ore",
"uranium_block", "titanium_block", "uranium_block", "titanium_block",
@@ -61,7 +62,7 @@ public final class CreativeTabOrder {
"broodstone_stairs", "broodstone_slab", "broodstone_wall", "broodstone_stairs", "broodstone_slab", "broodstone_wall",
"polished_broodstone_stairs", "polished_broodstone_slab", "polished_broodstone_wall", "polished_broodstone_stairs", "polished_broodstone_slab", "polished_broodstone_wall",
"broodstone_brick_stairs", "broodstone_brick_slab", "broodstone_brick_wall", "broodstone_brick_stairs", "broodstone_brick_slab", "broodstone_brick_wall",
"chiten_block", "chiten_spike", "amber_moss_block", "amber_moss_carpet", "myrmite_coal_ore", "chiten_block", "chiten_spike", "amber_moss_block", "amber_moss_carpet",
"glowcap_mushroom", "glowcap_mushroom_block" -> 8; "glowcap_mushroom", "glowcap_mushroom_block" -> 8;
case "ouranwood_leaves", "peach_leaves" -> 9; case "ouranwood_leaves", "peach_leaves" -> 9;
case "duplicator_sapling", "ouranwood_acorn", "peach_sapling", "corn_seeds" -> 10; case "duplicator_sapling", "ouranwood_acorn", "peach_sapling", "corn_seeds" -> 10;
@@ -70,8 +71,7 @@ public final class CreativeTabOrder {
"red_ant_nest", "brown_ant_nest", "rainbow_ant_nest", "termite_nest", "red_ant_nest", "brown_ant_nest", "rainbow_ant_nest", "termite_nest",
"star_coral", "star_coral_fan", "star_coral_block", "star_coral", "star_coral_fan", "star_coral_block",
"dead_star_coral", "dead_star_coral_fan", "dead_star_coral_block" -> 11; "dead_star_coral", "dead_star_coral_fan", "dead_star_coral_block" -> 11;
case "dream_torch", "dream_lantern", "dream_campfire", "dream_fire", "dream_fire_ceiling", case "dream_torch", "dream_lantern", "dream_campfire", "dream_fire", "dream_fire_ceiling" -> 12;
"lumen_froglight", "roseate_froglight" -> 12;
case "antimetal_scaffolding" -> 13; case "antimetal_scaffolding" -> 13;
case "infested_rooted_dirt", "infested_coarse_dirt", "bed_bug_egg", "creeping_horror_egg", "lurking_terror_egg", "jumpy_bug_egg" -> 14; case "infested_rooted_dirt", "infested_coarse_dirt", "bed_bug_egg", "creeping_horror_egg", "lurking_terror_egg", "jumpy_bug_egg" -> 14;
case "ultimate_pickaxe", "ultimate_axe", "ultimate_shovel", "ultimate_hoe", case "ultimate_pickaxe", "ultimate_axe", "ultimate_shovel", "ultimate_hoe",
@@ -207,12 +207,13 @@ public final class CreativeTabOrder {
case "broodstone_brick_stairs" -> 17; case "broodstone_brick_stairs" -> 17;
case "broodstone_brick_slab" -> 18; case "broodstone_brick_slab" -> 18;
case "broodstone_brick_wall" -> 19; case "broodstone_brick_wall" -> 19;
case "chiten_block" -> 20; case "myrmite_coal_ore" -> 20;
case "chiten_spike" -> 21; case "chiten_block" -> 21;
case "amber_moss_block" -> 22; case "chiten_spike" -> 22;
case "amber_moss_carpet" -> 23; case "amber_moss_block" -> 23;
case "glowcap_mushroom" -> 24; case "amber_moss_carpet" -> 24;
case "glowcap_mushroom_block" -> 25; case "glowcap_mushroom" -> 25;
case "glowcap_mushroom_block" -> 26;
case "uranium_ore" -> 0; case "uranium_ore" -> 0;
case "deepslate_uranium_ore" -> 1; case "deepslate_uranium_ore" -> 1;
case "broodstone_uranium_ore" -> 2; case "broodstone_uranium_ore" -> 2;
@@ -248,8 +249,10 @@ public final class CreativeTabOrder {
case "dream_campfire" -> 2; case "dream_campfire" -> 2;
case "dream_fire" -> 3; case "dream_fire" -> 3;
case "dream_fire_ceiling" -> 4; case "dream_fire_ceiling" -> 4;
case "lumen_froglight" -> 5; case "blush_moss_block" -> 18;
case "roseate_froglight" -> 6; case "blush_moss_carpet" -> 19;
case "lumen_froglight" -> 20;
case "roseate_froglight" -> 21;
case "infested_rooted_dirt" -> 0; case "infested_rooted_dirt" -> 0;
case "infested_coarse_dirt" -> 1; case "infested_coarse_dirt" -> 1;
case "bed_bug_egg" -> 2; case "bed_bug_egg" -> 2;
@@ -36,7 +36,7 @@ public class CreepingHorrorEggBlock extends Block {
public static final MapCodec<CreepingHorrorEggBlock> CODEC = Block.simpleCodec(CreepingHorrorEggBlock::new); public static final MapCodec<CreepingHorrorEggBlock> CODEC = Block.simpleCodec(CreepingHorrorEggBlock::new);
public static final IntegerProperty HATCH = BlockStateProperties.HATCH; public static final IntegerProperty HATCH = BlockStateProperties.HATCH;
public static final IntegerProperty EGGS = BlockStateProperties.EGGS; public static final IntegerProperty EGGS = BlockStateProperties.EGGS;
private static final float PANIC_HATCH_CHANCE = 0.50F; private static final float PANIC_HATCH_CHANCE = 0.25F;
private static final int MAX_HATCH = 2; private static final int MAX_HATCH = 2;
private static final int MAX_EGGS = 4; private static final int MAX_EGGS = 4;
private static final VoxelShape SINGLE_SHAPE = Block.box(3.0D, 0.0D, 3.0D, 13.0D, 7.0D, 13.0D); private static final VoxelShape SINGLE_SHAPE = Block.box(3.0D, 0.0D, 3.0D, 13.0D, 7.0D, 13.0D);
@@ -26,7 +26,7 @@ import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraft.world.phys.shapes.VoxelShape;
public class CritterCageBlock extends BaseEntityBlock { public class CritterCageBlock extends BaseEntityBlock {
private static final VoxelShape SHAPE = Block.box(1.0D, 1.0D, 1.0D, 15.0D, 15.0D, 15.0D); private static final VoxelShape SHAPE = Block.box(1.0D, 1.0D, 1.0D, 15.0D, 14.0D, 15.0D);
private final MapCodec<CritterCageBlock> codec; private final MapCodec<CritterCageBlock> codec;
@@ -12,6 +12,7 @@ import net.minecraft.world.entity.EntityType;
import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.util.RandomSource; import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
@@ -36,6 +37,9 @@ public class JumpyBugEggBlock extends Block {
public static final BooleanProperty HANGING = BlockStateProperties.HANGING; public static final BooleanProperty HANGING = BlockStateProperties.HANGING;
public static final BooleanProperty ROTATED = BooleanProperty.create("rotated"); public static final BooleanProperty ROTATED = BooleanProperty.create("rotated");
private static final int MAX_HATCH = 2; private static final int MAX_HATCH = 2;
private static final double PLAYER_PROXIMITY_RADIUS = 12.0D;
private static final float PLAYER_PROXIMITY_HATCH_CHANCE = 0.25F;
private static final int PLAYER_PROXIMITY_CHECK_INTERVAL = 200;
private static final VoxelShape FLOOR_SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); private static final VoxelShape FLOOR_SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D);
private static final VoxelShape CEILING_SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); private static final VoxelShape CEILING_SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D);
private static final ResourceLocation JUMPY_BUG_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "jumpy_bug"); private static final ResourceLocation JUMPY_BUG_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "jumpy_bug");
@@ -115,6 +119,13 @@ public class JumpyBugEggBlock extends Block {
} }
private boolean shouldUpdateHatchLevel(Level level, BlockPos pos, BlockState state) { private boolean shouldUpdateHatchLevel(Level level, BlockPos pos, BlockState state) {
if (level.random.nextInt(PLAYER_PROXIMITY_CHECK_INTERVAL) == 0) {
Player nearbyPlayer = level.getNearestPlayer(pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, PLAYER_PROXIMITY_RADIUS, false);
if (nearbyPlayer != null && level.random.nextFloat() < PLAYER_PROXIMITY_HATCH_CHANCE) {
return true;
}
}
BlockPos checkPos = state.getValue(HANGING) ? pos.above() : pos.below(); BlockPos checkPos = state.getValue(HANGING) ? pos.above() : pos.below();
boolean onAmberMoss = level.getBlockState(checkPos).getBlock() instanceof AmberMossBlock; boolean onAmberMoss = level.getBlockState(checkPos).getBlock() instanceof AmberMossBlock;
return level.random.nextInt(onAmberMoss ? 150 : 500) == 0; return level.random.nextInt(onAmberMoss ? 150 : 500) == 0;
@@ -36,7 +36,7 @@ public class LurkingTerrorEggBlock extends Block {
public static final MapCodec<LurkingTerrorEggBlock> CODEC = Block.simpleCodec(LurkingTerrorEggBlock::new); public static final MapCodec<LurkingTerrorEggBlock> CODEC = Block.simpleCodec(LurkingTerrorEggBlock::new);
public static final IntegerProperty HATCH = BlockStateProperties.HATCH; public static final IntegerProperty HATCH = BlockStateProperties.HATCH;
public static final IntegerProperty EGGS = BlockStateProperties.EGGS; public static final IntegerProperty EGGS = BlockStateProperties.EGGS;
private static final float PANIC_HATCH_CHANCE = 0.50F; private static final float PANIC_HATCH_CHANCE = 0.25F;
private static final int MAX_HATCH = 2; private static final int MAX_HATCH = 2;
private static final int MAX_EGGS = 4; private static final int MAX_EGGS = 4;
private static final VoxelShape SINGLE_SHAPE = Block.box(3.0D, 0.0D, 3.0D, 13.0D, 7.0D, 13.0D); private static final VoxelShape SINGLE_SHAPE = Block.box(3.0D, 0.0D, 3.0D, 13.0D, 7.0D, 13.0D);
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.entity; package com.craisinlord.antarchy.content.entity;
import com.craisinlord.antarchy.content.entity.trades.DrTrayaurusTradeManager; import com.craisinlord.antarchy.content.entity.trades.DrTrayaurusTradeManager;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
@@ -25,12 +26,33 @@ import org.jetbrains.annotations.Nullable;
public class DrTrayaurusEntity extends AbstractVillager { public class DrTrayaurusEntity extends AbstractVillager {
private static final Component DISPLAY_NAME = Component.literal("Dr. Trayaurus"); private static final Component DISPLAY_NAME = Component.literal("Dr. Trayaurus");
private static final String TRADES_INITIALIZED_KEY = "TradesInitialized";
private boolean tradesInitialized;
public DrTrayaurusEntity(EntityType<? extends AbstractVillager> entityType, Level level) { public DrTrayaurusEntity(EntityType<? extends AbstractVillager> entityType, Level level) {
super(entityType, level); super(entityType, level);
this.setCustomName(DISPLAY_NAME); this.setCustomName(DISPLAY_NAME);
} }
@Override
public void addAdditionalSaveData(CompoundTag tag) {
super.addAdditionalSaveData(tag);
tag.putBoolean(TRADES_INITIALIZED_KEY, this.tradesInitialized);
}
@Override
public void readAdditionalSaveData(CompoundTag tag) {
this.tradesInitialized = tag.getBoolean(TRADES_INITIALIZED_KEY);
if (this.tradesInitialized) {
super.readAdditionalSaveData(tag);
return;
}
CompoundTag withoutOffers = tag.copy();
withoutOffers.remove("Offers");
super.readAdditionalSaveData(withoutOffers);
}
@Override @Override
protected void registerGoals() { protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this)); this.goalSelector.addGoal(0, new FloatGoal(this));
@@ -82,6 +104,7 @@ public class DrTrayaurusEntity extends AbstractVillager {
offers.clear(); offers.clear();
offers.addAll(DrTrayaurusTradeManager.createOffers()); offers.addAll(DrTrayaurusTradeManager.createOffers());
this.overrideXp(1); this.overrideXp(1);
this.tradesInitialized = true;
} }
@Override @Override
@@ -126,13 +126,13 @@ public final class AntTeleportHelper {
} }
if (entityTypeId.equals(ResourceLocation.fromNamespaceAndPath("antarchy", "brown_ant"))) { if (entityTypeId.equals(ResourceLocation.fromNamespaceAndPath("antarchy", "brown_ant"))) {
return teleportPlayerToDimension(player, AntarchySettings.brownAntDestinationDimension()); return teleportToOrFromConfiguredDimension(player, AntarchySettings.brownAntDestinationDimension());
} }
if (entityTypeId.equals(ResourceLocation.fromNamespaceAndPath("antarchy", "red_ant"))) { if (entityTypeId.equals(ResourceLocation.fromNamespaceAndPath("antarchy", "red_ant"))) {
return teleportPlayerToDimension(player, AntarchySettings.redAntDestinationDimension()); return teleportToOrFromConfiguredDimension(player, AntarchySettings.redAntDestinationDimension());
} }
if (entityTypeId.equals(ResourceLocation.fromNamespaceAndPath("antarchy", "termite"))) { if (entityTypeId.equals(ResourceLocation.fromNamespaceAndPath("antarchy", "termite"))) {
return teleportPlayerToDimension(player, AntarchySettings.termiteDestinationDimension()); return teleportToOrFromConfiguredDimension(player, AntarchySettings.termiteDestinationDimension());
} }
if (entityTypeId.equals(ResourceLocation.fromNamespaceAndPath("antarchy", "rainbow_ant"))) { if (entityTypeId.equals(ResourceLocation.fromNamespaceAndPath("antarchy", "rainbow_ant"))) {
return RainbowAntEntity.teleportPlayerFromStoredData(player, entityData); return RainbowAntEntity.teleportPlayerFromStoredData(player, entityData);
@@ -141,6 +141,20 @@ public final class AntTeleportHelper {
return InteractionResult.PASS; return InteractionResult.PASS;
} }
private static InteractionResult teleportToOrFromConfiguredDimension(ServerPlayer player, ResourceKey<Level> configuredDimensionKey) {
ServerLevel destination = player.serverLevel().dimension() == configuredDimensionKey
? resolveReturnDestinationLevel(player)
: player.server.getLevel(configuredDimensionKey);
if (destination == null) {
return InteractionResult.PASS;
}
Vec3 destinationPos = getDestinationPosition(player, destination);
teleportPlayerWithCompanions(player, destination, destinationPos);
player.playSound(SoundEvents.ENDERMAN_TELEPORT, 1.0F, 1.0F);
return InteractionResult.CONSUME;
}
static InteractionResult handleInteraction(BaseAntEntity ant, Player player, ItemStack itemStack) { static InteractionResult handleInteraction(BaseAntEntity ant, Player player, ItemStack itemStack) {
if (ant.requiresActivationReagent() && !ant.isTeleportActivatedState()) { if (ant.requiresActivationReagent() && !ant.isTeleportActivatedState()) {
if (!(player instanceof ServerPlayer serverPlayer)) { if (!(player instanceof ServerPlayer serverPlayer)) {
@@ -167,18 +181,7 @@ public final class AntTeleportHelper {
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
} }
ServerLevel configuredDestination = resolveConfiguredDestinationLevel(ant, serverPlayer.serverLevel()); return teleportToOrFromConfiguredDimension(serverPlayer, ant.destinationDimension());
ServerLevel destination = configuredDestination != null && serverPlayer.serverLevel().dimension() == configuredDestination.dimension()
? resolveReturnDestinationLevel(serverPlayer)
: configuredDestination;
if (destination == null) {
return InteractionResult.PASS;
}
Vec3 destinationPos = getDestinationPosition(serverPlayer, destination);
teleportPlayerWithCompanions(serverPlayer, destination, destinationPos);
serverPlayer.playSound(SoundEvents.ENDERMAN_TELEPORT, 1.0F, 1.0F);
return InteractionResult.CONSUME;
} }
private static InteractionResult activateTeleport(BaseAntEntity ant, ServerPlayer player, ItemStack stack) { private static InteractionResult activateTeleport(BaseAntEntity ant, ServerPlayer player, ItemStack stack) {
@@ -192,11 +195,6 @@ public final class AntTeleportHelper {
return InteractionResult.CONSUME; return InteractionResult.CONSUME;
} }
@Nullable
private static ServerLevel resolveConfiguredDestinationLevel(BaseAntEntity ant, ServerLevel serverLevel) {
return serverLevel.getServer().getLevel(ant.destinationDimension());
}
public static ServerLevel resolveReturnDestinationLevel(ServerPlayer player) { public static ServerLevel resolveReturnDestinationLevel(ServerPlayer player) {
ResourceKey<Level> respawnDimension = player.getRespawnDimension(); ResourceKey<Level> respawnDimension = player.getRespawnDimension();
ServerLevel destination = player.server.getLevel(respawnDimension); ServerLevel destination = player.server.getLevel(respawnDimension);
@@ -0,0 +1,121 @@
package com.craisinlord.antarchy.content.worldgen.cavaryn;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.block.MoltingVinesBlock;
import com.mojang.serialization.Codec;
import java.util.Optional;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
public final class GroundMoltingVinesFeature extends Feature<NoneFeatureConfiguration> {
private static final ResourceLocation MOLTING_VINES_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "molting_vines");
private static final int SEARCH_RADIUS = 8;
private static final int SEARCH_ATTEMPTS = 24;
private static final int VERTICAL_SCAN = 12;
private static final int MIN_LENGTH = 2;
private static final int MAX_LENGTH = 5;
private static final int BROODFRUIT_CHANCE = 4;
public GroundMoltingVinesFeature(Codec<NoneFeatureConfiguration> codec) {
super(codec);
}
@Override
public boolean place(FeaturePlaceContext<NoneFeatureConfiguration> context) {
Block block = getBlock(MOLTING_VINES_ID);
if (!(block instanceof MoltingVinesBlock moltingVinesBlock)) {
return false;
}
WorldGenLevel level = context.level();
RandomSource random = context.random();
BlockPos basePos = findBase(level, context.origin(), random);
if (basePos == null) {
return false;
}
return placeColumn(level, moltingVinesBlock, basePos, random);
}
private static BlockPos findBase(WorldGenLevel level, BlockPos origin, RandomSource random) {
BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos();
int minY = level.getMinBuildHeight() + 2;
int maxY = level.getMaxBuildHeight() - 2;
for (int attempt = 0; attempt < SEARCH_ATTEMPTS; attempt++) {
int x = origin.getX() + random.nextInt(SEARCH_RADIUS * 2 + 1) - SEARCH_RADIUS;
int z = origin.getZ() + random.nextInt(SEARCH_RADIUS * 2 + 1) - SEARCH_RADIUS;
int startY = origin.getY() + random.nextInt(VERTICAL_SCAN * 2 + 1) - VERTICAL_SCAN;
startY = Math.max(minY, Math.min(maxY, startY));
for (int y = startY; y >= Math.max(minY, startY - VERTICAL_SCAN); y--) {
mutable.set(x, y, z);
if (!level.getBlockState(mutable).canBeReplaced()) {
continue;
}
BlockPos belowPos = mutable.below();
BlockState belowState = level.getBlockState(belowPos);
if (!belowState.isFaceSturdy(level, belowPos, Direction.UP)) {
continue;
}
if (!level.getBlockState(mutable.above()).canBeReplaced()) {
continue;
}
return mutable.immutable();
}
}
return null;
}
private static boolean placeColumn(WorldGenLevel level, MoltingVinesBlock block, BlockPos basePos, RandomSource random) {
int maxLength = MIN_LENGTH + random.nextInt(MAX_LENGTH - MIN_LENGTH + 1);
int length = 0;
BlockPos.MutableBlockPos mutable = basePos.mutable();
while (length < maxLength && mutable.getY() < level.getMaxBuildHeight()) {
BlockState existing = level.getBlockState(mutable);
if (!existing.canBeReplaced()) {
break;
}
length++;
mutable.move(0, 1, 0);
}
if (length < MIN_LENGTH) {
return false;
}
int fruitIndex = -1;
if (length >= 3 && random.nextInt(BROODFRUIT_CHANCE) == 0) {
fruitIndex = 1 + random.nextInt(length - 2);
}
for (int offset = 0; offset < length; offset++) {
BlockPos pos = basePos.above(offset);
BlockState state = block.defaultBlockState()
.setValue(MoltingVinesBlock.GROWTH_DIRECTION, Direction.UP)
.setValue(MoltingVinesBlock.DISTANCE, Math.min(offset, 6))
.setValue(MoltingVinesBlock.TOP_CAP, offset == length - 1)
.setValue(MoltingVinesBlock.BOTTOM_CAP, false)
.setValue(MoltingVinesBlock.BROODFRUIT, offset == fruitIndex);
if (!state.canSurvive(level, pos)) {
return false;
}
level.setBlock(pos, state, 3);
}
return true;
}
private static Block getBlock(ResourceLocation id) {
Optional<Block> block = BuiltInRegistries.BLOCK.getOptional(id);
return block.orElse(null);
}
}
@@ -19,9 +19,9 @@ import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConf
public final class JumpyBugEggCeilingFeature extends Feature<NoneFeatureConfiguration> { public final class JumpyBugEggCeilingFeature extends Feature<NoneFeatureConfiguration> {
private static final ResourceLocation JUMPY_BUG_EGG_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "jumpy_bug_egg"); private static final ResourceLocation JUMPY_BUG_EGG_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "jumpy_bug_egg");
private static final int SEARCH_RADIUS = 8; private static final int SEARCH_RADIUS = 8;
private static final int VERTICAL_SCAN = 6; private static final int VERTICAL_SCAN = 24;
private static final int SEARCH_ATTEMPTS = 10; private static final int SEARCH_ATTEMPTS = 24;
private static final float PLACE_CHANCE = 0.5F; private static final int MAX_PLACEMENTS = 3;
public JumpyBugEggCeilingFeature(Codec<NoneFeatureConfiguration> codec) { public JumpyBugEggCeilingFeature(Codec<NoneFeatureConfiguration> codec) {
super(codec); super(codec);
@@ -39,26 +39,33 @@ public final class JumpyBugEggCeilingFeature extends Feature<NoneFeatureConfigur
BlockPos origin = context.origin(); BlockPos origin = context.origin();
boolean placedAny = false; boolean placedAny = false;
int placements = 0;
BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos();
for (int attempt = 0; attempt < SEARCH_ATTEMPTS; attempt++) { for (int attempt = 0; attempt < SEARCH_ATTEMPTS && placements < MAX_PLACEMENTS; attempt++) {
if (random.nextFloat() > PLACE_CHANCE) {
continue;
}
int x = origin.getX() + random.nextInt(SEARCH_RADIUS * 2 + 1) - SEARCH_RADIUS; int x = origin.getX() + random.nextInt(SEARCH_RADIUS * 2 + 1) - SEARCH_RADIUS;
int z = origin.getZ() + random.nextInt(SEARCH_RADIUS * 2 + 1) - SEARCH_RADIUS; int z = origin.getZ() + random.nextInt(SEARCH_RADIUS * 2 + 1) - SEARCH_RADIUS;
int y = origin.getY() + random.nextInt(VERTICAL_SCAN * 2 + 1) - VERTICAL_SCAN; int startY = origin.getY() + random.nextInt(VERTICAL_SCAN * 2 + 1) - VERTICAL_SCAN;
mutable.set(x, y, z); int minY = Math.max(level.getMinBuildHeight() + 1, startY - VERTICAL_SCAN);
int maxY = Math.min(level.getMaxBuildHeight() - 2, startY + VERTICAL_SCAN);
if (!isValidCeilingSpot(level, mutable)) { BlockPos spot = null;
continue; for (int y = maxY; y >= minY; y--) {
mutable.set(x, y, z);
if (isValidCeilingSpot(level, mutable)) {
spot = mutable.immutable();
break;
}
} }
if (spot == null) {
continue;
}
BlockState eggState = eggBlock.defaultBlockState() BlockState eggState = eggBlock.defaultBlockState()
.setValue(JumpyBugEggBlock.HANGING, true) .setValue(JumpyBugEggBlock.HANGING, true)
.setValue(JumpyBugEggBlock.ROTATED, random.nextBoolean()); .setValue(JumpyBugEggBlock.ROTATED, random.nextBoolean());
level.setBlock(mutable, eggState, 3); level.setBlock(spot, eggState, 3);
placedAny = true; placedAny = true;
placements++;
} }
return placedAny; return placedAny;
@@ -59,6 +59,19 @@ public class ElythiaBiomeSource extends BiomeSource {
); );
private static final int[] SURFACE_FALLBACK_BLOCK_YS = new int[]{192, 160, 128, 96, 64, 32, 0}; private static final int[] SURFACE_FALLBACK_BLOCK_YS = new int[]{192, 160, 128, 96, 64, 32, 0};
private static final class ColumnBiomeCache {
long key = Long.MIN_VALUE;
Holder<Biome> value;
}
private final ThreadLocal<ColumnBiomeCache> molewormSurfaceFallbackCache = ThreadLocal.withInitial(ColumnBiomeCache::new);
private final ThreadLocal<ColumnBiomeCache> peachForestSurfaceFallbackCache = ThreadLocal.withInitial(ColumnBiomeCache::new);
private final ThreadLocal<ColumnBiomeCache> landFallbackCache = ThreadLocal.withInitial(ColumnBiomeCache::new);
private static long packColumnKey(int x, int z) {
return ((long) x << 32) ^ (z & 0xFFFFFFFFL);
}
public static final MapCodec<ElythiaBiomeSource> CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( public static final MapCodec<ElythiaBiomeSource> CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group(
MultiNoiseBiomeSource.DIRECT_CODEC.forGetter(ElythiaBiomeSource::parameters), MultiNoiseBiomeSource.DIRECT_CODEC.forGetter(ElythiaBiomeSource::parameters),
Codec.INT.optionalFieldOf("moleworm_caves_max_y", 72).forGetter(ElythiaBiomeSource::molewormCavesMaxY), Codec.INT.optionalFieldOf("moleworm_caves_max_y", 72).forGetter(ElythiaBiomeSource::molewormCavesMaxY),
@@ -75,6 +88,7 @@ public class ElythiaBiomeSource extends BiomeSource {
private final int seaLevel; private final int seaLevel;
private final int molewormCavesMaxQuartY; private final int molewormCavesMaxQuartY;
private final int surfaceBiomeSampleQuartY; private final int surfaceBiomeSampleQuartY;
private final int oceanMaxQuartY;
private final int seaLevelQuartY; private final int seaLevelQuartY;
private final int undergroundGuardMaxQuartY; private final int undergroundGuardMaxQuartY;
private final Holder<Biome> oceanHolder; private final Holder<Biome> oceanHolder;
@@ -91,6 +105,7 @@ public class ElythiaBiomeSource extends BiomeSource {
this.seaLevel = seaLevel; this.seaLevel = seaLevel;
this.molewormCavesMaxQuartY = QuartPos.fromBlock(molewormCavesMaxY); this.molewormCavesMaxQuartY = QuartPos.fromBlock(molewormCavesMaxY);
this.surfaceBiomeSampleQuartY = QuartPos.fromBlock(surfaceBiomeSampleY); this.surfaceBiomeSampleQuartY = QuartPos.fromBlock(surfaceBiomeSampleY);
this.oceanMaxQuartY = QuartPos.fromBlock(oceanMaxY);
this.seaLevelQuartY = QuartPos.fromBlock(seaLevel); this.seaLevelQuartY = QuartPos.fromBlock(seaLevel);
// Cave pockets carved into hills/mountains above sea level have no other guard — // Cave pockets carved into hills/mountains above sea level have no other guard —
// they just resolve via raw climate matching, which can land on peach_forest/glimmering_pools // they just resolve via raw climate matching, which can land on peach_forest/glimmering_pools
@@ -144,7 +159,7 @@ public class ElythiaBiomeSource extends BiomeSource {
// Cap moleworm caves below their max Y — replace with surface biome above it // Cap moleworm caves below their max Y — replace with surface biome above it
if (biome.is(MOLEWORM_CAVES) && y > this.molewormCavesMaxQuartY) { if (biome.is(MOLEWORM_CAVES) && y > this.molewormCavesMaxQuartY) {
return resolveSurfaceFallback(x, y, z, sampler, MOLEWORM_CAVES, GLIMMERING_POOLS); return resolveSurfaceFallback(x, z, sampler, this.molewormSurfaceFallbackCache, MOLEWORM_CAVES, GLIMMERING_POOLS);
} }
// Use continentalness o classify the column. // Use continentalness o classify the column.
@@ -152,7 +167,7 @@ public class ElythiaBiomeSource extends BiomeSource {
// and ambient effects work correctly above the water surface. // and ambient effects work correctly above the water surface.
// Cave biomes are always preserved even in ocean columns. // Cave biomes are always preserved even in ocean columns.
Climate.TargetPoint target = sampler.sample(x, this.seaLevelQuartY, z); Climate.TargetPoint target = sampler.sample(x, this.seaLevelQuartY, z);
if (target.continentalness() < OCEAN_CONTINENTALNESS_THRESHOLD) { if (target.continentalness() < OCEAN_CONTINENTALNESS_THRESHOLD && y <= this.oceanMaxQuartY) {
if (biome.is(MOLEWORM_CAVES) || biome.is(ELYTHIA_LUSH_CAVES)) return biome; if (biome.is(MOLEWORM_CAVES) || biome.is(ELYTHIA_LUSH_CAVES)) return biome;
Holder<Biome> seaLevelBiome = this.delegate.getNoiseBiome(x, this.seaLevelQuartY, z, sampler); Holder<Biome> seaLevelBiome = this.delegate.getNoiseBiome(x, this.seaLevelQuartY, z, sampler);
// MultiNoise can return a land biome at sea-level depth — force ocean if so // MultiNoise can return a land biome at sea-level depth — force ocean if so
@@ -183,7 +198,7 @@ public class ElythiaBiomeSource extends BiomeSource {
// Neither peach_forest nor glimmering_pools should ever generate underground — // Neither peach_forest nor glimmering_pools should ever generate underground —
// fall back to whatever a nearby surface reference sample would give instead. // fall back to whatever a nearby surface reference sample would give instead.
if ((biome.is(PEACH_FOREST) || biome.is(GLIMMERING_POOLS)) && y <= this.undergroundGuardMaxQuartY) { if ((biome.is(PEACH_FOREST) || biome.is(GLIMMERING_POOLS)) && y <= this.undergroundGuardMaxQuartY) {
return resolveSurfaceFallback(x, y, z, sampler, PEACH_FOREST, GLIMMERING_POOLS); return resolveSurfaceFallback(x, z, sampler, this.peachForestSurfaceFallbackCache, PEACH_FOREST, GLIMMERING_POOLS);
} }
return biome; return biome;
@@ -258,32 +273,52 @@ public class ElythiaBiomeSource extends BiomeSource {
} }
@SafeVarargs @SafeVarargs
private Holder<Biome> resolveSurfaceFallback(int x, int y, int z, Climate.Sampler sampler, ResourceKey<Biome>... excluded) { private Holder<Biome> resolveSurfaceFallback(int x, int z, Climate.Sampler sampler, ThreadLocal<ColumnBiomeCache> cacheHolder, ResourceKey<Biome>... excluded) {
Holder<Biome> fallback = this.delegate.getNoiseBiome(x, this.surfaceBiomeSampleQuartY, z, sampler); ColumnBiomeCache cache = cacheHolder.get();
if (!isExcluded(fallback, excluded)) { long key = packColumnKey(x, z);
return fallback; if (cache.key == key) {
return cache.value;
} }
for (int sampleBlockY : SURFACE_FALLBACK_BLOCK_YS) { Holder<Biome> result = this.delegate.getNoiseBiome(x, this.surfaceBiomeSampleQuartY, z, sampler);
Holder<Biome> candidate = this.delegate.getNoiseBiome(x, QuartPos.fromBlock(sampleBlockY), z, sampler); if (isExcluded(result, excluded)) {
if (!isExcluded(candidate, excluded)) { for (int sampleBlockY : SURFACE_FALLBACK_BLOCK_YS) {
return candidate; Holder<Biome> candidate = this.delegate.getNoiseBiome(x, QuartPos.fromBlock(sampleBlockY), z, sampler);
if (!isExcluded(candidate, excluded)) {
result = candidate;
break;
}
} }
} }
return fallback; cache.key = key;
cache.value = result;
return result;
} }
private Holder<Biome> resolveLandFallback(int x, int z, Climate.Sampler sampler) { private Holder<Biome> resolveLandFallback(int x, int z, Climate.Sampler sampler) {
Holder<Biome> fallback = this.delegate.getNoiseBiome(x, this.surfaceBiomeSampleQuartY, z, sampler); ColumnBiomeCache cache = this.landFallbackCache.get();
if (!isOceanOrCave(fallback)) return fallback; long key = packColumnKey(x, z);
if (cache.key == key) {
for (int sampleBlockY : SURFACE_FALLBACK_BLOCK_YS) { return cache.value;
Holder<Biome> candidate = this.delegate.getNoiseBiome(x, QuartPos.fromBlock(sampleBlockY), z, sampler);
if (!isOceanOrCave(candidate)) return candidate;
} }
return defaultLandHolder != null ? defaultLandHolder : fallback; Holder<Biome> result = this.delegate.getNoiseBiome(x, this.surfaceBiomeSampleQuartY, z, sampler);
if (isOceanOrCave(result)) {
Holder<Biome> resolved = null;
for (int sampleBlockY : SURFACE_FALLBACK_BLOCK_YS) {
Holder<Biome> candidate = this.delegate.getNoiseBiome(x, QuartPos.fromBlock(sampleBlockY), z, sampler);
if (!isOceanOrCave(candidate)) {
resolved = candidate;
break;
}
}
result = resolved != null ? resolved : (defaultLandHolder != null ? defaultLandHolder : result);
}
cache.key = key;
cache.value = result;
return result;
} }
@SafeVarargs @SafeVarargs
@@ -350,6 +350,12 @@ public class ElythiaFloraFeature extends Feature<NoneFeatureConfiguration> {
if (plantPos == null) { if (plantPos == null) {
continue; continue;
} }
BlockPos groundPos = plantPos.below();
if (!isValidPlantSpot(level, plantPos, groundPos)) {
continue;
}
if (bushEligible && random.nextFloat() < 0.12F) { if (bushEligible && random.nextFloat() < 0.12F) {
if (placeDouble(level, plantPos, torchflowerBush().defaultBlockState())) { if (placeDouble(level, plantPos, torchflowerBush().defaultBlockState())) {
placed = true; placed = true;
@@ -15,8 +15,15 @@ import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
public final class GiantLilyPadPatchFeature extends Feature<NoneFeatureConfiguration> { public final class GiantLilyPadPatchFeature extends Feature<NoneFeatureConfiguration> {
private final float lotusChance;
public GiantLilyPadPatchFeature(Codec<NoneFeatureConfiguration> codec) { public GiantLilyPadPatchFeature(Codec<NoneFeatureConfiguration> codec) {
this(codec, 1.0F);
}
public GiantLilyPadPatchFeature(Codec<NoneFeatureConfiguration> codec, float lotusChance) {
super(codec); super(codec);
this.lotusChance = lotusChance;
} }
@Override @Override
@@ -43,7 +50,9 @@ public final class GiantLilyPadPatchFeature extends Feature<NoneFeatureConfigura
GiantLilyPadBlock.placeStructure(level, padPos, GiantLilyPadBlock.PadRotation.values()[random.nextInt(4)]); GiantLilyPadBlock.placeStructure(level, padPos, GiantLilyPadBlock.PadRotation.values()[random.nextInt(4)]);
placedAny = true; placedAny = true;
placeLotus(level, padPos); if (random.nextFloat() < this.lotusChance) {
placeLotus(level, padPos);
}
} }
return placedAny; return placedAny;
@@ -2,6 +2,8 @@ package com.craisinlord.antarchy.content.worldgen.elythia;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags; import net.minecraft.tags.BlockTags;
import net.minecraft.tags.FluidTags; import net.minecraft.tags.FluidTags;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
@@ -9,12 +11,16 @@ import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf;
import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.Heightmap;
import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
public class PeachForestPondFeature extends Feature<PeachForestPondConfiguration> { public class PeachForestPondFeature extends Feature<PeachForestPondConfiguration> {
private static final int NOISE_SAMPLES = 12; private static final int NOISE_SAMPLES = 12;
private static final ResourceLocation CAMELLIA_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "camellia");
private static final ResourceLocation SPIDER_LILY_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "spider_lily");
public PeachForestPondFeature(Codec<PeachForestPondConfiguration> codec) { public PeachForestPondFeature(Codec<PeachForestPondConfiguration> codec) {
super(codec); super(codec);
@@ -67,12 +73,14 @@ public class PeachForestPondFeature extends Feature<PeachForestPondConfiguration
placed = true; placed = true;
} else if (distance <= 1.45D && isSoil(level.getBlockState(topPos))) { } else if (distance <= 1.45D && isSoil(level.getBlockState(topPos))) {
level.setBlock(topPos, Blocks.TUFF.defaultBlockState(), 2); level.setBlock(topPos, Blocks.TUFF.defaultBlockState(), 2);
clearFloatingVegetation(level, topPos, center.getY());
} }
} }
} }
if (placed) { if (placed) {
this.placeLilyPads(level, center, radiusX, radiusZ, edgeNoise, random); this.placeLilyPads(level, center, radiusX, radiusZ, edgeNoise, random);
this.placeFrogspawn(level, center, radiusX, radiusZ, edgeNoise, random);
} }
return placed; return placed;
@@ -101,15 +109,33 @@ public class PeachForestPondFeature extends Feature<PeachForestPondConfiguration
private static void clearFloatingVegetation(WorldGenLevel level, BlockPos topPos, int surfaceY) { private static void clearFloatingVegetation(WorldGenLevel level, BlockPos topPos, int surfaceY) {
int topOfDebris = Math.max(surfaceY, level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, topPos.getX(), topPos.getZ()) - 1); int topOfDebris = Math.max(surfaceY, level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, topPos.getX(), topPos.getZ()) - 1);
for (int offset = 1; offset <= 32; offset++) { for (int y = surfaceY + 1; y <= topOfDebris + 32; y++) {
BlockPos abovePos = new BlockPos(topPos.getX(), topOfDebris + offset, topPos.getZ()); BlockPos abovePos = new BlockPos(topPos.getX(), y, topPos.getZ());
BlockState aboveState = level.getBlockState(abovePos); BlockState aboveState = level.getBlockState(abovePos);
if (isPeachFlower(aboveState)) {
removePeachFlower(level, abovePos, aboveState);
continue;
}
if (!aboveState.isAir() && aboveState.canBeReplaced()) { if (!aboveState.isAir() && aboveState.canBeReplaced()) {
level.setBlock(abovePos, Blocks.AIR.defaultBlockState(), 2); level.setBlock(abovePos, Blocks.AIR.defaultBlockState(), 2);
} }
} }
} }
private static boolean isPeachFlower(BlockState state) {
return state.is(BuiltInRegistries.BLOCK.get(CAMELLIA_ID)) || state.is(BuiltInRegistries.BLOCK.get(SPIDER_LILY_ID));
}
private static void removePeachFlower(WorldGenLevel level, BlockPos pos, BlockState state) {
level.setBlock(pos, Blocks.AIR.defaultBlockState(), 2);
if (state.is(BuiltInRegistries.BLOCK.get(CAMELLIA_ID)) && state.hasProperty(BlockStateProperties.DOUBLE_BLOCK_HALF)) {
BlockPos otherHalfPos = state.getValue(BlockStateProperties.DOUBLE_BLOCK_HALF) == DoubleBlockHalf.UPPER ? pos.below() : pos.above();
if (level.getBlockState(otherHalfPos).is(BuiltInRegistries.BLOCK.get(CAMELLIA_ID))) {
level.setBlock(otherHalfPos, Blocks.AIR.defaultBlockState(), 2);
}
}
}
private void placeLilyPads(WorldGenLevel level, BlockPos center, int radiusX, int radiusZ, double[] edgeNoise, RandomSource random) { private void placeLilyPads(WorldGenLevel level, BlockPos center, int radiusX, int radiusZ, double[] edgeNoise, RandomSource random) {
int attempts = 6 + (radiusX + radiusZ) * 2; int attempts = 6 + (radiusX + radiusZ) * 2;
for (int i = 0; i < attempts; i++) { for (int i = 0; i < attempts; i++) {
@@ -135,6 +161,31 @@ public class PeachForestPondFeature extends Feature<PeachForestPondConfiguration
} }
} }
private void placeFrogspawn(WorldGenLevel level, BlockPos center, int radiusX, int radiusZ, double[] edgeNoise, RandomSource random) {
int attempts = 2 + (radiusX + radiusZ) / 3;
for (int i = 0; i < attempts; i++) {
int x = random.nextInt(radiusX * 2 + 1) - radiusX;
int z = random.nextInt(radiusZ * 2 + 1) - radiusZ;
double noiseFactor = sampleEdgeNoise(edgeNoise, x, z);
double distance = ((x * x) / (double) (radiusX * radiusX) + (z * z) / (double) (radiusZ * radiusZ)) / (noiseFactor * noiseFactor);
if (distance > 0.8D || random.nextFloat() > 0.45F) {
continue;
}
BlockPos spawnPos = center.offset(x, 1, z);
if (!level.getFluidState(spawnPos.below()).is(FluidTags.WATER) || !level.isEmptyBlock(spawnPos)) {
continue;
}
BlockState frogspawn = Blocks.FROGSPAWN.defaultBlockState();
if (!frogspawn.canSurvive(level, spawnPos)) {
continue;
}
level.setBlock(spawnPos, frogspawn, 2);
}
}
private static boolean isSoil(BlockState state) { private static boolean isSoil(BlockState state) {
return state.is(BlockTags.DIRT) || state.is(Blocks.GRASS_BLOCK) || state.is(Blocks.MOSS_BLOCK) || state.is(Blocks.ROOTED_DIRT); return state.is(BlockTags.DIRT) || state.is(Blocks.GRASS_BLOCK) || state.is(Blocks.MOSS_BLOCK) || state.is(Blocks.ROOTED_DIRT);
} }
@@ -6553,56 +6553,6 @@
}, },
"lerp_mode": "catmullrom" "lerp_mode": "catmullrom"
} }
},
"position": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.4583": {
"vector": [0, 0, 0]
},
"0.5": {
"vector": [0, 27, 0]
},
"0.5417": {
"vector": [0, -33, 0]
},
"0.5833": {
"vector": [0, 14, 0]
},
"0.6667": {
"vector": [0, -19, 0]
},
"0.75": {
"pre": {
"vector": [0, 5, 0]
},
"post": {
"vector": [0, 5, 0]
},
"lerp_mode": "catmullrom"
},
"0.875": {
"post": {
"vector": [0, -10, 0]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.1667": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
} }
}, },
"l_shoulder": { "l_shoulder": {
@@ -7188,4 +7138,4 @@
} }
} }
} }
} }
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "antarchy:block/myrmite_coal_ore"
}
}
}
@@ -901,6 +901,7 @@
"block.antarchy.broodstone_brick_stairs": "Broodstoneziegeltreppe", "block.antarchy.broodstone_brick_stairs": "Broodstoneziegeltreppe",
"block.antarchy.broodstone_brick_slab": "Broodstoneziegelstufe", "block.antarchy.broodstone_brick_slab": "Broodstoneziegelstufe",
"block.antarchy.broodstone_brick_wall": "Broodstoneziegelmauer", "block.antarchy.broodstone_brick_wall": "Broodstoneziegelmauer",
"block.antarchy.myrmite_coal_ore": "Myrmite Kohleerz",
"block.antarchy.broodstone_uranium_ore": "Broodstone Uran-Erz", "block.antarchy.broodstone_uranium_ore": "Broodstone Uran-Erz",
"block.antarchy.broodstone_titanium_ore": "Broodstone Titan-Erz", "block.antarchy.broodstone_titanium_ore": "Broodstone Titan-Erz",
"item.antarchy.raw_bug_meat": "Rohes Insektenfleisch", "item.antarchy.raw_bug_meat": "Rohes Insektenfleisch",
@@ -431,6 +431,7 @@
"item.antarchy.glimmer_spawn_egg": "Glimmer Spawn Egg", "item.antarchy.glimmer_spawn_egg": "Glimmer Spawn Egg",
"item.antarchy.ouranwood_deer_spawn_egg": "Ouranwood Deer Spawn Egg", "item.antarchy.ouranwood_deer_spawn_egg": "Ouranwood Deer Spawn Egg",
"item.antarchy.spirit_apple": "Spirit Apple", "item.antarchy.spirit_apple": "Spirit Apple",
"tooltip.antarchy.spirit_apple": "Tames a Glimmer",
"item.antarchy.elka_spawn_egg": "Elka Spawn Egg", "item.antarchy.elka_spawn_egg": "Elka Spawn Egg",
"item.antarchy.glimmer_bottle": "Bottle of Glimmer", "item.antarchy.glimmer_bottle": "Bottle of Glimmer",
"item.antarchy.glimmer_bottle.contains": "Contains: %s", "item.antarchy.glimmer_bottle.contains": "Contains: %s",
@@ -901,6 +902,7 @@
"block.antarchy.broodstone_brick_stairs": "Broodstone Brick Stairs", "block.antarchy.broodstone_brick_stairs": "Broodstone Brick Stairs",
"block.antarchy.broodstone_brick_slab": "Broodstone Brick Slab", "block.antarchy.broodstone_brick_slab": "Broodstone Brick Slab",
"block.antarchy.broodstone_brick_wall": "Broodstone Brick Wall", "block.antarchy.broodstone_brick_wall": "Broodstone Brick Wall",
"block.antarchy.myrmite_coal_ore": "Myrmite Coal Ore",
"block.antarchy.broodstone_uranium_ore": "Broodstone Uranium Ore", "block.antarchy.broodstone_uranium_ore": "Broodstone Uranium Ore",
"block.antarchy.broodstone_titanium_ore": "Broodstone Titanium Ore", "block.antarchy.broodstone_titanium_ore": "Broodstone Titanium Ore",
"item.antarchy.raw_bug_meat": "Raw Bug Meat", "item.antarchy.raw_bug_meat": "Raw Bug Meat",
@@ -901,6 +901,7 @@
"block.antarchy.broodstone_brick_stairs": "Escaleras de ladrillos de Broodstone", "block.antarchy.broodstone_brick_stairs": "Escaleras de ladrillos de Broodstone",
"block.antarchy.broodstone_brick_slab": "Losa de ladrillos de Broodstone", "block.antarchy.broodstone_brick_slab": "Losa de ladrillos de Broodstone",
"block.antarchy.broodstone_brick_wall": "Muro de ladrillos de Broodstone", "block.antarchy.broodstone_brick_wall": "Muro de ladrillos de Broodstone",
"block.antarchy.myrmite_coal_ore": "Mena de carbón de Myrmite",
"block.antarchy.broodstone_uranium_ore": "Mena de Broodstone Uranio", "block.antarchy.broodstone_uranium_ore": "Mena de Broodstone Uranio",
"block.antarchy.broodstone_titanium_ore": "Mena de Broodstone Titanio", "block.antarchy.broodstone_titanium_ore": "Mena de Broodstone Titanio",
"item.antarchy.raw_bug_meat": "Carne de insecto cruda", "item.antarchy.raw_bug_meat": "Carne de insecto cruda",
@@ -901,6 +901,7 @@
"block.antarchy.broodstone_brick_stairs": "Escalier en briques de Broodstone", "block.antarchy.broodstone_brick_stairs": "Escalier en briques de Broodstone",
"block.antarchy.broodstone_brick_slab": "Dalle en briques de Broodstone", "block.antarchy.broodstone_brick_slab": "Dalle en briques de Broodstone",
"block.antarchy.broodstone_brick_wall": "Muret en briques de Broodstone", "block.antarchy.broodstone_brick_wall": "Muret en briques de Broodstone",
"block.antarchy.myrmite_coal_ore": "Minerai de charbon de Myrmite",
"block.antarchy.broodstone_uranium_ore": "Minerai de Broodstone Uranium", "block.antarchy.broodstone_uranium_ore": "Minerai de Broodstone Uranium",
"block.antarchy.broodstone_titanium_ore": "Minerai de Broodstone Titane", "block.antarchy.broodstone_titanium_ore": "Minerai de Broodstone Titane",
"item.antarchy.raw_bug_meat": "Viande d’insecte crue", "item.antarchy.raw_bug_meat": "Viande d’insecte crue",
@@ -901,6 +901,7 @@
"block.antarchy.broodstone_brick_stairs": "Scale di mattoni di Broodstone", "block.antarchy.broodstone_brick_stairs": "Scale di mattoni di Broodstone",
"block.antarchy.broodstone_brick_slab": "Lastra di mattoni di Broodstone", "block.antarchy.broodstone_brick_slab": "Lastra di mattoni di Broodstone",
"block.antarchy.broodstone_brick_wall": "Muretto di mattoni di Broodstone", "block.antarchy.broodstone_brick_wall": "Muretto di mattoni di Broodstone",
"block.antarchy.myrmite_coal_ore": "Minerale di carbone di Myrmite",
"block.antarchy.broodstone_uranium_ore": "Minerale di uranio di Broodstone", "block.antarchy.broodstone_uranium_ore": "Minerale di uranio di Broodstone",
"block.antarchy.broodstone_titanium_ore": "Minerale di titanio di Broodstone", "block.antarchy.broodstone_titanium_ore": "Minerale di titanio di Broodstone",
"item.antarchy.raw_bug_meat": "Carne d’insetto cruda", "item.antarchy.raw_bug_meat": "Carne d’insetto cruda",
@@ -901,6 +901,7 @@
"block.antarchy.broodstone_brick_stairs": "ブルードストーンレンガの階段", "block.antarchy.broodstone_brick_stairs": "ブルードストーンレンガの階段",
"block.antarchy.broodstone_brick_slab": "ブルードストーンレンガのハーフブロック", "block.antarchy.broodstone_brick_slab": "ブルードストーンレンガのハーフブロック",
"block.antarchy.broodstone_brick_wall": "ブルードストーンレンガの塀", "block.antarchy.broodstone_brick_wall": "ブルードストーンレンガの塀",
"block.antarchy.myrmite_coal_ore": "ミルマイト 石炭鉱石",
"block.antarchy.broodstone_uranium_ore": "ブルードストーン ウランの鉱石", "block.antarchy.broodstone_uranium_ore": "ブルードストーン ウランの鉱石",
"block.antarchy.broodstone_titanium_ore": "ブルードストーン チタンの鉱石", "block.antarchy.broodstone_titanium_ore": "ブルードストーン チタンの鉱石",
"item.antarchy.raw_bug_meat": "生の虫肉", "item.antarchy.raw_bug_meat": "生の虫肉",
@@ -901,6 +901,7 @@
"block.antarchy.broodstone_brick_stairs": "브루드스톤 벽돌 계단", "block.antarchy.broodstone_brick_stairs": "브루드스톤 벽돌 계단",
"block.antarchy.broodstone_brick_slab": "브루드스톤 벽돌 반 블록", "block.antarchy.broodstone_brick_slab": "브루드스톤 벽돌 반 블록",
"block.antarchy.broodstone_brick_wall": "브루드스톤 벽돌 담장", "block.antarchy.broodstone_brick_wall": "브루드스톤 벽돌 담장",
"block.antarchy.myrmite_coal_ore": "미르마이트 석탄 광석",
"block.antarchy.broodstone_uranium_ore": "브루드스톤 우라늄 광석", "block.antarchy.broodstone_uranium_ore": "브루드스톤 우라늄 광석",
"block.antarchy.broodstone_titanium_ore": "브루드스톤 티타늄 광석", "block.antarchy.broodstone_titanium_ore": "브루드스톤 티타늄 광석",
"item.antarchy.raw_bug_meat": "익히지 않은 벌레 고기", "item.antarchy.raw_bug_meat": "익히지 않은 벌레 고기",
@@ -901,6 +901,7 @@
"block.antarchy.broodstone_brick_stairs": "Escadas de Tijolos de Broodstone", "block.antarchy.broodstone_brick_stairs": "Escadas de Tijolos de Broodstone",
"block.antarchy.broodstone_brick_slab": "Laje de Tijolos de Broodstone", "block.antarchy.broodstone_brick_slab": "Laje de Tijolos de Broodstone",
"block.antarchy.broodstone_brick_wall": "Muro de Tijolos de Broodstone", "block.antarchy.broodstone_brick_wall": "Muro de Tijolos de Broodstone",
"block.antarchy.myrmite_coal_ore": "Minério de carvão de Myrmite",
"block.antarchy.broodstone_uranium_ore": "Minério de Broodstone Urânio", "block.antarchy.broodstone_uranium_ore": "Minério de Broodstone Urânio",
"block.antarchy.broodstone_titanium_ore": "Minério de Broodstone Titânio", "block.antarchy.broodstone_titanium_ore": "Minério de Broodstone Titânio",
"item.antarchy.raw_bug_meat": "Carne de Inseto Crua", "item.antarchy.raw_bug_meat": "Carne de Inseto Crua",
@@ -121,6 +121,7 @@
"block.antarchy.red_ant_nest": "Гнездо красных муравьёв", "block.antarchy.red_ant_nest": "Гнездо красных муравьёв",
"block.antarchy.brown_ant_nest": "Гнездо коричневых муравьёв", "block.antarchy.brown_ant_nest": "Гнездо коричневых муравьёв",
"block.antarchy.rainbow_ant_nest": "Гнездо радужных муравьёв", "block.antarchy.rainbow_ant_nest": "Гнездо радужных муравьёв",
"block.antarchy.myrmite_coal_ore": "Myrmite Coal Ore",
"block.antarchy.uranium_ore": "Урановая руда", "block.antarchy.uranium_ore": "Урановая руда",
"block.antarchy.deepslate_uranium_ore": "Глубинная урановая руда", "block.antarchy.deepslate_uranium_ore": "Глубинная урановая руда",
"block.antarchy.titanium_ore": "Титановая руда", "block.antarchy.titanium_ore": "Титановая руда",
@@ -825,4 +826,4 @@
"advancements.antarchy.squidzooka_craft.description": "Создайте сквидзуку.", "advancements.antarchy.squidzooka_craft.description": "Создайте сквидзуку.",
"advancements.antarchy.gravity_gun_craft.title": "Мастер притяжения", "advancements.antarchy.gravity_gun_craft.title": "Мастер притяжения",
"advancements.antarchy.gravity_gun_craft.description": "Создайте гравитационную пушку." "advancements.antarchy.gravity_gun_craft.description": "Создайте гравитационную пушку."
} }
@@ -901,6 +901,7 @@
"block.antarchy.broodstone_brick_stairs": "布鲁德斯通砖楼梯", "block.antarchy.broodstone_brick_stairs": "布鲁德斯通砖楼梯",
"block.antarchy.broodstone_brick_slab": "布鲁德斯通砖台阶", "block.antarchy.broodstone_brick_slab": "布鲁德斯通砖台阶",
"block.antarchy.broodstone_brick_wall": "布鲁德斯通砖墙", "block.antarchy.broodstone_brick_wall": "布鲁德斯通砖墙",
"block.antarchy.myrmite_coal_ore": "米尔迈特煤矿石",
"block.antarchy.broodstone_uranium_ore": "布鲁德斯通 铀矿石", "block.antarchy.broodstone_uranium_ore": "布鲁德斯通 铀矿石",
"block.antarchy.broodstone_titanium_ore": "布鲁德斯通 钛矿石", "block.antarchy.broodstone_titanium_ore": "布鲁德斯通 钛矿石",
"item.antarchy.raw_bug_meat": "生虫肉", "item.antarchy.raw_bug_meat": "生虫肉",
@@ -901,6 +901,7 @@
"block.antarchy.broodstone_brick_stairs": "布魯德斯通磚樓梯", "block.antarchy.broodstone_brick_stairs": "布魯德斯通磚樓梯",
"block.antarchy.broodstone_brick_slab": "布魯德斯通磚臺階", "block.antarchy.broodstone_brick_slab": "布魯德斯通磚臺階",
"block.antarchy.broodstone_brick_wall": "布魯德斯通磚牆", "block.antarchy.broodstone_brick_wall": "布魯德斯通磚牆",
"block.antarchy.myrmite_coal_ore": "米爾邁特煤礦石",
"block.antarchy.broodstone_uranium_ore": "布魯德斯通 鈾礦石", "block.antarchy.broodstone_uranium_ore": "布魯德斯通 鈾礦石",
"block.antarchy.broodstone_titanium_ore": "布魯德斯通 鈦礦石", "block.antarchy.broodstone_titanium_ore": "布魯德斯通 鈦礦石",
"item.antarchy.raw_bug_meat": "生蟲肉", "item.antarchy.raw_bug_meat": "生蟲肉",
@@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "antarchy:block/myrmite_coal_ore"
}
}
@@ -0,0 +1,3 @@
{
"parent": "antarchy:block/myrmite_coal_ore"
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 B

@@ -14,7 +14,7 @@
], ],
"humidity": [ "humidity": [
-1.0, -1.0,
0.85 0.55
], ],
"continentalness": [ "continentalness": [
-1.0, -1.0,
@@ -43,7 +43,7 @@
1.0 1.0
], ],
"humidity": [ "humidity": [
0.85, 0.5,
1.0 1.0
], ],
"continentalness": [ "continentalness": [
@@ -55,8 +55,8 @@
1.0 1.0
], ],
"weirdness": [ "weirdness": [
-1.0, -0.45,
1.0 0.45
], ],
"depth": [ "depth": [
-2.0, -2.0,
@@ -19,7 +19,7 @@
"erosion": 0.2, "erosion": 0.2,
"weirdness": 0.16, "weirdness": 0.16,
"depth": 0.3, "depth": 0.3,
"offset": 0.3 "offset": 0.27
} }
}, },
{ {
@@ -31,7 +31,7 @@
"erosion": 0.38, "erosion": 0.38,
"weirdness": -0.55, "weirdness": -0.55,
"depth": 0.3, "depth": 0.3,
"offset": 0.3 "offset": 0.27
} }
}, },
{ {
@@ -43,7 +43,7 @@
"erosion": 0.10, "erosion": 0.10,
"weirdness": 0.65, "weirdness": 0.65,
"depth": 0.3, "depth": 0.3,
"offset": 0.3 "offset": 0.27
} }
}, },
{ {
@@ -0,0 +1,52 @@
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:alternatives",
"children": [
{
"type": "minecraft:item",
"name": "antarchy:myrmite_coal_ore",
"conditions": [
{
"condition": "minecraft:match_tool",
"predicate": {
"components": {
"minecraft:enchantments": {
"levels": {
"minecraft:silk_touch": 1
}
}
}
}
}
]
},
{
"type": "minecraft:item",
"name": "minecraft:coal",
"functions": [
{
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops"
},
{
"function": "minecraft:explosion_decay"
}
]
}
]
}
]
}
]
}
@@ -1,6 +1,7 @@
{ {
"values": [ "values": [
"antarchy:cavaryn", "antarchy:cavaryn",
"antarchy:glowcap_caves",
"antarchy:brooding_tunnels", "antarchy:brooding_tunnels",
"antarchy:rolly_caves" "antarchy:rolly_caves"
] ]
@@ -2,11 +2,11 @@
"trades": [ "trades": [
{ {
"buy": { "buy": {
"item": "antarchy:emerald", "item": "minecraft:emerald",
"count": 7 "count": 7
}, },
"sell": { "sell": {
"item": "minecraft:root_beer", "item": "antarchy:root_beer",
"count": 1 "count": 1
}, },
"max_uses": 16, "max_uses": 16,
@@ -15,7 +15,7 @@
}, },
{ {
"buy": { "buy": {
"item": "antarchy:cooked_corn_dog", "item": "antarchy:cooked_corndog",
"count": 3 "count": 3
}, },
"sell": { "sell": {
@@ -24,12 +24,12 @@
}, },
"spawn_costs": { "spawn_costs": {
"antarchy:jumpy_bug": { "antarchy:jumpy_bug": {
"energy_budget": 0.2, "energy_budget": 0.4,
"charge": 9 "charge": 7
}, },
"antarchy:spit_bug": { "antarchy:spit_bug": {
"energy_budget": 0.7, "energy_budget": 0.9,
"charge": 6 "charge": 2
} }
}, },
"carvers": { "carvers": {
@@ -57,10 +57,11 @@
"antarchy:brooding_tunnels_creepvine", "antarchy:brooding_tunnels_creepvine",
"antarchy:brooding_tunnels_hanging_creeproots", "antarchy:brooding_tunnels_hanging_creeproots",
"antarchy:molting_vines", "antarchy:molting_vines",
"antarchy:ground_molting_vines",
"antarchy:jumpy_bug_egg_ceiling" "antarchy:jumpy_bug_egg_ceiling"
] ]
], ],
"creature_spawn_probability": 0.06, "creature_spawn_probability": 0.12,
"spawners": { "spawners": {
"monster": [ "monster": [
{ {
@@ -77,7 +78,14 @@
} }
], ],
"creature": [], "creature": [],
"ambient": [], "ambient": [
{
"type": "antarchy:stink_bug",
"weight": 10,
"minCount": 1,
"maxCount": 3
}
],
"axolotls": [], "axolotls": [],
"underground_water_creature": [], "underground_water_creature": [],
"water_creature": [], "water_creature": [],
@@ -39,7 +39,11 @@
[], [],
[], [],
[], [],
[], [
"antarchy:myrmite_coal_ore",
"antarchy:broodstone_uranium_ore",
"antarchy:broodstone_titanium_ore"
],
[], [],
[ [
"antarchy:cavaryn_bile_veins", "antarchy:cavaryn_bile_veins",
@@ -76,7 +80,8 @@
"maxCount": 1 "maxCount": 1
} }
], ],
"creature": [ "creature": [],
"ambient": [
{ {
"type": "antarchy:stink_bug", "type": "antarchy:stink_bug",
"weight": 10, "weight": 10,
@@ -84,7 +89,6 @@
"maxCount": 3 "maxCount": 3
} }
], ],
"ambient": [],
"axolotls": [], "axolotls": [],
"underground_water_creature": [], "underground_water_creature": [],
"water_creature": [], "water_creature": [],
@@ -63,16 +63,15 @@
"maxCount": 5 "maxCount": 5
} }
], ],
"creature": [ "creature": [],
"ambient": [
{ {
"type": "antarchy:stink_bug", "type": "antarchy:stink_bug",
"weight": 32, "weight": 40,
"minCount": 2, "minCount": 2,
"maxCount": 4 "maxCount": 4
} }
], ],
"ambient": [
],
"axolotls": [], "axolotls": [],
"underground_water_creature": [], "underground_water_creature": [],
"water_creature": [], "water_creature": [],
@@ -69,7 +69,8 @@
"antarchy:peach_large_tree", "antarchy:peach_large_tree",
"antarchy:peach_tree", "antarchy:peach_tree",
"antarchy:peach_forest_flora", "antarchy:peach_forest_flora",
"antarchy:elythia_rainbow_ant_nests" "antarchy:elythia_rainbow_ant_nests",
"antarchy:giant_lily_pad_patch_peach_forest"
], ],
[] []
], ],
@@ -59,14 +59,7 @@
"creature_spawn_probability": 0.08, "creature_spawn_probability": 0.08,
"spawners": { "spawners": {
"monster": [], "monster": [],
"creature": [ "creature": [],
{
"type": "antarchy:rolly_polly",
"weight": 20,
"minCount": 1,
"maxCount": 2
}
],
"ambient": [], "ambient": [],
"axolotls": [], "axolotls": [],
"underground_water_creature": [], "underground_water_creature": [],
@@ -0,0 +1,4 @@
{
"type": "antarchy:giant_lily_pad_patch_peach_forest",
"config": {}
}
@@ -38,13 +38,13 @@
"type": "minecraft:weighted_state_provider", "type": "minecraft:weighted_state_provider",
"entries": [ "entries": [
{ {
"weight": 21, "weight": 24,
"data": { "data": {
"Name": "antarchy:amber_moss_carpet" "Name": "antarchy:amber_moss_carpet"
} }
}, },
{ {
"weight": 11, "weight": 12,
"data": { "data": {
"Name": "minecraft:short_grass" "Name": "minecraft:short_grass"
} }
@@ -0,0 +1,4 @@
{
"type": "antarchy:ground_molting_vines",
"config": {}
}
@@ -0,0 +1,18 @@
{
"type": "minecraft:ore",
"config": {
"size": 12,
"discard_chance_on_air_exposure": 0.0,
"targets": [
{
"target": {
"predicate_type": "minecraft:block_match",
"block": "antarchy:myrmite"
},
"state": {
"Name": "antarchy:myrmite_coal_ore"
}
}
]
}
}
@@ -3,7 +3,7 @@
"placement": [ "placement": [
{ {
"type": "minecraft:rarity_filter", "type": "minecraft:rarity_filter",
"chance": 5 "chance": 4
}, },
{ {
"type": "minecraft:in_square" "type": "minecraft:in_square"
@@ -0,0 +1,9 @@
{
"feature": "antarchy:giant_lily_pad_patch_peach_forest",
"placement": [
{ "type": "minecraft:rarity_filter", "chance": 6 },
{ "type": "minecraft:in_square" },
{ "type": "minecraft:heightmap", "heightmap": "MOTION_BLOCKING_NO_LEAVES" },
{ "type": "minecraft:biome" }
]
}
@@ -0,0 +1,31 @@
{
"feature": "antarchy:ground_molting_vines",
"placement": [
{
"type": "minecraft:count",
"count": {
"type": "minecraft:uniform",
"min_inclusive": 3,
"max_inclusive": 6
}
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"min_inclusive": {
"above_bottom": 8
},
"max_inclusive": {
"below_top": 8
}
}
},
{
"type": "minecraft:biome"
}
]
}
@@ -2,8 +2,12 @@
"feature": "antarchy:jumpy_bug_egg_ceiling", "feature": "antarchy:jumpy_bug_egg_ceiling",
"placement": [ "placement": [
{ {
"type": "minecraft:rarity_filter", "type": "minecraft:count",
"chance": 6 "count": {
"type": "minecraft:uniform",
"min_inclusive": 1,
"max_inclusive": 2
}
}, },
{ {
"type": "minecraft:in_square" "type": "minecraft:in_square"
@@ -0,0 +1,27 @@
{
"feature": "antarchy:myrmite_coal_ore",
"placement": [
{
"type": "minecraft:count",
"count": 14
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"min_inclusive": {
"absolute": 5
},
"max_inclusive": {
"absolute": 190
}
}
},
{
"type": "minecraft:biome"
}
]
}
@@ -12,6 +12,15 @@
"type": "minecraft:heightmap", "type": "minecraft:heightmap",
"heightmap": "WORLD_SURFACE_WG" "heightmap": "WORLD_SURFACE_WG"
}, },
{
"type": "minecraft:block_predicate_filter",
"predicate": {
"type": "minecraft:would_survive",
"state": {
"Name": "minecraft:pink_petals"
}
}
},
{ {
"type": "minecraft:biome" "type": "minecraft:biome"
} }
@@ -6,15 +6,15 @@
}, },
{ {
"structure": "antarchy:fallen_kingdom_castle", "structure": "antarchy:fallen_kingdom_castle",
"weight": 1 "weight": 2
}, },
{ {
"structure": "antarchy:ruined_arena", "structure": "antarchy:ruined_arena",
"weight": 1 "weight": 3
}, },
{ {
"structure": "antarchy:toreterror_arena", "structure": "antarchy:toreterror_arena",
"weight": 1 "weight": 3
} }
], ],
"placement": { "placement": {
@@ -1,6 +1,7 @@
{ {
"replace": false, "replace": false,
"values": [ "values": [
"#c:ores/coal",
"#c:ores/titanium", "#c:ores/titanium",
"#c:ores/uranium" "#c:ores/uranium"
] ]
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"antarchy:myrmite_coal_ore"
]
}
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"antarchy:myrmite_coal_ore"
]
}
@@ -1,6 +1,7 @@
{ {
"replace": false, "replace": false,
"values": [ "values": [
"#c:ores/coal",
"#c:ores/titanium", "#c:ores/titanium",
"#c:ores/uranium" "#c:ores/uranium"
] ]
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"antarchy:myrmite_coal_ore"
]
}
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"antarchy:myrmite_coal_ore"
]
}
@@ -94,6 +94,7 @@
"antarchy:broodstone_brick_stairs", "antarchy:broodstone_brick_stairs",
"antarchy:broodstone_brick_slab", "antarchy:broodstone_brick_slab",
"antarchy:broodstone_brick_wall", "antarchy:broodstone_brick_wall",
"antarchy:myrmite_coal_ore",
"antarchy:broodstone_uranium_ore", "antarchy:broodstone_uranium_ore",
"antarchy:broodstone_titanium_ore", "antarchy:broodstone_titanium_ore",
"antarchy:bile_vein", "antarchy:bile_vein",
@@ -19,6 +19,7 @@
"antarchy:shellstone_brick_stairs", "antarchy:shellstone_brick_stairs",
"antarchy:shellstone_brick_slab", "antarchy:shellstone_brick_slab",
"antarchy:shellstone_brick_wall", "antarchy:shellstone_brick_wall",
"antarchy:myrmite_coal_ore",
"antarchy:chiten_block", "antarchy:chiten_block",
"antarchy:bile_vein" "antarchy:bile_vein"
] ]
@@ -15,7 +15,6 @@
"antarchy:hercules_beetle", "antarchy:hercules_beetle",
"antarchy:creeping_horror", "antarchy:creeping_horror",
"antarchy:lurking_terror", "antarchy:lurking_terror",
"antarchy:rolly_polly",
"antarchy:scorpion", "antarchy:scorpion",
"antarchy:emperor_scorpion" "antarchy:emperor_scorpion"
] ]
@@ -2,18 +2,28 @@ package com.craisinlord.antarchy.fabric;
import com.craisinlord.antarchy.fabric.registry.AntarchyFabricEntities; import com.craisinlord.antarchy.fabric.registry.AntarchyFabricEntities;
import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.entity.trades.DrTrayaurusTradeManager;
import com.craisinlord.antarchy.content.item.BloodCrystalShardItem; import com.craisinlord.antarchy.content.item.BloodCrystalShardItem;
import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking;
import net.fabricmc.fabric.api.biome.v1.BiomeModifications; import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; import net.fabricmc.fabric.api.biome.v1.BiomeSelectors;
import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener;
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.fabricmc.api.ModInitializer; import net.fabricmc.api.ModInitializer;
import net.minecraft.core.registries.Registries; import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.PackType;
import net.minecraft.server.packs.resources.PreparableReloadListener;
import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.tags.TagKey; import net.minecraft.tags.TagKey;
import net.minecraft.util.profiling.ProfilerFiller;
import net.minecraft.world.level.levelgen.GenerationStep; import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.placement.PlacedFeature;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
public final class AntarchyFabric implements ModInitializer { public final class AntarchyFabric implements ModInitializer {
private static final TagKey<net.minecraft.world.level.biome.Biome> SHELLSTONE_BIOMES = TagKey.create( private static final TagKey<net.minecraft.world.level.biome.Biome> SHELLSTONE_BIOMES = TagKey.create(
Registries.BIOME, Registries.BIOME,
@@ -146,6 +156,24 @@ public final class AntarchyFabric implements ModInitializer {
BloodglassManager.register(); BloodglassManager.register();
Antarchy.init(); Antarchy.init();
BloodCrystalShardItem.SYNC_BLOODGLASS = BloodglassManager::syncBloodglass; BloodCrystalShardItem.SYNC_BLOODGLASS = BloodglassManager::syncBloodglass;
registerTradeReloadListener();
}
private static void registerTradeReloadListener() {
DrTrayaurusTradeManager delegate = new DrTrayaurusTradeManager();
ResourceManagerHelper.get(PackType.SERVER_DATA).registerReloadListener(new IdentifiableResourceReloadListener() {
@Override
public ResourceLocation getFabricId() {
return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "trayaurus_trades");
}
@Override
public CompletableFuture<Void> reload(PreparableReloadListener.PreparationBarrier barrier, ResourceManager manager,
ProfilerFiller prepareProfiler, ProfilerFiller applyProfiler,
Executor prepareExecutor, Executor applyExecutor) {
return delegate.reload(barrier, manager, prepareProfiler, applyProfiler, prepareExecutor, applyExecutor);
}
});
} }
private static final TagKey<net.minecraft.world.level.biome.Biome> CAVARYN_BIOMES = TagKey.create( private static final TagKey<net.minecraft.world.level.biome.Biome> CAVARYN_BIOMES = TagKey.create(
@@ -34,13 +34,15 @@ public final class StinkySoundHandler {
return; return;
} }
client.level.playSound( client.level.playLocalSound(
null, client.player.getX(),
client.player.blockPosition(), client.player.getY(),
client.player.getZ(),
AntarchySoundEvents.STINKY_FLY.get(), AntarchySoundEvents.STINKY_FLY.get(),
SoundSource.AMBIENT, SoundSource.AMBIENT,
0.14F + client.level.random.nextFloat() * 0.06F, 0.14F + client.level.random.nextFloat() * 0.06F,
0.92F + client.level.random.nextFloat() * 0.16F 0.92F + client.level.random.nextFloat() * 0.16F,
false
); );
nextSoundTick = MIN_INTERVAL + client.level.random.nextInt(MAX_INTERVAL - MIN_INTERVAL + 1); nextSoundTick = MIN_INTERVAL + client.level.random.nextInt(MAX_INTERVAL - MIN_INTERVAL + 1);
}); });
@@ -660,6 +660,10 @@ public final class AntarchyFabricBlocks {
() -> new Block(nyxiteProperties())); () -> new Block(nyxiteProperties()));
public static final DeferredBlock<Block> MYRMITE_COAL_ORE = BLOCKS.register("myrmite_coal_ore",
() -> createOre(Blocks.COAL_ORE, 0, 2));
public static final DeferredBlock<Block> BROODSTONE = BLOCKS.register("broodstone", public static final DeferredBlock<Block> BROODSTONE = BLOCKS.register("broodstone",
() -> new Block(broodstoneProperties())); () -> new Block(broodstoneProperties()));
@@ -360,7 +360,7 @@ public final class AntarchyFabricEntities {
public static final DeferredHolder<EntityType<?>, EntityType<StinkBugEntity>> STINK_BUG = ENTITY_TYPES.register("stink_bug", public static final DeferredHolder<EntityType<?>, EntityType<StinkBugEntity>> STINK_BUG = ENTITY_TYPES.register("stink_bug",
() -> EntityType.Builder.of(StinkBugEntity::new, MobCategory.CREATURE) () -> EntityType.Builder.of(StinkBugEntity::new, MobCategory.AMBIENT)
.sized(0.35F, 0.2F) .sized(0.35F, 0.2F)
.clientTrackingRange(8) .clientTrackingRange(8)
.build("stink_bug")); .build("stink_bug"));
@@ -647,6 +647,7 @@ public final class AntarchyFabricItems {
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_BRICK_STAIRS); public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_BRICK_STAIRS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_BRICK_SLAB); public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_BRICK_SLAB);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_BRICK_WALL); public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_BRICK_WALL);
public static final DeferredItem<net.minecraft.world.item.BlockItem> MYRMITE_COAL_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.MYRMITE_COAL_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_URANIUM_ORE); public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_URANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_TITANIUM_ORE); public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_TITANIUM_ORE);
@@ -780,6 +780,9 @@ public final class AntarchyFabricMisc {
public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.elythia.GiantLilyPadPatchFeature> GIANT_LILY_PAD_PATCH = FEATURES.register("giant_lily_pad_patch", public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.elythia.GiantLilyPadPatchFeature> GIANT_LILY_PAD_PATCH = FEATURES.register("giant_lily_pad_patch",
() -> new com.craisinlord.antarchy.content.worldgen.elythia.GiantLilyPadPatchFeature(NoneFeatureConfiguration.CODEC)); () -> new com.craisinlord.antarchy.content.worldgen.elythia.GiantLilyPadPatchFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.elythia.GiantLilyPadPatchFeature> GIANT_LILY_PAD_PATCH_PEACH_FOREST = FEATURES.register("giant_lily_pad_patch_peach_forest",
() -> new com.craisinlord.antarchy.content.worldgen.elythia.GiantLilyPadPatchFeature(NoneFeatureConfiguration.CODEC, 0.12F));
public static final DeferredHolder<Feature<?>, LumenStreamFeature> LUMEN_STREAM = FEATURES.register("lumen_streams", public static final DeferredHolder<Feature<?>, LumenStreamFeature> LUMEN_STREAM = FEATURES.register("lumen_streams",
() -> new LumenStreamFeature(NoneFeatureConfiguration.CODEC)); () -> new LumenStreamFeature(NoneFeatureConfiguration.CODEC));
@@ -841,6 +844,8 @@ public final class AntarchyFabricMisc {
public static final DeferredHolder<Feature<?>, MoltingVinesFeature> MOLTING_VINES = FEATURES.register("molting_vines", public static final DeferredHolder<Feature<?>, MoltingVinesFeature> MOLTING_VINES = FEATURES.register("molting_vines",
() -> new MoltingVinesFeature(NoneFeatureConfiguration.CODEC)); () -> new MoltingVinesFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.cavaryn.GroundMoltingVinesFeature> GROUND_MOLTING_VINES = FEATURES.register("ground_molting_vines",
() -> new com.craisinlord.antarchy.content.worldgen.cavaryn.GroundMoltingVinesFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.cavaryn.JumpyBugEggCeilingFeature> JUMPY_BUG_EGG_CEILING = FEATURES.register("jumpy_bug_egg_ceiling", public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.cavaryn.JumpyBugEggCeilingFeature> JUMPY_BUG_EGG_CEILING = FEATURES.register("jumpy_bug_egg_ceiling",
() -> new com.craisinlord.antarchy.content.worldgen.cavaryn.JumpyBugEggCeilingFeature(NoneFeatureConfiguration.CODEC)); () -> new com.craisinlord.antarchy.content.worldgen.cavaryn.JumpyBugEggCeilingFeature(NoneFeatureConfiguration.CODEC));
@@ -39,13 +39,15 @@ public final class StinkySoundHandler {
return; return;
} }
mc.level.playSound( mc.level.playLocalSound(
null, mc.player.getX(),
mc.player.blockPosition(), mc.player.getY(),
mc.player.getZ(),
AntarchySoundEvents.STINKY_FLY.get(), AntarchySoundEvents.STINKY_FLY.get(),
SoundSource.AMBIENT, SoundSource.AMBIENT,
0.14F + mc.level.random.nextFloat() * 0.06F, 0.14F + mc.level.random.nextFloat() * 0.06F,
0.92F + mc.level.random.nextFloat() * 0.16F 0.92F + mc.level.random.nextFloat() * 0.16F,
false
); );
nextSoundTick = MIN_INTERVAL + mc.level.random.nextInt(MAX_INTERVAL - MIN_INTERVAL + 1); nextSoundTick = MIN_INTERVAL + mc.level.random.nextInt(MAX_INTERVAL - MIN_INTERVAL + 1);
} }
@@ -248,6 +248,8 @@ public final class AntarchyNeoforgeBlocks {
)); ));
public static final DeferredBlock<Block> MYRMITE = BLOCKS.register("myrmite", public static final DeferredBlock<Block> MYRMITE = BLOCKS.register("myrmite",
() -> new Block(nyxiteProperties())); () -> new Block(nyxiteProperties()));
public static final DeferredBlock<Block> MYRMITE_COAL_ORE = BLOCKS.register("myrmite_coal_ore",
() -> createOre(Blocks.COAL_ORE, 0, 2));
public static final DeferredBlock<Block> BROODSTONE = BLOCKS.register("broodstone", public static final DeferredBlock<Block> BROODSTONE = BLOCKS.register("broodstone",
() -> new Block(broodstoneProperties())); () -> new Block(broodstoneProperties()));
public static final DeferredBlock<Block> POLISHED_BROODSTONE = BLOCKS.register("polished_broodstone", public static final DeferredBlock<Block> POLISHED_BROODSTONE = BLOCKS.register("polished_broodstone",
@@ -271,6 +271,10 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.accept(AntarchyNeoforgeItems.MOSSY_SHELLSTONE_BRICK_SLAB_ITEM.get()); event.accept(AntarchyNeoforgeItems.MOSSY_SHELLSTONE_BRICK_SLAB_ITEM.get());
event.accept(AntarchyNeoforgeItems.MOSSY_SHELLSTONE_BRICK_WALL_ITEM.get()); event.accept(AntarchyNeoforgeItems.MOSSY_SHELLSTONE_BRICK_WALL_ITEM.get());
event.accept(AntarchyNeoforgeItems.CRACKED_SHELLSTONE_BRICKS_ITEM.get()); event.accept(AntarchyNeoforgeItems.CRACKED_SHELLSTONE_BRICKS_ITEM.get());
event.accept(AntarchyNeoforgeItems.BLUSH_MOSS_BLOCK_ITEM.get());
event.accept(AntarchyNeoforgeItems.BLUSH_MOSS_CARPET_ITEM.get());
event.accept(AntarchyNeoforgeItems.LUMEN_FROGLIGHT_ITEM.get());
event.accept(AntarchyNeoforgeItems.ROSEATE_FROGLIGHT_ITEM.get());
event.accept(AntarchyNeoforgeItems.NYXITE_ITEM.get()); event.accept(AntarchyNeoforgeItems.NYXITE_ITEM.get());
event.accept(AntarchyNeoforgeItems.NYXITE_STAIRS_ITEM.get()); event.accept(AntarchyNeoforgeItems.NYXITE_STAIRS_ITEM.get());
event.accept(AntarchyNeoforgeItems.NYXITE_SLAB_ITEM.get()); event.accept(AntarchyNeoforgeItems.NYXITE_SLAB_ITEM.get());
@@ -292,13 +296,9 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.accept(AntarchyNeoforgeItems.ANTIMETAL_SCAFFOLDING_ITEM.get()); event.accept(AntarchyNeoforgeItems.ANTIMETAL_SCAFFOLDING_ITEM.get());
event.accept(AntarchyNeoforgeItems.UMBRAL_MOSS_BLOCK_ITEM.get()); event.accept(AntarchyNeoforgeItems.UMBRAL_MOSS_BLOCK_ITEM.get());
event.accept(AntarchyNeoforgeItems.UMBRAL_MOSS_CARPET_ITEM.get()); event.accept(AntarchyNeoforgeItems.UMBRAL_MOSS_CARPET_ITEM.get());
event.accept(AntarchyNeoforgeItems.BLUSH_MOSS_BLOCK_ITEM.get());
event.accept(AntarchyNeoforgeItems.BLUSH_MOSS_CARPET_ITEM.get());
event.accept(AntarchyNeoforgeItems.DREAM_TORCH_ITEM.get()); event.accept(AntarchyNeoforgeItems.DREAM_TORCH_ITEM.get());
event.accept(AntarchyNeoforgeItems.DREAM_LANTERN_ITEM.get()); event.accept(AntarchyNeoforgeItems.DREAM_LANTERN_ITEM.get());
event.accept(AntarchyNeoforgeItems.DREAM_CAMPFIRE_ITEM.get()); event.accept(AntarchyNeoforgeItems.DREAM_CAMPFIRE_ITEM.get());
event.accept(AntarchyNeoforgeItems.LUMEN_FROGLIGHT_ITEM.get());
event.accept(AntarchyNeoforgeItems.ROSEATE_FROGLIGHT_ITEM.get());
event.accept(AntarchyNeoforgeItems.DREAM_SAND_ITEM.get()); event.accept(AntarchyNeoforgeItems.DREAM_SAND_ITEM.get());
event.accept(AntarchyNeoforgeItems.DREAM_SANDSTONE_ITEM.get()); event.accept(AntarchyNeoforgeItems.DREAM_SANDSTONE_ITEM.get());
event.accept(AntarchyNeoforgeItems.CHISELED_DREAM_SANDSTONE_ITEM.get()); event.accept(AntarchyNeoforgeItems.CHISELED_DREAM_SANDSTONE_ITEM.get());
@@ -330,6 +330,7 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.accept(AntarchyNeoforgeItems.BROODSTONE_BRICK_STAIRS_ITEM.get()); event.accept(AntarchyNeoforgeItems.BROODSTONE_BRICK_STAIRS_ITEM.get());
event.accept(AntarchyNeoforgeItems.BROODSTONE_BRICK_SLAB_ITEM.get()); event.accept(AntarchyNeoforgeItems.BROODSTONE_BRICK_SLAB_ITEM.get());
event.accept(AntarchyNeoforgeItems.BROODSTONE_BRICK_WALL_ITEM.get()); event.accept(AntarchyNeoforgeItems.BROODSTONE_BRICK_WALL_ITEM.get());
event.accept(AntarchyNeoforgeItems.MYRMITE_COAL_ORE_ITEM.get());
event.accept(AntarchyNeoforgeItems.BROODSTONE_URANIUM_ORE_ITEM.get()); event.accept(AntarchyNeoforgeItems.BROODSTONE_URANIUM_ORE_ITEM.get());
event.accept(AntarchyNeoforgeItems.BROODSTONE_TITANIUM_ORE_ITEM.get()); event.accept(AntarchyNeoforgeItems.BROODSTONE_TITANIUM_ORE_ITEM.get());
event.accept(AntarchyNeoforgeItems.BILE_VEIN_ITEM.get()); event.accept(AntarchyNeoforgeItems.BILE_VEIN_ITEM.get());
@@ -152,7 +152,7 @@ public final class AntarchyNeoforgeEntites {
.clientTrackingRange(8) .clientTrackingRange(8)
.build("bed_bug")); .build("bed_bug"));
public static final DeferredHolder<EntityType<?>, EntityType<StinkBugEntity>> STINK_BUG = ENTITY_TYPES.register("stink_bug", public static final DeferredHolder<EntityType<?>, EntityType<StinkBugEntity>> STINK_BUG = ENTITY_TYPES.register("stink_bug",
() -> EntityType.Builder.of(StinkBugEntity::new, MobCategory.CREATURE) () -> EntityType.Builder.of(StinkBugEntity::new, MobCategory.AMBIENT)
.sized(0.35F, 0.2F) .sized(0.35F, 0.2F)
.clientTrackingRange(8) .clientTrackingRange(8)
.build("stink_bug")); .build("stink_bug"));
@@ -288,6 +288,7 @@ public final class AntarchyNeoforgeItems {
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_BRICK_STAIRS); public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_BRICK_STAIRS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_BRICK_SLAB); public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_BRICK_SLAB);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_BRICK_WALL); public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_BRICK_WALL);
public static final DeferredItem<net.minecraft.world.item.BlockItem> MYRMITE_COAL_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.MYRMITE_COAL_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_URANIUM_ORE); public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_URANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_TITANIUM_ORE); public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_TITANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> POLISHED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POLISHED_NYXITE); public static final DeferredItem<net.minecraft.world.item.BlockItem> POLISHED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POLISHED_NYXITE);
@@ -272,6 +272,8 @@ public final class AntarchyNeoforgeMisc {
() -> new LumenLilyPadFeature(NoneFeatureConfiguration.CODEC)); () -> new LumenLilyPadFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.elythia.GiantLilyPadPatchFeature> GIANT_LILY_PAD_PATCH = FEATURES.register("giant_lily_pad_patch", public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.elythia.GiantLilyPadPatchFeature> GIANT_LILY_PAD_PATCH = FEATURES.register("giant_lily_pad_patch",
() -> new com.craisinlord.antarchy.content.worldgen.elythia.GiantLilyPadPatchFeature(NoneFeatureConfiguration.CODEC)); () -> new com.craisinlord.antarchy.content.worldgen.elythia.GiantLilyPadPatchFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.elythia.GiantLilyPadPatchFeature> GIANT_LILY_PAD_PATCH_PEACH_FOREST = FEATURES.register("giant_lily_pad_patch_peach_forest",
() -> new com.craisinlord.antarchy.content.worldgen.elythia.GiantLilyPadPatchFeature(NoneFeatureConfiguration.CODEC, 0.12F));
public static final DeferredHolder<Feature<?>, LumenStreamFeature> LUMEN_STREAM = FEATURES.register("lumen_streams", public static final DeferredHolder<Feature<?>, LumenStreamFeature> LUMEN_STREAM = FEATURES.register("lumen_streams",
() -> new LumenStreamFeature(NoneFeatureConfiguration.CODEC)); () -> new LumenStreamFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, LumenSpireFeature> LUMEN_SPIRE = FEATURES.register("lumen_spires", public static final DeferredHolder<Feature<?>, LumenSpireFeature> LUMEN_SPIRE = FEATURES.register("lumen_spires",
@@ -312,6 +314,8 @@ public final class AntarchyNeoforgeMisc {
public static final DeferredHolder<Feature<?>, MoltingVinesFeature> MOLTING_VINES = FEATURES.register("molting_vines", public static final DeferredHolder<Feature<?>, MoltingVinesFeature> MOLTING_VINES = FEATURES.register("molting_vines",
() -> new MoltingVinesFeature(NoneFeatureConfiguration.CODEC)); () -> new MoltingVinesFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.cavaryn.GroundMoltingVinesFeature> GROUND_MOLTING_VINES = FEATURES.register("ground_molting_vines",
() -> new com.craisinlord.antarchy.content.worldgen.cavaryn.GroundMoltingVinesFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.cavaryn.JumpyBugEggCeilingFeature> JUMPY_BUG_EGG_CEILING = FEATURES.register("jumpy_bug_egg_ceiling", public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.cavaryn.JumpyBugEggCeilingFeature> JUMPY_BUG_EGG_CEILING = FEATURES.register("jumpy_bug_egg_ceiling",
() -> new com.craisinlord.antarchy.content.worldgen.cavaryn.JumpyBugEggCeilingFeature(NoneFeatureConfiguration.CODEC)); () -> new com.craisinlord.antarchy.content.worldgen.cavaryn.JumpyBugEggCeilingFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.cavaryn.RollyCavesGiantCavernFeature> ROLLY_CAVES_GIANT_CAVERN = FEATURES.register("rolly_caves_giant_cavern", public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.cavaryn.RollyCavesGiantCavernFeature> ROLLY_CAVES_GIANT_CAVERN = FEATURES.register("rolly_caves_giant_cavern",