diff --git a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java b/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java index b5e6464c..8d085b67 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/CreativeTabOrder.java @@ -14,7 +14,6 @@ public final class CreativeTabOrder { public static int group(Item item) { String path = BuiltInRegistries.ITEM.getKey(item).getPath(); return switch (path) { - case "glimmer_bottle" -> -1; case "ouranwood_log", "ouranwood_wood", "mossy_ouranwood_log", "mossy_ouranwood_wood", "stripped_ouranwood_log", "stripped_ouranwood_wood", "duplicator_log", "ouranwood_planks", "ouranwood_stairs", "ouranwood_slab", @@ -60,7 +59,7 @@ public final class CreativeTabOrder { "myrmite", "broodstone", "chiten_block", "chiten_spike", "amber_moss_block", "amber_moss_carpet" -> 8; case "ouranwood_leaves", "peach_leaves" -> 9; case "duplicator_sapling", "ouranwood_acorn", "peach_sapling", "corn_seeds" -> 10; - case "orange_milkweed", "pink_milkweed", "hushweed", "amber_lichen", "creepvine", + case "orange_milkweed", "pink_milkweed", "camellia", "spider_lily", "hushweed", "amber_lichen", "creepvine", "triffid_goo_block", "cloud_block", "wasp_nest", "red_ant_nest", "brown_ant_nest", "rainbow_ant_nest", "termite_nest" -> 11; case "dream_torch", "dream_lantern", "dream_campfire", "dream_fire", "dream_fire_ceiling", @@ -85,7 +84,7 @@ public final class CreativeTabOrder { "ultimate_helmet", "ultimate_chestplate", "ultimate_leggings", "ultimate_boots" -> 19; case "ultimate_bow", "ultimate_crossbow" -> 20; - case "cloud_shark_fin_soup", "mud_pie", "rainbow_sugar", + case "cloud_shark_fin_soup", "mud_pie", "peach_pie", "cornbread", "popcorn", "rainbow_sugar", "blood_crystal_apple", "spirit_apple", "peach", "raw_corndog", "cooked_corndog", "raw_venison", "cooked_venison" -> 21; case "blood_crystal_shard", "cloud_shark_fin", "basilisk_fang", "kraken_tooth", @@ -95,7 +94,7 @@ public final class CreativeTabOrder { "mantis_claw", "jumpy_bug_leg", "brutalfly_wing", "cornea_ear", "primordial_scute", "triffid_goo", "vortex_eye", "king_scale", "queen_scale", "chiten", "stink_bug", "corn", "high_fructose_corn_syrup" -> 22; - case "reverie_bottle", "root_beer" -> 24; + case "reverie_bottle", "glimmer_bottle", "root_beer" -> 24; case "easter_bunny_spawn_egg", "flying_squirrel_spawn_egg", "caterpillar_spawn_egg", "butterfly_spawn_egg", "reverie_spawn_egg", "brutalfly_spawn_egg", "red_ant_spawn_egg", "brown_ant_spawn_egg", "rainbow_ant_spawn_egg", "termite_spawn_egg", @@ -160,16 +159,18 @@ public final class CreativeTabOrder { case "corn_seeds" -> 3; case "orange_milkweed" -> 0; case "pink_milkweed" -> 1; - case "hushweed" -> 2; - case "amber_lichen" -> 3; - case "creepvine" -> 4; - case "triffid_goo_block" -> 5; - case "cloud_block" -> 6; - case "wasp_nest" -> 7; - case "red_ant_nest" -> 8; - case "brown_ant_nest" -> 9; - case "rainbow_ant_nest" -> 10; - case "termite_nest" -> 11; + case "camellia" -> 2; + case "spider_lily" -> 3; + case "hushweed" -> 4; + case "amber_lichen" -> 5; + case "creepvine" -> 6; + case "triffid_goo_block" -> 7; + case "cloud_block" -> 8; + case "wasp_nest" -> 9; + case "red_ant_nest" -> 10; + case "brown_ant_nest" -> 11; + case "rainbow_ant_nest" -> 12; + case "termite_nest" -> 13; case "blood_crystal_block" -> 0; case "small_blood_crystal_bud" -> 1; case "medium_blood_crystal_bud" -> 2; @@ -274,15 +275,22 @@ public final class CreativeTabOrder { case "ultimate_boots" -> 15; case "ultimate_bow" -> 0; case "ultimate_crossbow" -> 1; - case "blood_crystal_apple" -> 0; - case "spirit_apple" -> 1; - case "peach" -> 2; - case "raw_corndog" -> 3; - case "cooked_corndog" -> 4; - case "raw_venison" -> 5; - case "cooked_venison" -> 6; + case "cloud_shark_fin_soup" -> 0; + case "mud_pie" -> 1; + case "peach_pie" -> 2; + case "cornbread" -> 3; + case "popcorn" -> 4; + case "rainbow_sugar" -> 5; + case "raw_corndog" -> 6; + case "cooked_corndog" -> 7; + case "raw_venison" -> 8; + case "cooked_venison" -> 9; + case "blood_crystal_apple" -> 10; + case "spirit_apple" -> 11; + case "peach" -> 12; case "reverie_bottle" -> 0; - case "root_beer" -> 1; + case "glimmer_bottle" -> 1; + case "root_beer" -> 2; case "blood_crystal_shard" -> 0; case "cloud_shark_fin" -> 1; case "basilisk_fang" -> 2; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/CamelliaBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/CamelliaBlock.java new file mode 100644 index 00000000..5ba3ed23 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/CamelliaBlock.java @@ -0,0 +1,22 @@ +package com.craisinlord.antarchy.content.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; + +public class CamelliaBlock extends MilkweedBlock { + public CamelliaBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) { + BlockPos dropPos = state.getValue(BlockStateProperties.DOUBLE_BLOCK_HALF) == DoubleBlockHalf.UPPER ? pos.below() : pos; + popResource(level, dropPos, new ItemStack(this.asItem())); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/block/SpiderLilyBlock.java b/common/src/main/java/com/craisinlord/antarchy/content/block/SpiderLilyBlock.java new file mode 100644 index 00000000..3378d48f --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/block/SpiderLilyBlock.java @@ -0,0 +1,30 @@ +package com.craisinlord.antarchy.content.block; + +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.BushBlock; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class SpiderLilyBlock extends BushBlock { + public static final MapCodec CODEC = Block.simpleCodec(SpiderLilyBlock::new); + private static final VoxelShape SHAPE = Block.box(5.0D, 0.0D, 5.0D, 11.0D, 10.0D, 11.0D); + + public SpiderLilyBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public MapCodec codec() { + return CODEC; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/particle/PeachLeavesParticle.java b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/PeachLeavesParticle.java index 3a578435..fc1b60e3 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/client/particle/PeachLeavesParticle.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/particle/PeachLeavesParticle.java @@ -9,20 +9,45 @@ import net.minecraft.client.particle.TextureSheetParticle; import net.minecraft.core.particles.SimpleParticleType; public final class PeachLeavesParticle extends TextureSheetParticle { + private static final float ACCELERATION_SCALE = 0.0025F; + private static final int INITIAL_LIFETIME = 300; + private static final float WIND_BIG = 2.0F; + private static final boolean SWIRL = false; + private static final boolean FLOW_AWAY = true; + private static final float GRAVITY_SCALE = 1.0F; + private static final float INITIAL_Y_SPEED = 0.0F; + + private float rotSpeed; + private final float spinAcceleration; + private final double xaFlowScale; + private final double zaFlowScale; + private final double swirlPeriod; + private final boolean swirl; + private final boolean flowAway; private final SpriteSet sprites; - private final float gravity; private PeachLeavesParticle(ClientLevel level, double x, double y, double z, SpriteSet sprites) { super(level, x, y, z, 0.0D, 0.0D, 0.0D); this.sprites = sprites; - this.gravity = 0.02F + this.random.nextFloat() * 0.01F; - this.lifetime = 28 + this.random.nextInt(26); - this.quadSize = 0.14F + this.random.nextFloat() * 0.05F; - this.xd = (this.random.nextDouble() - 0.5D) * 0.04D; - this.yd = -0.015D - this.random.nextDouble() * 0.02D; - this.zd = (this.random.nextDouble() - 0.5D) * 0.04D; - this.hasPhysics = true; - this.setSpriteFromAge(sprites); + this.setSprite(sprites.get(level.random)); + this.rotSpeed = (float) Math.toRadians(this.random.nextBoolean() ? -30.0D : 30.0D); + this.spinAcceleration = (float) Math.toRadians(this.random.nextBoolean() ? -5.0D : 5.0D); + this.swirl = SWIRL; + this.flowAway = FLOW_AWAY; + this.lifetime = INITIAL_LIFETIME; + this.gravity = GRAVITY_SCALE * 1.2F * ACCELERATION_SCALE; + + float size = this.random.nextBoolean() ? 0.05F : 0.075F; + this.quadSize = size; + this.setSize(size, size); + this.friction = 1.0F; + this.yd = -INITIAL_Y_SPEED; + + float randomAngle = this.random.nextFloat(); + double flowAngle = Math.toRadians(randomAngle * 60.0F); + this.xaFlowScale = Math.cos(flowAngle) * WIND_BIG; + this.zaFlowScale = Math.sin(flowAngle) * WIND_BIG; + this.swirlPeriod = Math.toRadians(1000.0F + randomAngle * 3000.0F); } @Override @@ -31,27 +56,50 @@ public final class PeachLeavesParticle extends TextureSheetParticle { this.yo = this.y; this.zo = this.z; - if (this.age++ >= this.lifetime) { + if (this.lifetime-- <= 0) { this.remove(); return; } - double sway = Math.sin((this.age + this.x) * 0.22D) * 0.0035D; - this.xd += sway; - this.zd -= sway; - this.yd -= this.gravity * 0.015D; + float ageProgress = Math.min((INITIAL_LIFETIME - this.lifetime) / (float) INITIAL_LIFETIME, 1.0F); + double windX = 0.0D; + double windZ = 0.0D; - this.xd *= 0.91D; - this.yd *= 0.92D; - this.zd *= 0.91D; + if (this.flowAway) { + double flowScale = Math.pow(ageProgress, 1.25D); + windX += this.xaFlowScale * flowScale; + windZ += this.zaFlowScale * flowScale; + } + + if (this.swirl) { + double swirlScale = ageProgress * ageProgress; + windX += swirlScale * Math.cos(swirlScale * this.swirlPeriod) * WIND_BIG; + windZ += swirlScale * Math.sin(swirlScale * this.swirlPeriod) * WIND_BIG; + } + + this.xd += windX * ACCELERATION_SCALE; + this.zd += windZ * ACCELERATION_SCALE; + this.yd -= this.gravity; + + this.rotSpeed += this.spinAcceleration / 20.0F; + this.oRoll = this.roll; + this.roll += this.rotSpeed / 20.0F; this.move(this.xd, this.yd, this.zd); - this.setSpriteFromAge(this.sprites); + if (this.onGround || this.lifetime < INITIAL_LIFETIME - 1 && this.xd == 0.0D && this.zd == 0.0D) { + this.remove(); + return; + } + + this.xd *= this.friction; + this.yd *= this.friction; + this.zd *= this.friction; + this.setSprite(this.sprites.get(INITIAL_LIFETIME - this.lifetime, INITIAL_LIFETIME)); } @Override public ParticleRenderType getRenderType() { - return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; + return ParticleRenderType.PARTICLE_SHEET_OPAQUE; } public static final class Provider implements ParticleProvider { diff --git a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/glimmer/GlimmerRenderer.java b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/glimmer/GlimmerRenderer.java index f32df558..3c2dff29 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/glimmer/GlimmerRenderer.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/client/renderer/glimmer/GlimmerRenderer.java @@ -45,14 +45,23 @@ public class GlimmerRenderer extends GeoEntityRenderer { private void renderVanillaModel(EntityModel model, GlimmerEntity entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { poseStack.pushPose(); - poseStack.mulPose(Axis.YP.rotationDegrees(180.0F - entityYaw)); + float growth = entity.getGrowthScale(); + poseStack.scale(growth, growth, growth); + + // Compute body yaw directly from the entity's own tracked fields rather than trusting + // the ambient entityYaw parameter, so the body pose and the head-offset math below are + // always self-consistent (this is what caused the head to look "detached" from the body). + float bodyYaw = Mth.rotLerp(partialTick, entity.yBodyRotO, entity.yBodyRot); + poseStack.mulPose(Axis.YP.rotationDegrees(180.0F - bodyYaw)); poseStack.scale(-1.0F, -1.0F, 1.0F); poseStack.translate(0.0F, -1.501F, 0.0F); float limbSwing = entity.walkAnimation.position(partialTick); float limbSwingAmount = entity.walkAnimation.speed(partialTick); float ageInTicks = entity.tickCount + partialTick; - float netHeadYaw = Mth.rotLerp(partialTick, entity.yHeadRotO, entity.yHeadRot) - entityYaw; + float rawHeadYaw = Mth.rotLerp(partialTick, entity.yHeadRotO, entity.yHeadRot) - bodyYaw; + float maxHeadYaw = entity.getMaxHeadYRot(); + float netHeadYaw = Mth.clamp(Mth.wrapDegrees(rawHeadYaw), -maxHeadYaw, maxHeadYaw); float headPitch = Mth.lerp(partialTick, entity.xRotO, entity.getXRot()); model.setupAnim(entity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerAntBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerAntBehavior.java index 85ea61a6..20ae6187 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerAntBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerAntBehavior.java @@ -23,7 +23,7 @@ import net.minecraft.world.entity.player.Player; public class GlimmerAntBehavior implements GlimmerVariantBehavior { private static final ResourceLocation REACH_BOOST_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "glimmer_ant_reach_boost"); - private static final double REACH_BOOST_AMOUNT = 0.5D; + private static final double REACH_BOOST_AMOUNT = 1.5D; private static final float LARGE_ENEMY_MIN_HEALTH = 40.0F; private static final int ABILITY_COOLDOWN_TICKS = 20 * 120; private static final int STRENGTH_BURST_DURATION = 20 * 12; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerAppleCowBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerAppleCowBehavior.java index 0c8ec870..ccdf4d96 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerAppleCowBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerAppleCowBehavior.java @@ -22,7 +22,7 @@ import net.minecraft.world.item.Items; import org.jetbrains.annotations.Nullable; public class GlimmerAppleCowBehavior implements GlimmerVariantBehavior { - private static final int SHEAR_REGROW_TICKS = 20 * 60 * 3; + private static final int SHEAR_REGROW_TICKS = 20 * 60 * 2; private static final float EXHAUSTION_REDUCTION = 0.25F; private static final int LOW_FOOD_THRESHOLD = 16; private static final int ABILITY_COOLDOWN_TICKS = 20 * 120; @@ -87,7 +87,7 @@ public class GlimmerAppleCowBehavior implements GlimmerVariantBehavior { @Override @Nullable public InteractionResult onInteract(GlimmerEntity entity, Player player, ItemStack stack, InteractionHand hand) { - if (entity.isTame() || entity.isShearCooldownActive() || !stack.is(Items.SHEARS)) { + if ((entity.isTame() && !entity.isOwnedBy(player)) || entity.isShearCooldownActive() || !stack.is(Items.SHEARS)) { return null; } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerElkaBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerElkaBehavior.java index 60292e1b..e573d0f4 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerElkaBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerElkaBehavior.java @@ -29,6 +29,7 @@ public class GlimmerElkaBehavior implements GlimmerVariantBehavior { private static final int CRY_ANIM_TICKS = 40; private static final double SHOCKWAVE_RADIUS = 6.0D; private static final double SHOCKWAVE_KNOCKBACK = 1.3D; + private static final float SHOCKWAVE_DAMAGE = 8.0F; private static ResourceLocation rl(String path) { return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path); @@ -136,6 +137,9 @@ public class GlimmerElkaBehavior implements GlimmerVariantBehavior { } if (nearby instanceof LivingEntity living && (nearby instanceof Enemy || living.getLastHurtByMob() == owner)) { + if (nearby instanceof Enemy) { + living.hurt(owner.damageSources().mobAttack(entity), SHOCKWAVE_DAMAGE); + } Vec3 away = living.position().subtract(owner.position()); double horizontalDistance = Math.max(0.1D, away.horizontalDistance()); living.knockback(SHOCKWAVE_KNOCKBACK, -away.x / horizontalDistance, -away.z / horizontalDistance); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerEntity.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerEntity.java index f907feef..2afb0a49 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerEntity.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerEntity.java @@ -54,6 +54,26 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { Registries.BIOME, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "glimmering_pools") ); + private static final ResourceKey OURANWOOD_FOREST = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "ouranwood_forest") + ); + private static final ResourceKey SPARSE_OURANWOOD_FOREST = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "sparse_ouranwood_forest") + ); + private static final ResourceKey FUNGAL_OURANWOOD_FOREST = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "fungal_ouranwood_forest") + ); + private static final ResourceKey ELYTHIA_MEADOW = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "elythia_meadow") + ); + private static final ResourceKey PEACH_FOREST = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "peach_forest") + ); private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk"); @@ -164,6 +184,10 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { this.entityData.set(ABILITY_COOLDOWN, this.getVariant().getBehavior().abilityCooldownTicks()); } + public void setAbilityCooldown(int ticks) { + this.entityData.set(ABILITY_COOLDOWN, Math.max(0, ticks)); + } + public float getAbilityCooldownFraction(float partialTick) { int max = this.getVariant().getBehavior().abilityCooldownTicks(); if (max <= 0) { @@ -351,7 +375,7 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { return InteractionResult.CONSUME; } - ItemStack filled = com.craisinlord.antarchy.content.item.GlimmerBottleItem.create(this.getVariant()); + ItemStack filled = com.craisinlord.antarchy.content.item.GlimmerBottleItem.create(this.getVariant(), this.entityData.get(ABILITY_COOLDOWN)); ItemStack result = net.minecraft.world.item.ItemUtils.createFilledResult(stack, player, filled); player.setItemInHand(hand, result); this.playSound(net.minecraft.sounds.SoundEvents.BOTTLE_FILL, 1.0F, 1.0F); @@ -385,18 +409,48 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { }; return poolVariants[this.random.nextInt(poolVariants.length)]; } + if (biome.is(OURANWOOD_FOREST) || biome.is(SPARSE_OURANWOOD_FOREST) || biome.is(FUNGAL_OURANWOOD_FOREST)) { + GlimmerVariant[] forestVariants = new GlimmerVariant[] { + GlimmerVariant.FROG, + GlimmerVariant.OURANWOOD_DEER + }; + return forestVariants[this.random.nextInt(forestVariants.length)]; + } + if (biome.is(ELYTHIA_MEADOW)) { + return GlimmerVariant.APPLE_COW; + } + if (biome.is(PEACH_FOREST)) { + return GlimmerVariant.ELKA; + } return GlimmerVariant.random(this.random); } + /** + * Wild Glimmers are common in Glimmering Pools, but only rarely (and only at night) + * turn up in Ouranwood Forest, the Elythia Meadow, and the Peach Forest. + */ + public static boolean checkGlimmerSpawnRules(EntityType type, ServerLevelAccessor level, + MobSpawnType spawnType, BlockPos pos, net.minecraft.util.RandomSource random) { + if (!net.minecraft.world.entity.animal.Animal.checkAnimalSpawnRules(type, level, spawnType, pos, random)) { + return false; + } + Holder biome = level.getBiome(pos); + if (biome.is(GLIMMERING_POOLS)) { + return true; + } + return level.getLevel().isNight(); + } + @Override public void tick() { super.tick(); + this.clampBodyToHeadRotation(); GlimmerParticles.tickAmbient(this, this.getDeltaMovement().horizontalDistanceSqr() > 0.01D); if (!this.level().isClientSide) { int fadeTicks = this.entityData.get(FADE_TICKS); - if (this.isTame()) { + if (this.isTame() || this.level().getBiome(this.blockPosition()).is(GLIMMERING_POOLS)) { if (fadeTicks > 0) { this.entityData.set(FADE_TICKS, 0); } @@ -473,6 +527,20 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity { } } + /** + * With {@code noPhysics} true, Glimmers never travel through vanilla's normal movement path, + * so the usual body-follows-head catch-up never runs and a stationary Glimmer looking around + * (LookAtPlayerGoal/RandomLookAroundGoal only move the head) ends up with its head rendered + * far past the model's body — this keeps the body snapped within {@link #getMaxHeadYRot()} of it. + */ + private void clampBodyToHeadRotation() { + float maxYaw = this.getMaxHeadYRot(); + float delta = Mth.wrapDegrees(this.yHeadRot - this.yBodyRot); + if (Math.abs(delta) > maxYaw) { + this.yBodyRot = Mth.wrapDegrees(this.yHeadRot - Math.copySign(maxYaw, delta)); + } + } + private void applyGroundSupport() { BlockPos below = BlockPos.containing(this.getX(), this.getY() - 0.05D, this.getZ()); VoxelShape shape = this.level().getBlockState(below).getCollisionShape(this.level(), below); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerFrogBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerFrogBehavior.java index b563d363..257cd340 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerFrogBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerFrogBehavior.java @@ -28,6 +28,11 @@ import net.minecraft.world.entity.monster.Enemy; import net.minecraft.world.entity.monster.MagmaCube; import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; public class GlimmerFrogBehavior implements GlimmerVariantBehavior { private static final int SMALL_SLIME_SIZE = 1; @@ -40,6 +45,10 @@ public class GlimmerFrogBehavior implements GlimmerVariantBehavior { private static final float GROWTH_PER_EAT_MAX = 0.6F; private static final float GROWTH_MAX_SCALE = 2.2F; private static final double GROWTH_DECAY_PER_TICK = 0.0006D; + private static final int TONGUE_ANIM_TICKS = 10; + private static final int TONGUE_GRAB_TICK = 6; + + private final Map pendingEats = new HashMap<>(); private static ResourceLocation rl(String path) { return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path); @@ -123,9 +132,41 @@ public class GlimmerFrogBehavior implements GlimmerVariantBehavior { @Override public void tickAbilityCheck(GlimmerEntity entity, Player owner) { + if (this.pendingEats.containsKey(entity.getUUID())) { + return; + } LivingEntity target = findEdibleTarget(entity, owner); if (target != null) { - this.eatTarget(entity, owner, target); + this.startEat(entity, owner, target); + } + } + + @Override + public void customTick(GlimmerEntity entity) { + PendingEat pending = this.pendingEats.get(entity.getUUID()); + if (pending == null) { + return; + } + + if (!pending.target.isAlive() || entity.distanceToSqr(pending.target) > EAT_RANGE * EAT_RANGE * 4.0D) { + this.pendingEats.remove(entity.getUUID()); + return; + } + + pending.ticksRemaining--; + if (pending.ticksRemaining == TONGUE_ANIM_TICKS - TONGUE_GRAB_TICK) { + // The tongue "catches" the target partway through the animation and reels it in. + entity.playSound(SoundEvents.FROG_TONGUE, 1.0F, 1.0F); + } + if (pending.ticksRemaining <= TONGUE_ANIM_TICKS - TONGUE_GRAB_TICK) { + Vec3 mouth = entity.position().add(0.0D, entity.getBbHeight() * 0.5D, 0.0D); + Vec3 pulled = pending.target.position().lerp(mouth, 0.55D); + pending.target.teleportTo(pulled.x, pulled.y, pulled.z); + } + + if (pending.ticksRemaining <= 0) { + this.pendingEats.remove(entity.getUUID()); + this.finishEat(entity, pending.owner, pending.target); } } @@ -157,16 +198,32 @@ public class GlimmerFrogBehavior implements GlimmerVariantBehavior { return target.getType().is(NO_EAT_TAG); } - private void eatTarget(GlimmerEntity entity, Player owner, LivingEntity target) { + private void startEat(GlimmerEntity entity, Player owner, LivingEntity target) { + PendingEat pending = new PendingEat(); + pending.target = target; + pending.owner = owner; + pending.ticksRemaining = TONGUE_ANIM_TICKS; + this.pendingEats.put(entity.getUUID(), pending); + + entity.playAbilityAnimation(TONGUE_ANIM_TICKS); + entity.playSound(SoundEvents.FROG_LONG_JUMP, 0.8F, 1.4F); + entity.startAbilityCooldown(); + } + + private void finishEat(GlimmerEntity entity, Player owner, LivingEntity target) { float growthAdd = Mth.clamp(target.getMaxHealth() / 40.0F, GROWTH_PER_EAT_MIN, GROWTH_PER_EAT_MAX); entity.setGrowthScale(Math.min(GROWTH_MAX_SCALE, entity.getGrowthScale() + growthAdd)); Component targetName = target.getDisplayName(); entity.playSound(SoundEvents.FROG_EAT, 1.2F, 0.9F); - target.teleportTo(entity.getX(), entity.getY() + entity.getBbHeight() * 0.5D, entity.getZ()); target.remove(Entity.RemovalReason.DISCARDED); this.sendAbilityMessage(owner, Component.translatable("entity.antarchy.glimmer.ability.frog", targetName)); - entity.startAbilityCooldown(); + } + + private static final class PendingEat { + LivingEntity target; + Player owner; + int ticksRemaining; } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerOuranwoodDeerBehavior.java b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerOuranwoodDeerBehavior.java index e607c230..c8310211 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerOuranwoodDeerBehavior.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/entity/glimmer/GlimmerOuranwoodDeerBehavior.java @@ -21,6 +21,13 @@ import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.Nullable; import software.bernie.geckolib.animation.RawAnimation; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + public class GlimmerOuranwoodDeerBehavior implements GlimmerVariantBehavior { private static final int PASSIVE_REFRESH_DURATION = 20 * 4; private static final int ABILITY_COOLDOWN_TICKS = 20 * 10; @@ -28,11 +35,15 @@ public class GlimmerOuranwoodDeerBehavior implements GlimmerVariantBehavior { private static final RawAnimation RUN_ANIM = RawAnimation.begin().thenLoop("run"); private static final double CHARGE_RANGE = 12.0D; private static final double CHARGE_CONE_DOT = 0.5D; - private static final double CHARGE_CORRIDOR_WIDTH = 1.75D; - private static final float CHARGE_DAMAGE = 9.0F; + private static final double CHARGE_HIT_RADIUS = 1.5D; + private static final double CHARGE_SPEED = 1.4D; + private static final int CHARGE_DURATION_TICKS = 14; + private static final float CHARGE_DAMAGE = 14.0F; private static final double CHARGE_KNOCKBACK = 1.6D; private static final int CHARGE_ANIM_TICKS = 45; + private final Map activeCharges = new HashMap<>(); + private static ResourceLocation rl(String path) { return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path); } @@ -143,33 +154,63 @@ public class GlimmerOuranwoodDeerBehavior implements GlimmerVariantBehavior { } if (bestTarget != null) { - this.performCharge(entity, owner, bestTarget); + this.startCharge(entity, owner, bestTarget); } } - private void performCharge(GlimmerEntity entity, Player owner, LivingEntity target) { + private void startCharge(GlimmerEntity entity, Player owner, LivingEntity target) { Vec3 from = entity.position(); Vec3 direction = target.position().subtract(from); double horizontalDistance = Math.max(1.0D, direction.horizontalDistance()); - double dirX = direction.x / horizontalDistance; - double dirZ = direction.z / horizontalDistance; - entity.setDeltaMovement(dirX * 1.4D, entity.getDeltaMovement().y, dirZ * 1.4D); + ChargeState state = new ChargeState(); + state.dirX = direction.x / horizontalDistance; + state.dirZ = direction.z / horizontalDistance; + state.ticksRemaining = CHARGE_DURATION_TICKS; + state.owner = owner; + this.activeCharges.put(entity.getUUID(), state); + entity.playAbilityAnimation(CHARGE_ANIM_TICKS); entity.playSound(SoundEvents.RAVAGER_ROAR, 1.0F, 1.3F); - - AABB corridor = new AABB(from, target.position()).inflate(CHARGE_CORRIDOR_WIDTH, 1.5D, CHARGE_CORRIDOR_WIDTH); - for (Entity candidate : owner.level().getEntities(entity, corridor)) { - if (!(candidate instanceof Enemy) || !(candidate instanceof LivingEntity living) || !living.isAlive()) { - continue; - } - living.hurt(owner.damageSources().mobAttack(entity), CHARGE_DAMAGE); - Vec3 away = living.position().subtract(from); - double awayDistance = Math.max(0.1D, away.horizontalDistance()); - living.knockback(CHARGE_KNOCKBACK, -away.x / awayDistance, -away.z / awayDistance); - } - this.sendAbilityMessage(owner, Component.translatable("entity.antarchy.glimmer.ability.deer")); entity.startAbilityCooldown(); } + + @Override + public void customTick(GlimmerEntity entity) { + ChargeState state = this.activeCharges.get(entity.getUUID()); + if (state == null) { + return; + } + + if (!entity.isAlive() || state.ticksRemaining <= 0) { + this.activeCharges.remove(entity.getUUID()); + return; + } + + state.ticksRemaining--; + entity.setDeltaMovement(state.dirX * CHARGE_SPEED, entity.getDeltaMovement().y, state.dirZ * CHARGE_SPEED); + + AABB hitBox = entity.getBoundingBox().inflate(CHARGE_HIT_RADIUS); + for (Entity candidate : entity.level().getEntities(entity, hitBox)) { + if (!(candidate instanceof Enemy) || !(candidate instanceof LivingEntity living) || !living.isAlive() + || state.alreadyHit.contains(candidate.getUUID())) { + continue; + } + + living.hurt(state.owner.damageSources().mobAttack(entity), CHARGE_DAMAGE); + Vec3 away = living.position().subtract(entity.position()); + double awayDistance = Math.max(0.1D, away.horizontalDistance()); + living.knockback(CHARGE_KNOCKBACK, -away.x / awayDistance, -away.z / awayDistance); + state.alreadyHit.add(candidate.getUUID()); + } + } + + private static final class ChargeState { + double dirX; + double dirZ; + int ticksRemaining; + Player owner; + final Set alreadyHit = new HashSet<>(); + } } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/item/GlimmerBottleItem.java b/common/src/main/java/com/craisinlord/antarchy/content/item/GlimmerBottleItem.java index 596c3c1b..3d715b05 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/item/GlimmerBottleItem.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/item/GlimmerBottleItem.java @@ -6,6 +6,7 @@ import com.craisinlord.antarchy.content.entity.glimmer.GlimmerCompanionSavedData import com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity; import com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant; import java.util.List; +import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; @@ -18,17 +19,27 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemUtils; import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.CustomData; import net.minecraft.world.level.Level; import org.jetbrains.annotations.Nullable; public class GlimmerBottleItem extends Item { + private static final String ABILITY_COOLDOWN_TAG = "AbilityCooldown"; + public GlimmerBottleItem() { super(new Item.Properties().stacksTo(1)); } public static ItemStack create(GlimmerVariant variant) { + return create(variant, 0); + } + + public static ItemStack create(GlimmerVariant variant, int abilityCooldown) { ItemStack stack = new ItemStack(AntarchyObjects.GLIMMER_BOTTLE.get()); stack.set(AntarchyObjects.GLIMMER_VARIANT_COMPONENT.get(), variant); + if (abilityCooldown > 0) { + CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> tag.putInt(ABILITY_COOLDOWN_TAG, abilityCooldown)); + } return stack; } @@ -37,6 +48,10 @@ public class GlimmerBottleItem extends Item { return stack.get(AntarchyObjects.GLIMMER_VARIANT_COMPONENT.get()); } + public static int getStoredAbilityCooldown(ItemStack stack) { + return stack.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY).copyTag().getInt(ABILITY_COOLDOWN_TAG); + } + @Override public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { ItemStack stack = player.getItemInHand(hand); @@ -58,6 +73,7 @@ public class GlimmerBottleItem extends Item { glimmer.lockVariant(variant); glimmer.tame(player); glimmer.setOrderedToSit(false); + glimmer.setAbilityCooldown(getStoredAbilityCooldown(stack)); level.addFreshEntity(glimmer); GlimmerCompanionSavedData.replaceCompanion(((ServerLevel) level).getServer(), player.getUUID(), glimmer.getUUID()); GlimmerParticles.tickBurst(glimmer); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaBiomeSource.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaBiomeSource.java index bf7750b7..92d021ab 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaBiomeSource.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaBiomeSource.java @@ -76,9 +76,11 @@ public class ElythiaBiomeSource extends BiomeSource { private final int molewormCavesMaxQuartY; private final int surfaceBiomeSampleQuartY; private final int seaLevelQuartY; + private final int undergroundGuardMaxQuartY; private final Holder oceanHolder; private final Holder defaultLandHolder; private final Holder glimmeringPoolsHolder; + private final Holder ouranwoodForestHolder; public ElythiaBiomeSource(Climate.ParameterList> parameters, int molewormCavesMaxY, int surfaceBiomeSampleY, int oceanMaxY, int seaLevel) { this.parameters = parameters; @@ -90,6 +92,11 @@ public class ElythiaBiomeSource extends BiomeSource { this.molewormCavesMaxQuartY = QuartPos.fromBlock(molewormCavesMaxY); this.surfaceBiomeSampleQuartY = QuartPos.fromBlock(surfaceBiomeSampleY); this.seaLevelQuartY = QuartPos.fromBlock(seaLevel); + // 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 + // even though those are meant to be surface-only. Anything at or below this Y gets + // treated as underground for those two biomes specifically. + this.undergroundGuardMaxQuartY = QuartPos.fromBlock(molewormCavesMaxY + 40); this.oceanHolder = parameters.values().stream() .map(Pair::getSecond) .filter(h -> h.is(ELYTHIA_OCEAN)) @@ -100,6 +107,11 @@ public class ElythiaBiomeSource extends BiomeSource { .filter(h -> h.is(GLIMMERING_POOLS)) .findFirst() .orElse(null); + this.ouranwoodForestHolder = parameters.values().stream() + .map(Pair::getSecond) + .filter(h -> h.is(OURANWOOD_FOREST)) + .findFirst() + .orElse(null); this.defaultLandHolder = parameters.values().stream() .map(Pair::getSecond) .filter(h -> !isOceanBiome(h) && !h.is(ELYTHIA_BEACH) @@ -124,11 +136,6 @@ public class ElythiaBiomeSource extends BiomeSource { protected Stream> collectPossibleBiomes() { return this.delegate.possibleBiomes().stream(); } - - // Conservative threshold well inside the ocean entry range (-0.85 to -0.92). - // At continentalness < -0.80 the terrain is reliably below sea level. - // Transition-zone columns (-0.80 to -0.85) are treated as land to avoid - // ocean biome appearing over above-sea-level terrain. private static final long OCEAN_CONTINENTALNESS_THRESHOLD = Climate.quantizeCoord(-0.87f); @Override @@ -140,7 +147,7 @@ public class ElythiaBiomeSource extends BiomeSource { return resolveSurfaceFallback(x, y, z, sampler, MOLEWORM_CAVES, GLIMMERING_POOLS); } - // Use continentalness (XZ-only noise) to classify the column. + // Use continentalness o classify the column. // Ocean columns get the ocean biome at every Y so structures, particles, // and ambient effects work correctly above the water surface. // Cave biomes are always preserved even in ocean columns. @@ -160,13 +167,23 @@ public class ElythiaBiomeSource extends BiomeSource { return oceanHolder; } - // Land column: prevent ocean biomes from bleeding in at any Y + // Land column prevent ocean biomes from sneakin in if (isOceanBiome(biome)) { return resolveLandFallback(x, z, sampler); } + if (biome.is(SPARSE_OURANWOOD_FOREST) && !isSparseOuranwoodCandidate(target, x, z)) { + biome = this.ouranwoodForestHolder != null ? this.ouranwoodForestHolder : biome; + } + if (isGlimmeringPoolsCandidate(biome, target, x, z)) { - return this.glimmeringPoolsHolder != null ? this.glimmeringPoolsHolder : biome; + biome = this.glimmeringPoolsHolder != null ? this.glimmeringPoolsHolder : biome; + } + + // Neither peach_forest nor glimmering_pools should ever generate underground — + // fall back to whatever a nearby surface reference sample would give instead. + if ((biome.is(PEACH_FOREST) || biome.is(GLIMMERING_POOLS)) && y <= this.undergroundGuardMaxQuartY) { + return resolveSurfaceFallback(x, y, z, sampler, PEACH_FOREST, GLIMMERING_POOLS); } return biome; @@ -182,8 +199,10 @@ public class ElythiaBiomeSource extends BiomeSource { } private static boolean isOuranwoodBiome(Holder biome) { + // peach_forest is deliberately excluded here: letting glimmering_pools carve + // into it fragments its own (already modest) territory into tiny patches. return biome.is(OURANWOOD_FOREST) || biome.is(SPARSE_OURANWOOD_FOREST) - || biome.is(PEACH_FOREST) || biome.is(FUNGAL_OURANWOOD_FOREST); + || biome.is(FUNGAL_OURANWOOD_FOREST); } private static boolean isGlimmeringPoolsCandidate(Holder biome, Climate.TargetPoint target, int x, int z) { @@ -196,30 +215,48 @@ public class ElythiaBiomeSource extends BiomeSource { long weirdness = target.weirdness(); long depth = target.depth(); - if (humidity < Climate.quantizeCoord(0.68F) || humidity > Climate.quantizeCoord(1.0F)) { + if (humidity < Climate.quantizeCoord(0.64F) || humidity > Climate.quantizeCoord(1.0F)) { return false; } - if (continentalness < Climate.quantizeCoord(0.32F) || continentalness > Climate.quantizeCoord(0.88F)) { + if (continentalness < Climate.quantizeCoord(0.29F) || continentalness > Climate.quantizeCoord(0.90F)) { return false; } - if (weirdness < Climate.quantizeCoord(-0.84F) || weirdness > Climate.quantizeCoord(0.29F)) { + if (weirdness < Climate.quantizeCoord(-0.88F) || weirdness > Climate.quantizeCoord(0.33F)) { return false; } if (depth < Climate.quantizeCoord(0.0F) || depth > Climate.quantizeCoord(0.80F)) { return false; } - // Hash on coarse cells (not raw per-quart coords) so eligible columns - // clump into contiguous patches instead of speckling per-quart. - // Cell size bumped from 6 to 8 blocks so patches (and the pools/streams - // they host) run slightly larger than before. - long cellX = Math.floorDiv(x, 8); - long cellZ = Math.floorDiv(z, 8); + long cellX = Math.floorDiv(x, 11); + long cellZ = Math.floorDiv(z, 11); long gate = Math.floorMod(cellX * 73428767L + cellZ * 912931L, 5L); - return gate <= 2L; + return gate <= 3L; + } + + private static boolean isSparseOuranwoodCandidate(Climate.TargetPoint target, int x, int z) { + if (target.temperature() > Climate.quantizeCoord(0.24F)) { + return false; + } + if (target.humidity() > Climate.quantizeCoord(0.70F)) { + return false; + } + if (target.continentalness() < Climate.quantizeCoord(0.90F)) { + return false; + } + if (target.erosion() > Climate.quantizeCoord(-0.22F)) { + return false; + } + if (target.weirdness() < Climate.quantizeCoord(0.92F)) { + return false; + } + + long cellX = Math.floorDiv(x, 24); + long cellZ = Math.floorDiv(z, 24); + long gate = Math.floorMod(cellX * 1103515245L + cellZ * 2147483647L, 12L); + return gate == 0L; } - // Used for moleworm caves — returns best Y-sample, falls back to whatever the delegate gives @SafeVarargs private Holder resolveSurfaceFallback(int x, int y, int z, Climate.Sampler sampler, ResourceKey... excluded) { Holder fallback = this.delegate.getNoiseBiome(x, this.surfaceBiomeSampleQuartY, z, sampler); @@ -237,7 +274,6 @@ public class ElythiaBiomeSource extends BiomeSource { return fallback; } - // Used when ocean bleeds into a land column — guaranteed to never return an ocean/cave biome private Holder resolveLandFallback(int x, int z, Climate.Sampler sampler) { Holder fallback = this.delegate.getNoiseBiome(x, this.surfaceBiomeSampleQuartY, z, sampler); if (!isOceanOrCave(fallback)) return fallback; @@ -269,9 +305,6 @@ public class ElythiaBiomeSource extends BiomeSource { try { this.delegate.addDebugInfo(debug, pos, sampler); } catch (NullPointerException ignored) { - // TerraBlender's MixinMultiNoiseBiomeSource.addDebugInfo reads an internal - // field (uniqueness) that it only injects into TerraBlender-registered sources. - // Our delegate is not one of those, so we swallow the NPE here. } debug.add("Elythia mole cave cap: y<=" + this.molewormCavesMaxY); debug.add("Elythia sea level: " + this.seaLevel); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaFloraFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaFloraFeature.java index 7917e702..68c9e102 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaFloraFeature.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaFloraFeature.java @@ -23,6 +23,8 @@ import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConf public class ElythiaFloraFeature extends Feature { private static final String SIZEABLE_FOLIAGE_MODID = "sizeable_foliage"; + private static final ResourceLocation CAMELLIA_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "camellia"); + private static final ResourceLocation SPIDER_LILY_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "spider_lily"); private final Variant variant; @@ -40,20 +42,18 @@ public class ElythiaFloraFeature extends Feature { case FOREST -> 185; case MEADOW -> 95; case PEACH_FOREST -> 120; - case TORCHFLOWER_FIELDS -> 60; case BUTTERFLY_FIELDS -> 150; case FLOWER_FOREST_MILKWEED -> 14; }; int radius = switch (this.variant) { case FOREST -> 8; - case MEADOW, PEACH_FOREST, TORCHFLOWER_FIELDS -> 14; + case MEADOW, PEACH_FOREST -> 14; case BUTTERFLY_FIELDS -> 18; case FLOWER_FOREST_MILKWEED -> 8; }; boolean placedAny = false; int torchflowerPatchRolls = switch (this.variant) { - case TORCHFLOWER_FIELDS -> 3 + random.nextInt(3); case BUTTERFLY_FIELDS -> 2 + random.nextInt(3); case PEACH_FOREST -> 1; case FLOWER_FOREST_MILKWEED -> 0; @@ -64,7 +64,6 @@ public class ElythiaFloraFeature extends Feature { case FOREST -> 0.24F; case MEADOW -> 0.42F; case PEACH_FOREST -> 0.08F; - case TORCHFLOWER_FIELDS -> 0.95F; case BUTTERFLY_FIELDS -> 0.24F; case FLOWER_FOREST_MILKWEED -> 0.0F; }; @@ -76,7 +75,6 @@ public class ElythiaFloraFeature extends Feature { if (random.nextFloat() < switch (this.variant) { case MEADOW -> 0.1F; case PEACH_FOREST -> 0.0F; - case TORCHFLOWER_FIELDS -> 0.04F; case BUTTERFLY_FIELDS -> 0.12F; case FOREST -> 0.05F; case FLOWER_FOREST_MILKWEED -> 0.0F; @@ -86,7 +84,6 @@ public class ElythiaFloraFeature extends Feature { if (random.nextFloat() < switch (this.variant) { case MEADOW -> 0.16F; case PEACH_FOREST -> 0.0F; - case TORCHFLOWER_FIELDS -> 0.08F; case BUTTERFLY_FIELDS -> 0.95F; case FOREST -> 0.06F; case FLOWER_FOREST_MILKWEED -> 0.18F; @@ -96,13 +93,15 @@ public class ElythiaFloraFeature extends Feature { if (random.nextFloat() < switch (this.variant) { case MEADOW -> 0.16F; case PEACH_FOREST -> 0.0F; - case TORCHFLOWER_FIELDS -> 0.08F; case BUTTERFLY_FIELDS -> 0.95F; case FOREST -> 0.06F; case FLOWER_FOREST_MILKWEED -> 0.18F; }) { placedAny |= this.placeMilkweedPatch(level, origin, random, AntarchyObjects.PINK_MILKWEED.get()); } + if (this.variant == Variant.PEACH_FOREST && random.nextFloat() < 0.025F) { + placedAny |= this.placeMilkweedPatch(level, origin, random, antarchyBlock(CAMELLIA_ID)); + } if (this.variant == Variant.FOREST || this.variant == Variant.PEACH_FOREST) { placedAny |= this.placeBigBushes(level, origin, random, radius); @@ -132,20 +131,6 @@ public class ElythiaFloraFeature extends Feature { } private boolean placeSelectedPlant(WorldGenLevel level, BlockPos plantPos, BlockPos groundPos, RandomSource random) { - if (this.variant == Variant.TORCHFLOWER_FIELDS) { - float roll = random.nextFloat(); - if (roll < 0.14F) { - return placeDouble(level, plantPos, torchflowerBush().defaultBlockState()); - } - if (roll < 0.58F) { - return placeSingle(level, plantPos, Blocks.TORCHFLOWER); - } - if (roll < 0.94F) { - return placeSingle(level, plantPos, Blocks.SHORT_GRASS); - } - return placeDouble(level, plantPos, Blocks.TALL_GRASS.defaultBlockState()); - } - if (this.variant == Variant.BUTTERFLY_FIELDS) { float roll = random.nextFloat(); if (roll < 0.18F) { @@ -179,6 +164,9 @@ public class ElythiaFloraFeature extends Feature { if (this.variant == Variant.PEACH_FOREST) { float roll = random.nextFloat(); + if (roll < 0.01F) { + return placeSingle(level, plantPos, antarchyBlock(SPIDER_LILY_ID)); + } if (roll < 0.58F) { return placeSingle(level, plantPos, Blocks.SHORT_GRASS); } @@ -231,6 +219,14 @@ public class ElythiaFloraFeature extends Feature { return block == Blocks.AIR ? Blocks.TORCHFLOWER : block; } + private static Block antarchyBlock(ResourceLocation id) { + Block block = BuiltInRegistries.BLOCK.get(id); + if (block == Blocks.AIR) { + throw new IllegalStateException("Missing block: " + id); + } + return block; + } + private boolean placeBigBushes(WorldGenLevel level, BlockPos origin, RandomSource random, int radius) { Block bushBlock = BuiltInRegistries.BLOCK.get(ResourceLocation.fromNamespaceAndPath(SIZEABLE_FOLIAGE_MODID, "big_bush")); if (!(bushBlock instanceof BigBushBlock)) { @@ -343,18 +339,23 @@ public class ElythiaFloraFeature extends Feature { return false; } - int radius = this.variant == Variant.TORCHFLOWER_FIELDS ? 4 : this.variant == Variant.MEADOW ? 3 : this.variant == Variant.BUTTERFLY_FIELDS ? 3 : 2; - int plants = this.variant == Variant.TORCHFLOWER_FIELDS - ? 8 + random.nextInt(8) - : this.variant == Variant.BUTTERFLY_FIELDS + int radius = this.variant == Variant.MEADOW ? 3 : this.variant == Variant.BUTTERFLY_FIELDS ? 3 : 2; + int plants = this.variant == Variant.BUTTERFLY_FIELDS ? 4 + random.nextInt(5) : 3 + random.nextInt(this.variant == Variant.MEADOW ? 4 : 3); + boolean bushEligible = this.variant == Variant.FOREST || this.variant == Variant.MEADOW; boolean placed = false; for (int i = 0; i < plants; i++) { BlockPos plantPos = samplePatchPos(level, patchCenter, radius, random); if (plantPos == null) { continue; } + if (bushEligible && random.nextFloat() < 0.12F) { + if (placeDouble(level, plantPos, torchflowerBush().defaultBlockState())) { + placed = true; + } + continue; + } if (placeSingle(level, plantPos, Blocks.TORCHFLOWER)) { placed = true; } @@ -421,7 +422,6 @@ public class ElythiaFloraFeature extends Feature { case FOREST -> 3; case MEADOW -> 5; case PEACH_FOREST -> 3; - case TORCHFLOWER_FIELDS -> 2; case BUTTERFLY_FIELDS -> 3; case FLOWER_FOREST_MILKWEED -> 2; }; @@ -581,7 +581,6 @@ public class ElythiaFloraFeature extends Feature { FOREST, MEADOW, PEACH_FOREST, - TORCHFLOWER_FIELDS, BUTTERFLY_FIELDS, FLOWER_FOREST_MILKWEED } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/LumenPoolFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/LumenPoolFeature.java index 08d7a2f4..16304a22 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/LumenPoolFeature.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/LumenPoolFeature.java @@ -19,8 +19,6 @@ public final class LumenPoolFeature extends Feature { private static final int SMALL_RADIUS_MAX = 4; private static final int LARGE_RADIUS_MIN = 5; private static final int LARGE_RADIUS_MAX = 6; - private static final int HUGE_RADIUS_MIN = 11; - private static final int HUGE_RADIUS_MAX = 17; public LumenPoolFeature(Codec codec) { super(codec); @@ -37,18 +35,10 @@ public final class LumenPoolFeature extends Feature { return false; } - int radius; - int maxDepth; - if (random.nextInt(20) == 0) { - radius = randomBetween(random, HUGE_RADIUS_MIN, HUGE_RADIUS_MAX); - maxDepth = randomBetween(random, 9, 13); - } else if (random.nextInt(8) == 0) { - radius = randomBetween(random, LARGE_RADIUS_MIN, LARGE_RADIUS_MAX); - maxDepth = randomBetween(random, 4, 6); - } else { - radius = randomBetween(random, SMALL_RADIUS_MIN, SMALL_RADIUS_MAX); - maxDepth = randomBetween(random, 3, 4); - } + int radius = random.nextInt(8) == 0 + ? randomBetween(random, LARGE_RADIUS_MIN, LARGE_RADIUS_MAX) + : randomBetween(random, SMALL_RADIUS_MIN, SMALL_RADIUS_MAX); + int maxDepth = radius >= LARGE_RADIUS_MIN ? randomBetween(random, 4, 6) : randomBetween(random, 3, 4); BlockState lumenBlockState = AntarchyObjects.LUMEN_BLOCK.get().defaultBlockState(); BlockState shellstoneState = AntarchyObjects.SHELLSTONE.get().defaultBlockState(); BlockState tuffState = Blocks.TUFF.defaultBlockState(); @@ -123,12 +113,26 @@ public final class LumenPoolFeature extends Feature { BlockState floorState = pickFloorState(random, shellstoneState, tuffState, mossState, edge); level.setBlock(mutable, floorState, 2); placedAny = true; + + clearFloatingVegetation(level, worldX, worldZ, localSurfaceY); } } return placedAny; } + private static void clearFloatingVegetation(WorldGenLevel level, int x, int z, int surfaceY) { + int topOfDebris = Math.max(surfaceY, level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, x, z) - 1); + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + for (int offset = 1; offset <= 32; offset++) { + mutable.set(x, topOfDebris + offset, z); + BlockState state = level.getBlockState(mutable); + if (!state.isAir() && state.canBeReplaced()) { + level.setBlock(mutable, Blocks.AIR.defaultBlockState(), 2); + } + } + } + private static BlockPos findSurfaceCenter(WorldGenLevel level, BlockPos origin) { int bestY = Integer.MIN_VALUE; BlockPos bestPos = null; diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/LumenSpireFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/LumenSpireFeature.java new file mode 100644 index 00000000..f750c276 --- /dev/null +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/LumenSpireFeature.java @@ -0,0 +1,249 @@ +package com.craisinlord.antarchy.content.worldgen.elythia; + +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.Heightmap; +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 LumenSpireFeature extends Feature { + private static final int MIN_HEIGHT = 15; + private static final int MAX_HEIGHT = 20; + private static final int MIN_LEVELS = 3; + private static final int MAX_LEVELS = 4; + private static final int SHAFT_RADIUS = 3; + private static final int SHELF_RADIUS = SHAFT_RADIUS + 2; + private static final int POOL_RADIUS = 2; + + public LumenSpireFeature(Codec codec) { + super(codec); + } + + @Override + public boolean place(FeaturePlaceContext context) { + WorldGenLevel level = context.level(); + RandomSource random = context.random(); + BlockPos origin = context.origin(); + + BlockPos base = findSurfaceCenter(level, origin); + if (base == null) { + return false; + } + + int height = randomBetween(random, MIN_HEIGHT, MAX_HEIGHT); + int levels = randomBetween(random, MIN_LEVELS, MAX_LEVELS); + if (base.getY() + height >= level.getMaxBuildHeight() - 2) { + return false; + } + + BlockState shellstoneState = AntarchyObjects.SHELLSTONE.get().defaultBlockState(); + BlockState tuffState = Blocks.TUFF.defaultBlockState(); + BlockState mossState = Blocks.MOSS_BLOCK.defaultBlockState(); + BlockState lumenBlockState = AntarchyObjects.LUMEN_BLOCK.get().defaultBlockState(); + + Direction cascadeDir = Direction.Plane.HORIZONTAL.getRandomDirection(random); + int cascadeX = cascadeDir.getStepX() * (SHAFT_RADIUS + 1); + int cascadeZ = cascadeDir.getStepZ() * (SHAFT_RADIUS + 1); + int lipX = cascadeDir.getStepX() * (SHAFT_RADIUS + 1 + POOL_RADIUS); + int lipZ = cascadeDir.getStepZ() * (SHAFT_RADIUS + 1 + POOL_RADIUS); + + boolean placed = false; + for (int y = 0; y <= height; y++) { + double heightFraction = (double) y / height; + int radius = Math.max(2, Mth.floor(SHAFT_RADIUS * (1.0D - heightFraction * 0.35D))); + placed |= placePillarSlice(level, base.above(y), radius, random, shellstoneState, tuffState, mossState); + } + + int[] terraceHeights = new int[levels]; + for (int i = 0; i < levels; i++) { + terraceHeights[i] = Mth.floor(height * (double) (i + 1) / levels); + } + + int lipWorldX = base.getX() + lipX; + int lipWorldZ = base.getZ() + lipZ; + int groundLandingY = level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, lipWorldX, lipWorldZ) - 1; + + for (int i = levels - 1; i >= 0; i--) { + int terraceY = base.getY() + terraceHeights[i]; + BlockPos shelfCenter = new BlockPos(base.getX(), terraceY, base.getZ()); + placeShelfRing(level, shelfCenter, random, shellstoneState, tuffState, mossState); + + BlockPos poolCenter = new BlockPos(base.getX() + cascadeX, terraceY, base.getZ() + cascadeZ); + carveTerracePool(level, poolCenter, shellstoneState, tuffState, lumenBlockState, i == levels - 1); + + BlockPos lipPos = new BlockPos(base.getX() + lipX, terraceY - 1, base.getZ() + lipZ); + level.setBlock(lipPos, Blocks.AIR.defaultBlockState(), 2); + + int nextTerraceY = i > 0 ? base.getY() + terraceHeights[i - 1] : groundLandingY; + for (int y = terraceY - 2; y > nextTerraceY; y--) { + level.setBlock(new BlockPos(lipWorldX, y, lipWorldZ), Blocks.AIR.defaultBlockState(), 2); + } + + clearAboveShelf(level, shelfCenter); + placed = true; + } + + carveBaseBasin(level, new BlockPos(lipWorldX, groundLandingY, lipWorldZ), random, shellstoneState, tuffState, mossState, lumenBlockState); + + return placed; + } + + private static boolean placePillarSlice(WorldGenLevel level, BlockPos center, int radius, RandomSource random, BlockState shellstoneState, BlockState tuffState, BlockState mossState) { + boolean placed = false; + double rr = radius * radius; + for (int x = -radius; x <= radius; x++) { + for (int z = -radius; z <= radius; z++) { + double distance = (x * x + z * z) / Math.max(1.0D, rr); + if (distance > 1.0D) { + continue; + } + + BlockPos targetPos = center.offset(x, 0, z); + BlockState existing = level.getBlockState(targetPos); + if (!LumenWorldgenHelper.isSolidSupport(existing)) { + level.setBlock(targetPos, pickBodyState(distance, random, shellstoneState, tuffState, mossState), 2); + placed = true; + } + } + } + return placed; + } + + private static void placeShelfRing(WorldGenLevel level, BlockPos center, RandomSource random, BlockState shellstoneState, BlockState tuffState, BlockState mossState) { + double rr = SHELF_RADIUS * SHELF_RADIUS; + for (int x = -SHELF_RADIUS; x <= SHELF_RADIUS; x++) { + for (int z = -SHELF_RADIUS; z <= SHELF_RADIUS; z++) { + double distance = (x * x + z * z) / Math.max(1.0D, rr); + if (distance > 1.0D) { + continue; + } + + BlockPos topPos = center.offset(x, 0, z); + level.setBlock(topPos, pickBodyState(distance, random, shellstoneState, tuffState, mossState), 2); + level.setBlock(topPos.below(), shellstoneState, 2); + } + } + } + + private static void carveTerracePool(WorldGenLevel level, BlockPos poolCenter, BlockState shellstoneState, BlockState tuffState, BlockState lumenBlockState, boolean isApex) { + double rr = POOL_RADIUS * POOL_RADIUS; + for (int x = -POOL_RADIUS; x <= POOL_RADIUS; x++) { + for (int z = -POOL_RADIUS; z <= POOL_RADIUS; z++) { + double distance = (x * x + z * z) / Math.max(1.0D, rr); + if (distance > 1.0D) { + continue; + } + + BlockPos floorPos = poolCenter.offset(x, -1, z); + BlockPos surfacePos = poolCenter.offset(x, 0, z); + level.setBlock(floorPos, shellstoneState, 2); + if (distance <= 0.55D) { + level.setBlock(surfacePos, LumenWorldgenHelper.lumenState(lumenBlockState, true), 2); + LumenWorldgenHelper.scheduleFluidTick(level, surfacePos); + } else { + level.setBlock(surfacePos, tuffState, 2); + } + } + } + + if (isApex) { + level.setBlock(poolCenter, LumenWorldgenHelper.lumenState(lumenBlockState, true), 2); + LumenWorldgenHelper.scheduleFluidTick(level, poolCenter); + } + } + + private static void carveBaseBasin(WorldGenLevel level, BlockPos landingPos, RandomSource random, BlockState shellstoneState, BlockState tuffState, BlockState mossState, BlockState lumenBlockState) { + int radius = 4 + random.nextInt(2); + int depth = 2 + random.nextInt(2); + int waterlineY = landingPos.getY() - 1; + int floorY = waterlineY - depth; + double rr = radius * radius; + + for (int x = -radius - 1; x <= radius + 1; x++) { + for (int z = -radius - 1; z <= radius + 1; z++) { + double distance = (x * x + z * z) / Math.max(1.0D, rr); + BlockPos topPos = landingPos.offset(x, 0, z); + int surfaceY = level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, topPos.getX(), topPos.getZ()) - 1; + + if (distance <= 1.0D) { + for (int y = surfaceY; y > floorY; y--) { + BlockPos fillPos = new BlockPos(topPos.getX(), y, topPos.getZ()); + if (y > waterlineY) { + level.setBlock(fillPos, Blocks.AIR.defaultBlockState(), 2); + } else { + level.setBlock(fillPos, LumenWorldgenHelper.lumenState(lumenBlockState, 0), 2); + LumenWorldgenHelper.scheduleFluidTick(level, fillPos); + } + } + level.setBlock(new BlockPos(topPos.getX(), floorY, topPos.getZ()), pickBodyState(distance, random, shellstoneState, tuffState, mossState), 2); + } else if (distance <= 1.25D) { + for (int y = surfaceY; y >= floorY; y--) { + level.setBlock(new BlockPos(topPos.getX(), y, topPos.getZ()), pickBodyState(distance, random, shellstoneState, tuffState, mossState), 2); + } + } + } + } + + level.setBlock(landingPos, LumenWorldgenHelper.lumenState(lumenBlockState, true), 2); + LumenWorldgenHelper.scheduleFluidTick(level, landingPos); + } + + private static void clearAboveShelf(WorldGenLevel level, BlockPos shelfCenter) { + for (int x = -SHELF_RADIUS; x <= SHELF_RADIUS; x++) { + for (int z = -SHELF_RADIUS; z <= SHELF_RADIUS; z++) { + double distance = (x * x + z * z) / (double) (SHELF_RADIUS * SHELF_RADIUS); + if (distance > 1.0D) { + continue; + } + + BlockPos columnTop = shelfCenter.offset(x, 0, z); + for (int offset = 1; offset <= 16; offset++) { + BlockPos abovePos = columnTop.above(offset); + BlockState aboveState = level.getBlockState(abovePos); + if (!aboveState.isAir() && aboveState.canBeReplaced()) { + level.setBlock(abovePos, Blocks.AIR.defaultBlockState(), 2); + } + } + } + } + } + + private static BlockState pickBodyState(double distance, RandomSource random, BlockState shellstoneState, BlockState tuffState, BlockState mossState) { + if (distance > 0.85D) { + return random.nextFloat() < 0.4F ? mossState : tuffState; + } + return random.nextFloat() < 0.7F ? shellstoneState : tuffState; + } + + private static BlockPos findSurfaceCenter(WorldGenLevel level, BlockPos origin) { + int bestY = Integer.MIN_VALUE; + BlockPos bestPos = null; + for (int dx = -4; dx <= 4; dx++) { + for (int dz = -4; dz <= 4; dz++) { + int x = origin.getX() + dx; + int z = origin.getZ() + dz; + int topY = level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, x, z) - 1; + BlockPos pos = LumenWorldgenHelper.findNaturalFloor(level, x, z, topY, level.getMinBuildHeight() + 1); + if (pos != null && pos.getY() > bestY) { + bestY = pos.getY(); + bestPos = pos; + } + } + } + return bestPos; + } + + private static int randomBetween(RandomSource random, int minInclusive, int maxInclusive) { + int min = Math.min(minInclusive, maxInclusive); + int max = Math.max(minInclusive, maxInclusive); + return min >= max ? min : min + random.nextInt(max - min + 1); + } +} diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/LumenStreamFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/LumenStreamFeature.java index 0c2477f7..dcd5ba45 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/LumenStreamFeature.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/LumenStreamFeature.java @@ -15,9 +15,9 @@ import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; public final class LumenStreamFeature extends Feature { - private static final int MAX_LENGTH = 160; - private static final int MIN_LENGTH = 60; - private static final int MAX_WIDTH = 4; + private static final int MAX_LENGTH = 36; + private static final int MIN_LENGTH = 12; + private static final int MAX_WIDTH = 2; public LumenStreamFeature(Codec codec) { super(codec); diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/PeachForestMossyBoulderFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/PeachForestMossyBoulderFeature.java index 4448150e..bb2dea0e 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/PeachForestMossyBoulderFeature.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/PeachForestMossyBoulderFeature.java @@ -17,6 +17,8 @@ import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; public class PeachForestMossyBoulderFeature extends Feature { + private static final int ANGLE_SAMPLES = 16; + public PeachForestMossyBoulderFeature(Codec codec) { super(codec); } @@ -36,20 +38,25 @@ public class PeachForestMossyBoulderFeature extends Feature 1.0D + random.nextDouble() * 0.3D) { + double noiseFactor = sampleSilhouetteNoise(silhouetteNoise, x, z); + double distance = (x * x + z * z) / (Math.max(1.0D, rr) * noiseFactor * noiseFactor); + if (distance > 1.0D) { continue; } diff --git a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/PeachForestPondFeature.java b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/PeachForestPondFeature.java index 6f3b6049..dad4fb39 100644 --- a/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/PeachForestPondFeature.java +++ b/common/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/PeachForestPondFeature.java @@ -39,6 +39,9 @@ public class PeachForestPondFeature extends Feature floorY; y--) { - level.setBlock(new BlockPos(topPos.getX(), y, topPos.getZ()), Blocks.WATER.defaultBlockState(), 2); + BlockPos waterPos = new BlockPos(topPos.getX(), y, topPos.getZ()); + level.setBlock(waterPos, Blocks.WATER.defaultBlockState(), 2); + LumenWorldgenHelper.scheduleFluidTick(level, waterPos); } level.setBlock(new BlockPos(topPos.getX(), floorY, topPos.getZ()), Blocks.TUFF.defaultBlockState(), 2); clearFloatingVegetation(level, topPos, center.getY()); placed = true; } else if (distance <= 1.2D) { int floorY = center.getY() - depth; - for (int y = center.getY(); y >= floorY; y--) { + for (int y = rimTopY; y >= floorY; y--) { level.setBlock(new BlockPos(topPos.getX(), y, topPos.getZ()), Blocks.TUFF.defaultBlockState(), 2); } - clearFloatingVegetation(level, topPos, center.getY()); + clearFloatingVegetation(level, topPos, rimTopY); placed = true; } else if (distance <= 1.45D && isSoil(level.getBlockState(topPos))) { level.setBlock(topPos, Blocks.TUFF.defaultBlockState(), 2); @@ -96,16 +101,12 @@ public class PeachForestPondFeature extends Feature CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, Antarchy.MODID); - private static final DeferredRegister ARMOR_MATERIALS = DeferredRegister.create(Registries.ARMOR_MATERIAL, Antarchy.MODID); - private static final DeferredRegister> ENTITY_TYPES = DeferredRegister.create(Registries.ENTITY_TYPE, Antarchy.MODID); - private static final DeferredRegister> BLOCK_ENTITY_TYPES = DeferredRegister.create(Registries.BLOCK_ENTITY_TYPE, Antarchy.MODID); - private static final DeferredRegister> PARTICLE_TYPES = DeferredRegister.create(Registries.PARTICLE_TYPE, Antarchy.MODID); - private static final DeferredRegister> FEATURES = DeferredRegister.create(Registries.FEATURE, Antarchy.MODID); - private static final DeferredRegister> BIOME_SOURCES = DeferredRegister.create(Registries.BIOME_SOURCE, Antarchy.MODID); - private static final DeferredRegister> DENSITY_FUNCTION_TYPES = DeferredRegister.create(Registries.DENSITY_FUNCTION_TYPE, Antarchy.MODID); - private static final DeferredRegister> ENTITY_SUB_PREDICATES = DeferredRegister.create(Registries.ENTITY_SUB_PREDICATE_TYPE, Antarchy.MODID); - private static final DeferredRegister ATTRIBUTES = DeferredRegister.create(Registries.ATTRIBUTE, Antarchy.MODID); - private static final TagKey BYPASSES_BLOODGLASS = - TagKey.create(net.minecraft.core.registries.Registries.DAMAGE_TYPE, ResourceLocation.fromNamespaceAndPath("antarchy", "bypasses_bloodglass")); - private static final DeferredHolder DOUBLE_DAMAGE_CHANCE = ATTRIBUTES.register( - "double_damage_chance", - () -> new net.minecraft.world.entity.ai.attributes.RangedAttribute("attribute.antarchy.double_damage_chance", 0.0, 0.0, 1.0).setSyncable(true) - ); - private static final DeferredRegister MOB_EFFECTS = DeferredRegister.create(Registries.MOB_EFFECT, Antarchy.MODID); - private static final DeferredRegister POTIONS = DeferredRegister.create(Registries.POTION, Antarchy.MODID); - private static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(Registries.SOUND_EVENT, Antarchy.MODID); - private static final DeferredRegister FLUIDS = DeferredRegister.create(Registries.FLUID, Antarchy.MODID); - private static final DeferredRegister> MENUS = DeferredRegister.create(Registries.MENU, Antarchy.MODID); - public static final DeferredHolder, net.minecraft.world.inventory.MenuType> DORRIE_INVENTORY_MENU = - MENUS.register("dorrie_inventory", () -> new net.minecraft.world.inventory.MenuType<>(com.craisinlord.antarchy.content.menu.DorrieInventoryMenu::new, FeatureFlags.DEFAULT_FLAGS)); - private static final DeferredRegister> DATA_COMPONENT_TYPES = - DeferredRegister.create(Registries.DATA_COMPONENT_TYPE, Antarchy.MODID); - private static final DeferredRegister> RECIPE_SERIALIZERS = - DeferredRegister.create(Registries.RECIPE_SERIALIZER, Antarchy.MODID); - public static final DeferredHolder, net.minecraft.core.component.DataComponentType> GLIMMER_VARIANT = - DATA_COMPONENT_TYPES.register("glimmer_variant", - () -> net.minecraft.core.component.DataComponentType.builder() - .persistent(com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.CODEC) - .networkSynchronized(com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.STREAM_CODEC) - .build()); - public static final DeferredHolder, net.minecraft.core.component.DataComponentType> AMERICAN = - DATA_COMPONENT_TYPES.register("american", - () -> net.minecraft.core.component.DataComponentType.builder() - .persistent(net.minecraft.util.Unit.CODEC) - .networkSynchronized(net.minecraft.network.codec.StreamCodec.unit(net.minecraft.util.Unit.INSTANCE)) - .build()); - public static final DeferredHolder, net.minecraft.world.item.crafting.RecipeSerializer> AMERICANIZE_SERIALIZER = - RECIPE_SERIALIZERS.register("americanize", () -> com.craisinlord.antarchy.content.AmericanizeRecipe.SERIALIZER); - private static final Tier ULTIMATE_TIER = new SimpleToolTier( - 3072, - 10.5F, - 0.0F, - Tiers.NETHERITE.getIncorrectBlocksForDrops(), - 25, - AntarchyFabricContent::ultimateRepairIngredient - ); - private static final Tier BLOOD_CRYSTAL_KATANA_TIER = new SimpleToolTier( - 1200, - 8.0F, - 0.0F, - Tiers.DIAMOND.getIncorrectBlocksForDrops(), - 18, - AntarchyFabricContent::bloodCrystalRepairIngredient - ); - public static final DeferredItem NIGHTMARE_SCALE = ITEMS.registerSimpleItem("nightmare_scale", new Item.Properties().rarity(Rarity.RARE).fireResistant()); - public static final DeferredHolder SQUIDZOOKA_FIRE = registerSoundEvent("squidzooka_fire"); - public static final DeferredHolder SHRINK_RAY_SOUND = registerSoundEvent("shrink_ray"); - public static final DeferredHolder GROWTH_RAY_SOUND = registerSoundEvent("growth_ray"); - public static final DeferredHolder SIZE_RAY_CHARGE = registerSoundEvent("size_ray_charge"); - public static final DeferredHolder ANT_AMBIENT = registerSoundEvent("ant_ambient"); - public static final DeferredHolder ANT_IDLE = registerSoundEvent("ant_idle"); - public static final DeferredHolder ANT_HURT = registerSoundEvent("ant_hurt"); - public static final DeferredHolder ANT_BITE = registerSoundEvent("ant_bite"); - public static final DeferredHolder ANT_GATHER = registerSoundEvent("ant_gather"); - public static final DeferredHolder ANT_NEST = registerSoundEvent("ant_nest"); - public static final DeferredHolder CLOUD_SHARK_BITE = registerSoundEvent("cloud_shark_bite"); - public static final DeferredHolder CLOUD_SHARK_IDLE = registerSoundEvent("cloud_shark_idle"); - public static final DeferredHolder CLOUD_SHARK_HURT = registerSoundEvent("cloud_shark_hurt"); - public static final DeferredHolder CLOUD_SHARK_DEATH = registerSoundEvent("cloud_shark_death"); - public static final DeferredHolder CLOUD_SHARK_FLY = registerSoundEvent("cloud_shark_fly"); - public static final DeferredHolder CATERPILLAR_IDLE = registerSoundEvent("caterpillar_idle"); - public static final DeferredHolder CATERPILLAR_HURT = registerSoundEvent("caterpillar_hurt"); - public static final DeferredHolder CATERPILLAR_CRAWL = registerSoundEvent("caterpillar_crawl"); - public static final DeferredHolder BUTTERFLY_HURT = registerSoundEvent("butterfly_hurt"); - public static final DeferredHolder BRUTALFLY_IDLE = registerSoundEvent("brutalfly_idle"); - public static final DeferredHolder BRUTALFLY_DEATH = registerSoundEvent("brutalfly_death"); - public static final DeferredHolder ELYTHIA_FIREFLY_AMBIENT = registerSoundEvent("ambient.elythia.firefly"); - public static final DeferredHolder MISSILE_SQUID_AMBIENT = registerSoundEvent("missile_squid_ambient"); - public static final DeferredHolder MISSILE_SQUID_HURT = registerSoundEvent("missile_squid_hurt"); - public static final DeferredHolder MISSILE_SQUID_DEATH = registerSoundEvent("missile_squid_death"); - public static final DeferredHolder MISSILE_SQUID_ATTACK = registerSoundEvent("missile_squid_attack"); - public static final DeferredHolder KRAKEN_FLYING_LOOP = registerSoundEvent("kraken_flying_loop"); - public static final DeferredHolder KRAKEN_FLYING_SIDEWAYS_LOOP = registerSoundEvent("kraken_flying_sideways_loop"); - public static final DeferredHolder KRAKEN_ATTACK = registerSoundEvent("kraken_attack"); - public static final DeferredHolder KRAKEN_SPIN = registerSoundEvent("kraken_spin"); - public static final DeferredHolder KRAKEN_ROAR = registerSoundEvent("kraken_roar"); - public static final DeferredHolder KRAKEN_SUMMON = registerSoundEvent("kraken_summon"); - public static final DeferredHolder KRAKEN_HURT = registerSoundEvent("kraken_hurt"); - public static final DeferredHolder KRAKEN_DEATH = registerSoundEvent("kraken_death"); - public static final DeferredHolder BASILISK_IDLE_LOOP = registerSoundEvent("basilisk_idle_loop"); - public static final DeferredHolder BASILISK_SLITHER_LOOP = registerSoundEvent("basilisk_slither_loop"); - public static final DeferredHolder BASILISK_BITE = registerSoundEvent("basilisk_bite"); - public static final DeferredHolder BASILISK_HISS = registerSoundEvent("basilisk_hiss"); - public static final DeferredHolder BASILISK_HURT = registerSoundEvent("basilisk_hurt"); - public static final DeferredHolder BASILISK_DEATH = registerSoundEvent("basilisk_death"); - public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_AMBIENT = registerSoundEvent("thoraxis_nightmare_wastes_ambient"); - public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_ADDITIONS = registerSoundEvent("thoraxis_nightmare_wastes_additions"); - public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_MOOD = registerSoundEvent("thoraxis_nightmare_wastes_mood"); - public static final DeferredHolder THORAXIS_DREAM_DUNES_AMBIENT = registerSoundEvent("thoraxis_dream_dunes_ambient"); - public static final DeferredHolder THORAXIS_DREAM_DUNES_ADDITIONS = registerSoundEvent("thoraxis_dream_dunes_additions"); - public static final DeferredHolder THORAXIS_DREAM_DUNES_MOOD = registerSoundEvent("thoraxis_dream_dunes_mood"); - public static final DeferredHolder THORAXIS_LUCID_POOLS_AMBIENT = registerSoundEvent("thoraxis_lucid_pools_ambient"); - public static final DeferredHolder THORAXIS_LUCID_POOLS_ADDITIONS = registerSoundEvent("thoraxis_lucid_pools_additions"); - public static final DeferredHolder THORAXIS_LUCID_POOLS_MOOD = registerSoundEvent("thoraxis_lucid_pools_mood"); - public static final DeferredHolder LUCID_AMBIENT = registerSoundEvent("lucid_ambient"); - public static final DeferredHolder LUCID_FLYING = registerSoundEvent("lucid_flying"); - public static final DeferredHolder LUCID_ATTACK = registerSoundEvent("lucid_attack"); - public static final DeferredHolder LUCID_BOLT_SOUND = registerSoundEvent("lucid_bolt"); - public static final DeferredHolder LUCID_HURT = registerSoundEvent("lucid_hurt"); - public static final DeferredHolder LUCID_DEATH = registerSoundEvent("lucid_death"); - public static final DeferredHolder REVERIE_IDLE = registerSoundEvent("reverie_idle"); - public static final DeferredHolder REVERIE_HURT = registerSoundEvent("reverie_hurt"); - public static final DeferredHolder REVERIE_WORRY = registerSoundEvent("reverie_worry"); - public static final DeferredHolder REVERIE_SAVE = registerSoundEvent("reverie_save"); - public static final DeferredHolder REVERIE_JOIN_PLAYER = registerSoundEvent("reverie_join_player"); - public static final DeferredHolder REVERIE_ALERT = registerSoundEvent("reverie_alert"); - public static final DeferredHolder FLYING_SQUIRREL_IDLE = registerSoundEvent("flying_squirrel_idle"); - public static final DeferredHolder FLYING_SQUIRREL_BEG = registerSoundEvent("flying_squirrel_beg"); - public static final DeferredHolder FLYING_SQUIRREL_NUT = registerSoundEvent("flying_squirrel_nut"); - public static final DeferredHolder FLYING_SQUIRREL_GLIDE_LOOP = registerSoundEvent("flying_squirrel_glide_loop"); - public static final DeferredHolder FLYING_SQUIRREL_HURT = registerSoundEvent("flying_squirrel_hurt"); - public static final DeferredHolder FLYING_SQUIRREL_DEATH = registerSoundEvent("flying_squirrel_death"); - public static final DeferredHolder NIGHTMARE_IDLE = registerSoundEvent("nightmare_idle"); - public static final DeferredHolder NIGHTMARE_HURT = registerSoundEvent("nightmare_hurt"); - public static final DeferredHolder NIGHTMARE_ROAR = registerSoundEvent("nightmare_roar"); - public static final DeferredHolder NIGHTMARE_DEATH = registerSoundEvent("nightmare_death"); - public static final DeferredHolder NIGHTMARE_BITE = registerSoundEvent("nightmare_bite"); - public static final DeferredHolder NIGHTMARE_FLAP = registerSoundEvent("nightmare_flap"); - public static final DeferredHolder TRIFFID_ATTACK = registerSoundEvent("triffid_attack"); - public static final DeferredHolder TRIFFID_GRAB = registerSoundEvent("triffid_grab"); - public static final DeferredHolder TRIFFID_HURT = registerSoundEvent("triffid_hurt"); - public static final DeferredHolder TRIFFID_DEATH = registerSoundEvent("triffid_death"); - public static final DeferredHolder TRIFFID_HISS = registerSoundEvent("triffid_hiss"); - public static final DeferredHolder TRIFFID_GROWL = registerSoundEvent("triffid_growl"); - public static final DeferredHolder MANTIS_AMBIENT = registerSoundEvent("mantis_ambient"); - public static final DeferredHolder MANTIS_HURT = registerSoundEvent("mantis_hurt"); - public static final DeferredHolder MANTIS_ATTACK = registerSoundEvent("mantis_attack"); - public static final DeferredHolder MANTIS_FLY_LOOP = registerSoundEvent("mantis_fly_loop"); - public static final DeferredHolder GRAVITY_GUN_PICKUP = registerSoundEvent("gravity_gun_pickup"); - public static final DeferredHolder GRAVITY_GUN_DROP = registerSoundEvent("gravity_gun_drop"); - public static final DeferredHolder GRAVITY_GUN_HOLD_LOOP = registerSoundEvent("gravity_gun_hold_loop"); - public static final DeferredHolder GRAVITY_GUN_LAUNCH = registerSoundEvent("gravity_gun_launch"); - public static final DeferredHolder GRAVITY_GUN_DRYFIRE = registerSoundEvent("gravity_gun_dryfire"); - public static final DeferredHolder BED_BUG_AMBIENT = registerSoundEvent("bed_bug_ambient"); - public static final DeferredHolder BED_BUG_HURT = registerSoundEvent("bed_bug_hurt"); - public static final DeferredHolder BED_BUG_ATTACK = registerSoundEvent("bed_bug_attack"); - public static final DeferredHolder WASP_IDLE = registerSoundEvent("wasp_idle"); - public static final DeferredHolder WASP_HURT = registerSoundEvent("wasp_hurt"); - public static final DeferredHolder WASP_ATTACK = registerSoundEvent("wasp_attack"); - public static final DeferredHolder WASP_DEATH = registerSoundEvent("wasp_death"); - public static final DeferredHolder SCORPION_AMBIENT = registerSoundEvent("scorpion_ambient"); - public static final DeferredHolder SCORPION_HURT = registerSoundEvent("scorpion_hurt"); - public static final DeferredHolder SCORPION_ATTACK = registerSoundEvent("scorpion_attack"); - public static final DeferredHolder EMPEROR_SCORPION_AMBIENT = registerSoundEvent("emperor_scorpion_ambient"); - public static final DeferredHolder EMPEROR_SCORPION_HURT = registerSoundEvent("emperor_scorpion_hurt"); - public static final DeferredHolder EMPEROR_SCORPION_ATTACK = registerSoundEvent("emperor_scorpion_attack"); - public static final DeferredHolder EMPEROR_SCORPION_ROAR = registerSoundEvent("emperor_scorpion_roar"); - public static final DeferredHolder MOLEWORM_AMBIENT = registerSoundEvent("moleworm_ambient"); - public static final DeferredHolder MOLEWORM_HURT = registerSoundEvent("moleworm_hurt"); - public static final DeferredHolder MOLEWORM_ATTACK = registerSoundEvent("moleworm_attack"); - public static final DeferredHolder MOLEWORM_DIG = registerSoundEvent("moleworm_dig"); - public static final DeferredHolder MOLEVORE_AMBIENT = registerSoundEvent("molevore_ambient"); - public static final DeferredHolder MOLEVORE_HURT = registerSoundEvent("molevore_hurt"); - public static final DeferredHolder MOLEVORE_ATTACK = registerSoundEvent("molevore_attack"); - public static final DeferredHolder MOLEVORE_DIG = registerSoundEvent("molevore_dig"); - public static final DeferredHolder BOMBER_WALK = registerSoundEvent("bomber_walk"); - public static final DeferredHolder BOMBER_KNOCK = registerSoundEvent("bomber_knock"); - public static final DeferredHolder BOMBER_EXPLODE = registerSoundEvent("bomber_explode"); - public static final DeferredHolder TORETERROR_IDLE = registerSoundEvent("toreterror_idle"); - public static final DeferredHolder TORETERROR_HURT = registerSoundEvent("toreterror_hurt"); - public static final DeferredHolder TORETERROR_DEATH = registerSoundEvent("toreterror_death"); - public static final DeferredHolder TORETERROR_BOMBER_FIRE = registerSoundEvent("toreterror_bomber_fire"); - public static final DeferredHolder TORETERROR_SPIN = registerSoundEvent("toreterror_spin"); - public static final DeferredHolder TORETERROR_RICOCHET = registerSoundEvent("toreterror_ricochet"); - public static final DeferredHolder WATER_CANNON_FIRE = registerSoundEvent("water_cannon_fire"); - public static final DeferredHolder TORETERROR_JUMP_UP = registerSoundEvent("toreterror_jump_up"); - public static final DeferredHolder TORETERROR_JUMP_LAND = registerSoundEvent("toreterror_jump_land"); - public static final DeferredHolder STINKY_FLY_SOUND = registerSoundEvent("stinky_fly"); - public static final DeferredHolder CREEPING_HORROR_GROWL = registerSoundEvent("creeping_horror_growl"); - public static final DeferredHolder CREEPING_HORROR_HURT = registerSoundEvent("creeping_horror_hurt"); - public static final DeferredHolder CREEPING_HORROR_BITE = registerSoundEvent("creeping_horror_bite"); - public static final DeferredHolder LURKING_TERROR_SNARL = registerSoundEvent("lurking_terror_snarl"); - public static final DeferredHolder LURKING_TERROR_HURT = registerSoundEvent("lurking_terror_hurt"); - public static final DeferredHolder LURKING_TERROR_BITE = registerSoundEvent("lurking_terror_bite"); - public static final DeferredHolder LURKING_TERROR_FLY_LOOP = registerSoundEvent("lurking_terror_fly_loop"); - public static final DeferredHolder DUCT_TAPE_USE = registerSoundEvent("duct_tape_use"); - public static final DeferredHolder POTENT_NYXITE_HYPNOTIC_GAS = registerSoundEvent("potent_nyxite_hypnotic_gas"); - public static final DeferredHolder POTENT_NYXITE_GEYSER_ERUPTION_START = registerSoundEvent("potent_nyxite_geyser_eruption_start"); - public static final DeferredHolder POTENT_NYXITE_GEYSER_ERUPTION_ACTIVE = registerSoundEvent("potent_nyxite_geyser_eruption_active"); - public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_START = registerSoundEvent("potent_nyxite_geyser_continuous_start"); - public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_ACTIVE = registerSoundEvent("potent_nyxite_geyser_continuous_active"); - private static final DeferredHolder ULTIMATE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("ultimate", - () -> new ArmorMaterial( - createUltimateArmorDefense(), - 10, - SoundEvents.ARMOR_EQUIP_DIAMOND, - AntarchyFabricContent::ultimateRepairIngredient, - List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "ultimate_armor"))), - 2.0F, - (float) AntarchySettings.ultimateArmorKnockbackResistance() - )); - private static final DeferredHolder NIGHTMARE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("nightmare", - () -> new ArmorMaterial( - createNightmareArmorDefense(), - 10, - SoundEvents.ARMOR_EQUIP_NETHERITE, - () -> Ingredient.of(NIGHTMARE_SCALE.get()), - List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "nightmare_armor"))), - 3.0F, - (float) AntarchySettings.nightmareArmorKnockbackResistance() - )); - public static final DeferredItem PRIMORDIAL_SCUTE = ITEMS.registerSimpleItem("primordial_scute", - new Item.Properties().rarity(Rarity.UNCOMMON)); - private static final DeferredHolder PRIMORDIAL_ARMOR_MATERIAL = ARMOR_MATERIALS.register("primordial", - () -> new ArmorMaterial( - createPrimordialArmorDefense(), - 15, - SoundEvents.ARMOR_EQUIP_NETHERITE, - () -> Ingredient.of(PRIMORDIAL_SCUTE.get()), - List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "primordial"))), - 3.0F, - 0.1F - )); - private static final DeferredHolder BLOOD_CRYSTAL_ARMOR_MATERIAL = ARMOR_MATERIALS.register("blood_crystal", - () -> new ArmorMaterial( - createBloodCrystalArmorDefense(), - 30, - SoundEvents.ARMOR_EQUIP_DIAMOND, - AntarchyFabricContent::bloodCrystalRepairIngredient, - List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "blood_crystal"))), - 0.0F, - 0.0F - )); - private static final DeferredHolder MOGGLES_ARMOR_MATERIAL = ARMOR_MATERIALS.register("moggles", - () -> new ArmorMaterial( - createMogglesArmorDefense(), - 12, - SoundEvents.ARMOR_EQUIP_GOLD, - () -> Ingredient.of(Items.GOLD_INGOT), - List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "moggles"))), - 0.0F, - 0.0F - )); - private static final DeferredHolder FALLEN_KING_CROWN_ARMOR_MATERIAL = ARMOR_MATERIALS.register("fallen_king_crown", - () -> new ArmorMaterial( - createFallenKingCrownDefense(), - 25, - SoundEvents.ARMOR_EQUIP_GOLD, - () -> Ingredient.of(Items.GOLD_INGOT), - List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "fallen_king_crown"))), - 0.0F, - 0.0F - )); - public static final DeferredBlock DUPLICATOR_LOG = BLOCKS.register("duplicator_log", - () -> new DuplicatorLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_LOG).randomTicks())); - public static final DeferredBlock OURANWOOD_LOG = BLOCKS.register("ouranwood_log", - () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); - public static final DeferredBlock OURANWOOD_WOOD = BLOCKS.register("ouranwood_wood", - () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); - public static final DeferredBlock MOSSY_OURANWOOD_LOG = BLOCKS.register("mossy_ouranwood_log", - () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); - public static final DeferredBlock MOSSY_OURANWOOD_WOOD = BLOCKS.register("mossy_ouranwood_wood", - () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); - public static final DeferredBlock STRIPPED_OURANWOOD_LOG = BLOCKS.register("stripped_ouranwood_log", - () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_LOG))); - public static final DeferredBlock STRIPPED_OURANWOOD_WOOD = BLOCKS.register("stripped_ouranwood_wood", - () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_WOOD))); - public static final DeferredBlock OURANWOOD_PLANKS = BLOCKS.register("ouranwood_planks", - () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PLANKS))); - public static final DeferredBlock OURANWOOD_STAIRS = BLOCKS.register("ouranwood_stairs", - () -> new net.minecraft.world.level.block.StairBlock(OURANWOOD_PLANKS.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_STAIRS))); - public static final DeferredBlock OURANWOOD_SLAB = BLOCKS.register("ouranwood_slab", - () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SLAB))); - public static final DeferredBlock OURANWOOD_FENCE = BLOCKS.register("ouranwood_fence", - () -> new net.minecraft.world.level.block.FenceBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE))); - public static final DeferredBlock OURANWOOD_FENCE_GATE = BLOCKS.register("ouranwood_fence_gate", - () -> new net.minecraft.world.level.block.FenceGateBlock(net.minecraft.world.level.block.state.properties.WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE_GATE))); - public static final DeferredBlock OURANWOOD_DOOR = BLOCKS.register("ouranwood_door", - () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_DOOR))); - public static final DeferredBlock OURANWOOD_TRAPDOOR = BLOCKS.register("ouranwood_trapdoor", - () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_TRAPDOOR))); - public static final DeferredBlock OURANWOOD_PRESSURE_PLATE = BLOCKS.register("ouranwood_pressure_plate", - () -> new net.minecraft.world.level.block.PressurePlateBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE))); - public static final DeferredBlock OURANWOOD_BUTTON = BLOCKS.register("ouranwood_button", - () -> new net.minecraft.world.level.block.ButtonBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); - public static final DeferredBlock OURANWOOD_LEAVES = BLOCKS.register("ouranwood_leaves", - () -> new OuranwoodLeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); - public static final DeferredBlock OURANWOOD_ACORN_BLOCK = BLOCKS.register("ouranwood_acorn", - () -> new OuranwoodAcornBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); - // public static final DeferredBlock OURANWOOD_VINE = BLOCKS.register("ouranwood_vine", - // () -> OURANWOOD_VINE_INSTANCE); - // public static final DeferredBlock OURANWOOD_VINE_PLANT = BLOCKS.register("ouranwood_vine_plant", - // () -> OURANWOOD_VINE_PLANT_INSTANCE); - public static final DeferredBlock ORANGE_MILKWEED = BLOCKS.register("orange_milkweed", - () -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); - public static final DeferredBlock PINK_MILKWEED = BLOCKS.register("pink_milkweed", - () -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); - public static final DeferredBlock OURANWOOD_SIGN = BLOCKS.register("ouranwood_sign", - () -> new net.minecraft.world.level.block.StandingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); - public static final DeferredBlock OURANWOOD_WALL_SIGN = BLOCKS.register("ouranwood_wall_sign", - () -> new net.minecraft.world.level.block.WallSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN))); - public static final DeferredBlock OURANWOOD_HANGING_SIGN = BLOCKS.register("ouranwood_hanging_sign", - () -> new net.minecraft.world.level.block.CeilingHangingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN))); - public static final DeferredBlock OURANWOOD_WALL_HANGING_SIGN = BLOCKS.register("ouranwood_wall_hanging_sign", - () -> new net.minecraft.world.level.block.WallHangingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN))); - public static final DeferredBlock PEACH_LOG = BLOCKS.register("peach_log", - () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); - public static final DeferredBlock PEACH_WOOD = BLOCKS.register("peach_wood", - () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); - public static final DeferredBlock STRIPPED_PEACH_LOG = BLOCKS.register("stripped_peach_log", - () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_LOG))); - public static final DeferredBlock STRIPPED_PEACH_WOOD = BLOCKS.register("stripped_peach_wood", - () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_WOOD))); - public static final DeferredBlock PEACH_PLANKS = BLOCKS.register("peach_planks", - () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PLANKS))); - public static final DeferredBlock PEACH_STAIRS = BLOCKS.register("peach_stairs", - () -> new net.minecraft.world.level.block.StairBlock(PEACH_PLANKS.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_STAIRS))); - public static final DeferredBlock PEACH_SLAB = BLOCKS.register("peach_slab", - () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SLAB))); - public static final DeferredBlock PEACH_FENCE = BLOCKS.register("peach_fence", - () -> new net.minecraft.world.level.block.FenceBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE))); - public static final DeferredBlock PEACH_FENCE_GATE = BLOCKS.register("peach_fence_gate", - () -> new net.minecraft.world.level.block.FenceGateBlock(net.minecraft.world.level.block.state.properties.WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE_GATE))); - public static final DeferredBlock PEACH_DOOR = BLOCKS.register("peach_door", - () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_DOOR))); - public static final DeferredBlock PEACH_TRAPDOOR = BLOCKS.register("peach_trapdoor", - () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_TRAPDOOR))); - public static final DeferredBlock PEACH_PRESSURE_PLATE = BLOCKS.register("peach_pressure_plate", - () -> new net.minecraft.world.level.block.PressurePlateBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE))); - public static final DeferredBlock PEACH_BUTTON = BLOCKS.register("peach_button", - () -> new net.minecraft.world.level.block.ButtonBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); - public static final DeferredBlock PEACH_LEAVES = BLOCKS.register("peach_leaves", - () -> new com.craisinlord.antarchy.content.block.PeachLeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); - public static final DeferredBlock PEACH_HANGING_PEACH = BLOCKS.register("hanging_peach", - () -> new com.craisinlord.antarchy.content.block.HangingPeachBlock(BlockBehaviour.Properties.of().noOcclusion().instabreak())); - public static final DeferredBlock PEACH_SAPLING = BLOCKS.register("peach_sapling", - () -> new com.craisinlord.antarchy.content.block.PeachSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); - public static final DeferredBlock PEACH_SIGN = BLOCKS.register("peach_sign", - () -> new net.minecraft.world.level.block.StandingSignBlock(AntarchyWoodTypes.PEACH, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); - public static final DeferredBlock PEACH_WALL_SIGN = BLOCKS.register("peach_wall_sign", - () -> new net.minecraft.world.level.block.WallSignBlock(AntarchyWoodTypes.PEACH, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN))); - public static final DeferredBlock PEACH_HANGING_SIGN = BLOCKS.register("peach_hanging_sign", - () -> new net.minecraft.world.level.block.CeilingHangingSignBlock(AntarchyWoodTypes.PEACH, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN))); - public static final DeferredBlock PEACH_WALL_HANGING_SIGN = BLOCKS.register("peach_wall_hanging_sign", - () -> new net.minecraft.world.level.block.WallHangingSignBlock(AntarchyWoodTypes.PEACH, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN))); - public static final DeferredBlock DUPLICATOR_SAPLING = BLOCKS.register("duplicator_sapling", - () -> new DuplicatorSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); - public static final DeferredBlock DUCT_TAPE = BLOCKS.register("duct_tape", - () -> new DuctTapeBlock(BlockBehaviour.Properties.of() - .strength(0.2F) - .sound(SoundType.WOOL) - .noOcclusion() - .replaceable())); - public static final DeferredBlock INFESTED_ROOTED_DIRT = BLOCKS.register("infested_rooted_dirt", - () -> new InfestedRootedDirtBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.ROOTED_DIRT).randomTicks())); - public static final DeferredBlock INFESTED_COARSE_DIRT = BLOCKS.register("infested_coarse_dirt", - () -> new InfestedCoarseDirtBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COARSE_DIRT).randomTicks())); - public static final DeferredBlock NYXITE = BLOCKS.register("nyxite", - () -> new Block(nyxiteProperties())); - public static final DeferredBlock POLISHED_NYXITE = BLOCKS.register("polished_nyxite", - () -> new Block(nyxiteProperties())); - public static final DeferredBlock CHISELED_NYXITE = BLOCKS.register("chiseled_nyxite", - () -> new Block(nyxiteProperties())); - public static final DeferredBlock NYXITE_BRICKS = BLOCKS.register("nyxite_bricks", - () -> new Block(nyxiteProperties())); - public static final DeferredBlock NYXITE_STAIRS = BLOCKS.register("nyxite_stairs", - () -> new net.minecraft.world.level.block.StairBlock(NYXITE.get().defaultBlockState(), nyxiteProperties())); - public static final DeferredBlock NYXITE_SLAB = BLOCKS.register("nyxite_slab", - () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); - public static final DeferredBlock NYXITE_WALL = BLOCKS.register("nyxite_wall", - () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); - public static final DeferredBlock POLISHED_NYXITE_STAIRS = BLOCKS.register("polished_nyxite_stairs", - () -> new net.minecraft.world.level.block.StairBlock(POLISHED_NYXITE.get().defaultBlockState(), nyxiteProperties())); - public static final DeferredBlock POLISHED_NYXITE_SLAB = BLOCKS.register("polished_nyxite_slab", - () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); - public static final DeferredBlock POLISHED_NYXITE_WALL = BLOCKS.register("polished_nyxite_wall", - () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); - public static final DeferredBlock NYXITE_BRICK_STAIRS = BLOCKS.register("nyxite_brick_stairs", - () -> new net.minecraft.world.level.block.StairBlock(NYXITE_BRICKS.get().defaultBlockState(), nyxiteProperties())); - public static final DeferredBlock NYXITE_BRICK_SLAB = BLOCKS.register("nyxite_brick_slab", - () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); - public static final DeferredBlock NYXITE_BRICK_WALL = BLOCKS.register("nyxite_brick_wall", - () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); - public static final DeferredBlock SHELLSTONE = BLOCKS.register("shellstone", - () -> new Block(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock POLISHED_SHELLSTONE = BLOCKS.register("polished_shellstone", - () -> new Block(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock SHELLSTONE_BRICKS = BLOCKS.register("shellstone_bricks", - () -> new Block(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock CHISELED_SHELLSTONE = BLOCKS.register("chiseled_shellstone", - () -> new Block(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock MOSSY_SHELLSTONE_BRICKS = BLOCKS.register("mossy_shellstone_bricks", - () -> new Block(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock CRACKED_SHELLSTONE_BRICKS = BLOCKS.register("cracked_shellstone_bricks", - () -> new Block(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock MOSSY_SHELLSTONE_BRICK_STAIRS = BLOCKS.register("mossy_shellstone_brick_stairs", - () -> new net.minecraft.world.level.block.StairBlock(MOSSY_SHELLSTONE_BRICKS.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock MOSSY_SHELLSTONE_BRICK_SLAB = BLOCKS.register("mossy_shellstone_brick_slab", - () -> new net.minecraft.world.level.block.SlabBlock(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock MOSSY_SHELLSTONE_BRICK_WALL = BLOCKS.register("mossy_shellstone_brick_wall", - () -> new net.minecraft.world.level.block.WallBlock(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock SHELLSTONE_STAIRS = BLOCKS.register("shellstone_stairs", - () -> new net.minecraft.world.level.block.StairBlock(SHELLSTONE.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock SHELLSTONE_SLAB = BLOCKS.register("shellstone_slab", - () -> new net.minecraft.world.level.block.SlabBlock(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock SHELLSTONE_WALL = BLOCKS.register("shellstone_wall", - () -> new net.minecraft.world.level.block.WallBlock(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock POLISHED_SHELLSTONE_STAIRS = BLOCKS.register("polished_shellstone_stairs", - () -> new net.minecraft.world.level.block.StairBlock(POLISHED_SHELLSTONE.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock POLISHED_SHELLSTONE_SLAB = BLOCKS.register("polished_shellstone_slab", - () -> new net.minecraft.world.level.block.SlabBlock(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock POLISHED_SHELLSTONE_WALL = BLOCKS.register("polished_shellstone_wall", - () -> new net.minecraft.world.level.block.WallBlock(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock SHELLSTONE_BRICK_STAIRS = BLOCKS.register("shellstone_brick_stairs", - () -> new net.minecraft.world.level.block.StairBlock(SHELLSTONE_BRICKS.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock SHELLSTONE_BRICK_SLAB = BLOCKS.register("shellstone_brick_slab", - () -> new net.minecraft.world.level.block.SlabBlock(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock SHELLSTONE_BRICK_WALL = BLOCKS.register("shellstone_brick_wall", - () -> new net.minecraft.world.level.block.WallBlock(AntarchyObjects.shellstoneProperties())); - public static final DeferredBlock TRIFFID_GOO_BLOCK = BLOCKS.register("triffid_goo_block", - () -> new com.craisinlord.antarchy.content.block.TriffidGooBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SLIME_BLOCK).noOcclusion().isViewBlocking((s, l, p) -> false).isSuffocating((s, l, p) -> false))); - public static final DeferredBlock CLOUD_BLOCK = BLOCKS.register("cloud_block", - () -> new com.craisinlord.antarchy.content.block.CloudBlock( - AntarchyFabricContent::cloudBucketItem, - BlockBehaviour.Properties.ofFullCopy(Blocks.POWDER_SNOW).noLootTable().noOcclusion() - )); - public static final DeferredBlock ELYTHIA_PORTAL = BLOCKS.register("elythia_portal", - () -> new AntDimensionPortalBlock(PermanentPortalType.ELYTHIA, portalProperties())); - public static final DeferredBlock THORAXIS_PORTAL = BLOCKS.register("thoraxis_portal", - () -> new AntDimensionPortalBlock(PermanentPortalType.THORAXIS, portalProperties())); - public static final DeferredBlock PALE_NYXITE = BLOCKS.register("pale_nyxite", - () -> new Block(nyxiteProperties())); - public static final DeferredBlock NYXITE_SPIKE = BLOCKS.register("nyxite_spike", - () -> new NyxiteSpikeBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POINTED_DRIPSTONE))); - public static final DeferredBlock POTENT_NYXITE = BLOCKS.register("potent_nyxite", - () -> new PotentNyxiteBlock( - AntarchyFabricContent::potentNyxiteBlockEntityType, - BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK).lightLevel(state -> 3) - )); - public static final DeferredBlock UMBRAL_MOSS_BLOCK = BLOCKS.register("umbral_moss_block", - () -> new UmbralMossBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_BLOCK))); - public static final DeferredBlock UMBRAL_MOSS_CARPET = BLOCKS.register("umbral_moss_carpet", - () -> new UmbralMossCarpetBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_CARPET).noOcclusion())); - public static final DeferredBlock BLUSH_MOSS_BLOCK = BLOCKS.register("blush_moss_block", - () -> new BlushMossBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_BLOCK))); - public static final DeferredBlock BLUSH_MOSS_CARPET = BLOCKS.register("blush_moss_carpet", - () -> new BlushMossCarpetBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_CARPET).noOcclusion())); - public static final DeferredHolder, SimpleParticleType> DREAM_FIRE_FLAME = PARTICLE_TYPES.register("dream_fire_flame", - () -> simpleParticleType()); - public static final DeferredHolder, SimpleParticleType> STINKY_GAS = PARTICLE_TYPES.register("stinky_gas", - () -> simpleParticleType()); - public static final DeferredHolder, SimpleParticleType> STINKY_FLY = PARTICLE_TYPES.register("stinky_fly", - () -> simpleParticleType()); - public static final DeferredHolder, SimpleParticleType> PEACH_LEAVES_PARTICLE = PARTICLE_TYPES.register("peach_leaves_particle", - () -> simpleParticleType()); - public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS = PARTICLE_TYPES.register("hypnotic_gas", - () -> simpleParticleType()); - public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_CLOUD = PARTICLE_TYPES.register("hypnotic_gas_cloud", - () -> simpleParticleType()); - public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_DOWN = PARTICLE_TYPES.register("hypnotic_gas_down", - () -> simpleParticleType()); - public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_CLOUD_DOWN = PARTICLE_TYPES.register("hypnotic_gas_cloud_down", - () -> simpleParticleType()); - public static final DeferredHolder, SimpleParticleType> FIREFLY = PARTICLE_TYPES.register("firefly", - () -> simpleParticleType()); - public static final DeferredHolder, SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash", - () -> simpleParticleType()); - public static final DeferredHolder, ParticleType> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", - () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); - public static final DeferredHolder, ParticleType> INVERTED_GEYSER_PLUME = PARTICLE_TYPES.register("inverted_geyser_plume", - () -> particleType(InvertedGeyserParticleOptions::codec, InvertedGeyserParticleOptions::streamCodec)); - public static final DeferredHolder, ParticleType> INVERTED_GEYSER_POOF = PARTICLE_TYPES.register("inverted_geyser_poof", - () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); - public static final DeferredHolder, ParticleType> INVERTED_GEYSER_ERUPTION = PARTICLE_TYPES.register("inverted_geyser_eruption", - () -> particleType(InvertedGeyserParticleOptions::codec, InvertedGeyserParticleOptions::streamCodec)); - public static final DeferredBlock DREAM_TORCH = BLOCKS.register("dream_torch", - () -> new DreamTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_TORCH))); - public static final DeferredBlock DREAM_WALL_TORCH = BLOCKS.register("dream_wall_torch", - () -> new DreamWallTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_WALL_TORCH))); - public static final DeferredBlock DREAM_LANTERN = BLOCKS.register("dream_lantern", - () -> new net.minecraft.world.level.block.LanternBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_LANTERN))); - public static final DeferredBlock DREAM_CAMPFIRE = BLOCKS.register("dream_campfire", - () -> new DreamCampfireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_CAMPFIRE))); - public static final DeferredBlock DREAM_FIRE = BLOCKS.register("dream_fire", - () -> new DreamFireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_FIRE))); - public static final DeferredBlock DREAM_CEILING_FIRE = BLOCKS.register("dream_fire_ceiling", - () -> new DreamCeilingFireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_FIRE))); - public static final DeferredBlock BED_BUG_EGG = BLOCKS.register("bed_bug_egg", - () -> new BedBugEggBlock(BlockBehaviour.Properties.of() - .strength(0.15F) - .sound(SoundType.METAL) - .randomTicks() - .noOcclusion() - .noCollission() - .replaceable())); - public static final DeferredBlock WASP_NEST = BLOCKS.register("wasp_nest", - () -> new WaspNestBlock(AntarchyFabricContent::waspNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.BEE_NEST))); - public static final DeferredBlock OURANWOOD_SQUIRREL_NEST = BLOCKS.register("ouranwood_squirrel_nest", - () -> new com.craisinlord.antarchy.content.block.OuranwoodSquirrelNestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COARSE_DIRT).noLootTable())); - public static final DeferredBlock BRUTALFLY_COCOON_SPAWNER = BLOCKS.register("brutalfly_cocoon_spawner", - () -> new com.craisinlord.antarchy.content.block.BrutalflyCocoonSpawnerBlock(BlockBehaviour.Properties.of().noCollission().instabreak().noLootTable())); - public static final DeferredBlock HUSHWEED = BLOCKS.register("hushweed", - () -> new HushweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.AZALEA).noCollission().noOcclusion())); - public static final DeferredHolder DREAD = MOB_EFFECTS.register("dread", DreadMobEffect::new); - public static final DeferredHolder PARALYZED = MOB_EFFECTS.register("paralyzed", ParalyzedMobEffect::new); - public static final DeferredHolder INVERTED = MOB_EFFECTS.register("inverted", InvertedMobEffect::new); - public static final DeferredHolder STINKY = MOB_EFFECTS.register("stinky", StinkyMobEffect::new); - public static final DeferredHolder BLOODGLASS_WARD = MOB_EFFECTS.register("bloodglass_ward", com.craisinlord.antarchy.content.effect.BloodglassWardEffect::new); - private static final DeferredHolder BLOODGLASS_MAX_HEARTS = ATTRIBUTES.register( - "bloodglass_max_hearts", - () -> new net.minecraft.world.entity.ai.attributes.RangedAttribute("attribute.antarchy.bloodglass_max_hearts", 0.0, 0.0, 8.0).setSyncable(true) - ); - public static final DeferredHolder DREAD_POTION = POTIONS.register("dread", - () -> new Potion(new MobEffectInstance(mobEffectHolder(DREAD), 600))); - public static final DeferredHolder LONG_DREAD = POTIONS.register("long_dread", - () -> new Potion("dread", new MobEffectInstance(mobEffectHolder(DREAD), 2400))); - public static final DeferredHolder INVERSION = POTIONS.register("inversion", - () -> new Potion(new MobEffectInstance(mobEffectHolder(INVERTED), 600))); - public static final DeferredHolder LONG_INVERSION = POTIONS.register("long_inversion", - () -> new Potion("inversion", new MobEffectInstance(mobEffectHolder(INVERTED), 2400))); - public static final DeferredHolder STINKY_POTION = POTIONS.register("stinky", - () -> new Potion(new MobEffectInstance(mobEffectHolder(STINKY), 1200))); - public static final DeferredHolder LONG_STINKY = POTIONS.register("long_stinky", - () -> new Potion("stinky", new MobEffectInstance(mobEffectHolder(STINKY), 2400))); - public static final DeferredHolder SHRINKING_EFFECT = MOB_EFFECTS.register("shrinking", ShrinkMobEffect::new); - public static final DeferredHolder GROWTH_EFFECT = MOB_EFFECTS.register("growth", GrowthMobEffect::new); - public static final DeferredHolder PARALYSIS = POTIONS.register("paralysis", - () -> new Potion(new MobEffectInstance(mobEffectHolder(PARALYZED), 200))); - public static final DeferredHolder LONG_PARALYSIS = POTIONS.register("long_paralysis", - () -> new Potion("paralysis", new MobEffectInstance(mobEffectHolder(PARALYZED), 400))); - public static final DeferredHolder HASTE = POTIONS.register("haste", - () -> new Potion(new MobEffectInstance(MobEffects.DIG_SPEED, 1200, 0))); - public static final DeferredHolder STRONG_HASTE = POTIONS.register("strong_haste", - () -> new Potion("haste", new MobEffectInstance(MobEffects.DIG_SPEED, 600, 1))); - public static final DeferredHolder SHRINKING = POTIONS.register("shrinking", - () -> new Potion(new MobEffectInstance(mobEffectHolder(SHRINKING_EFFECT), 1200, 0))); - public static final DeferredHolder STRONG_SHRINKING = POTIONS.register("strong_shrinking", - () -> new Potion("shrinking", new MobEffectInstance(mobEffectHolder(SHRINKING_EFFECT), 900, 1))); - public static final DeferredHolder EXTREME_SHRINKING = POTIONS.register("extreme_shrinking", - () -> new Potion("shrinking", new MobEffectInstance(mobEffectHolder(SHRINKING_EFFECT), 600, 2))); - public static final DeferredHolder GROWING = POTIONS.register("growing", - () -> new Potion(new MobEffectInstance(mobEffectHolder(GROWTH_EFFECT), 1200, 0))); - public static final DeferredHolder STRONG_GROWING = POTIONS.register("strong_growing", - () -> new Potion("growing", new MobEffectInstance(mobEffectHolder(GROWTH_EFFECT), 900, 1))); - public static final DeferredHolder EXTREME_GROWING = POTIONS.register("extreme_growing", - () -> new Potion("growing", new MobEffectInstance(mobEffectHolder(GROWTH_EFFECT), 600, 2))); - public static final DeferredHolder BILE = FLUIDS.register("bile", - () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Source( - () -> lookupFlowingFluid("bile"), - () -> lookupFlowingFluid("flowing_bile"), - () -> lookupItem("bile_bucket"), - "bile", - 4, - 1, - 5 - )); - public static final DeferredHolder FLOWING_BILE = FLUIDS.register("flowing_bile", - () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Flowing( - () -> lookupFlowingFluid("bile"), - () -> lookupFlowingFluid("flowing_bile"), - () -> lookupItem("bile_bucket"), - "bile", - 4, - 1, - 5 - )); - public static final DeferredBlock BILE_BLOCK = BLOCKS.register("bile", - () -> new BileLiquidBlock((net.minecraft.world.level.material.FlowingFluid) BILE.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).lightLevel(state -> 5).noLootTable())); - public static final DeferredHolder ICHOR = FLUIDS.register("ichor", - () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Source( - () -> lookupFlowingFluid("ichor"), - () -> lookupFlowingFluid("flowing_ichor"), - () -> lookupItem("ichor_bucket"), - "ichor", - 4, - 1, - 5 - )); - public static final DeferredHolder FLOWING_ICHOR = FLUIDS.register("flowing_ichor", - () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Flowing( - () -> lookupFlowingFluid("ichor"), - () -> lookupFlowingFluid("flowing_ichor"), - () -> lookupItem("ichor_bucket"), - "ichor", - 4, - 1, - 5 - )); - public static final DeferredBlock ICHOR_BLOCK = BLOCKS.register("ichor", - () -> new LiquidBlock((net.minecraft.world.level.material.FlowingFluid) ICHOR.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).noLootTable())); - public static final DeferredHolder ANTIWATER = FLUIDS.register("antiwater", - AntiwaterFluid.Source::new); - public static final DeferredHolder FLOWING_ANTIWATER = FLUIDS.register("flowing_antiwater", - AntiwaterFluid.Flowing::new); - public static final DeferredBlock ANTIWATER_BLOCK = BLOCKS.register("antiwater", - () -> new AntiwaterLiquidBlock((net.minecraft.world.level.material.FlowingFluid) ANTIWATER.get(), - BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).noLootTable())); - public static final DeferredHolder LUMEN = FLUIDS.register("lumen", - () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Source( - () -> lookupFlowingFluid("lumen"), - () -> lookupFlowingFluid("flowing_lumen"), - () -> lookupItem("lumen_bucket"), - "lumen", - 4, - 1, - 5 - )); - public static final DeferredHolder FLOWING_LUMEN = FLUIDS.register("flowing_lumen", - () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Flowing( - () -> lookupFlowingFluid("lumen"), - () -> lookupFlowingFluid("flowing_lumen"), - () -> lookupItem("lumen_bucket"), - "lumen", - 4, - 1, - 5 - )); - public static final DeferredBlock LUMEN_BLOCK = BLOCKS.register("lumen", - () -> new LumenLiquidBlock((net.minecraft.world.level.material.FlowingFluid) LUMEN.get(), - BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).lightLevel(state -> 9).noLootTable())); - public static final DeferredBlock LUMEN_FROGLIGHT = BLOCKS.register("lumen_froglight", - () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.OCHRE_FROGLIGHT))); - public static final DeferredBlock ROSEATE_FROGLIGHT = BLOCKS.register("roseate_froglight", - () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.OCHRE_FROGLIGHT))); - public static final DeferredHolder, EntityType> RED_ANT = ENTITY_TYPES.register("red_ant", - () -> buildAntType(RedAntEntity::new, MobCategory.CREATURE, "red_ant")); - public static final DeferredHolder, EntityType> BROWN_ANT = ENTITY_TYPES.register("brown_ant", - () -> buildAntType(BrownAntEntity::new, MobCategory.CREATURE, "brown_ant")); - public static final DeferredHolder, EntityType> RAINBOW_ANT = ENTITY_TYPES.register("rainbow_ant", - () -> buildAntType(RainbowAntEntity::new, MobCategory.CREATURE, "rainbow_ant")); - public static final DeferredHolder, EntityType> MOLEWORM = ENTITY_TYPES.register("moleworm", - () -> EntityType.Builder.of(MolewormEntity::new, MobCategory.MONSTER) - .sized(0.4F, 0.3F) - .clientTrackingRange(8) - .build("moleworm")); - public static final DeferredHolder, EntityType> MANTIS = ENTITY_TYPES.register("mantis", - () -> EntityType.Builder.of(MantisEntity::new, MobCategory.MONSTER) - .sized(3.125F, 2.5F) - .clientTrackingRange(8) - .build("mantis")); - public static final DeferredHolder, EntityType> ALPHA_MANTIS = ENTITY_TYPES.register("alpha_mantis", - () -> EntityType.Builder.of(AlphaMantisEntity::new, MobCategory.MONSTER) - .sized(4.25F, 3.35F) - .clientTrackingRange(10) - .build("alpha_mantis")); - public static final DeferredHolder, EntityType> OURANWOOD_BOAT_ENTITY = ENTITY_TYPES.register("ouranwood_boat", - () -> EntityType.Builder.of(OuranwoodBoatEntity::new, MobCategory.MISC) - .sized(1.375F, 0.5625F) - .clientTrackingRange(10) - .updateInterval(10) - .build("ouranwood_boat")); - public static final DeferredHolder, EntityType> OURANWOOD_CHEST_BOAT_ENTITY = ENTITY_TYPES.register("ouranwood_chest_boat", - () -> EntityType.Builder.of(OuranwoodChestBoatEntity::new, MobCategory.MISC) - .sized(1.375F, 0.5625F) - .clientTrackingRange(10) - .updateInterval(10) - .build("ouranwood_chest_boat")); - public static final DeferredHolder, EntityType> PEACH_BOAT_ENTITY = ENTITY_TYPES.register("peach_boat", - () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.PeachBoatEntity::new, MobCategory.MISC) - .sized(1.375F, 0.5625F) - .clientTrackingRange(10) - .updateInterval(10) - .build("peach_boat")); - public static final DeferredHolder, EntityType> PEACH_CHEST_BOAT_ENTITY = ENTITY_TYPES.register("peach_chest_boat", - () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.PeachChestBoatEntity::new, MobCategory.MISC) - .sized(1.375F, 0.5625F) - .clientTrackingRange(10) - .updateInterval(10) - .build("peach_chest_boat")); - public static final DeferredHolder, EntityType> MOLEVORE = ENTITY_TYPES.register("molevore", - () -> EntityType.Builder.of(MolevoreEntity::new, MobCategory.MONSTER) - .sized(1.95F, 1.1F) - .clientTrackingRange(10) - .build("molevore")); - public static final DeferredHolder, EntityType> TRIFFID = ENTITY_TYPES.register("triffid", - () -> EntityType.Builder.of(TriffidEntity::new, MobCategory.MONSTER) - .sized(2.0F, 5.0F) - .clientTrackingRange(10) - .build("triffid")); - public static final DeferredHolder, EntityType> BED_BUG = ENTITY_TYPES.register("bed_bug", - () -> EntityType.Builder.of(BedBugEntity::new, MobCategory.CREATURE) - .sized(1.15F, 0.8F) - .clientTrackingRange(8) - .build("bed_bug")); - public static final DeferredHolder, EntityType> WASP = ENTITY_TYPES.register("wasp", - () -> EntityType.Builder.of(WaspEntity::new, MobCategory.MONSTER) - .sized(0.8625F, 1.365F) - .clientTrackingRange(8) - .build("wasp")); - public static final DeferredHolder, EntityType> BOMBER = ENTITY_TYPES.register("bomber", - () -> EntityType.Builder.of(BomberEntity::new, MobCategory.MONSTER) - .sized(0.55F, 0.75F) - .clientTrackingRange(8) - .build("bomber")); - public static final DeferredHolder, EntityType> SHRINK_RAY_PROJECTILE = ENTITY_TYPES.register("shrink_ray_projectile", - () -> EntityType.Builder.of(SizeRayProjectileEntity::createShrink, MobCategory.MISC) - .sized(0.5F, 0.5F) - .clientTrackingRange(8) - .updateInterval(1) - .build("shrink_ray_projectile")); - public static final DeferredHolder, EntityType> GROWTH_RAY_PROJECTILE = ENTITY_TYPES.register("growth_ray_projectile", - () -> EntityType.Builder.of(SizeRayProjectileEntity::createGrowth, MobCategory.MISC) - .sized(0.5F, 0.5F) - .clientTrackingRange(8) - .updateInterval(1) - .build("growth_ray_projectile")); - public static final DeferredBlock RED_ANT_NEST = BLOCKS.register("red_ant_nest", - () -> new AntNestBlock( - RED_ANT, - AntarchyFabricContent::antNestBlockEntityType, - true, - BlockBehaviour.Properties.ofFullCopy(Blocks.MAGMA_BLOCK).lightLevel(state -> 3).noLootTable() - )); - public static final DeferredBlock BROWN_ANT_NEST = BLOCKS.register("brown_ant_nest", - () -> new AntNestBlock(BROWN_ANT, AntarchyFabricContent::antNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT).noLootTable())); - public static final DeferredBlock RAINBOW_ANT_NEST = BLOCKS.register("rainbow_ant_nest", - () -> new AntNestBlock(RAINBOW_ANT, AntarchyFabricContent::antNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT).noLootTable())); - public static final DeferredBlock URANIUM_ORE = BLOCKS.register("uranium_ore", - () -> createOre(Blocks.EMERALD_ORE, 4, 8)); - public static final DeferredBlock DEEPSLATE_URANIUM_ORE = BLOCKS.register("deepslate_uranium_ore", - () -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8)); - public static final DeferredBlock TITANIUM_ORE = BLOCKS.register("titanium_ore", - () -> createOre(Blocks.DIAMOND_ORE, 4, 8)); - public static final DeferredBlock DEEPSLATE_TITANIUM_ORE = BLOCKS.register("deepslate_titanium_ore", - () -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8)); - public static final DeferredBlock URANIUM_BLOCK = BLOCKS.register("uranium_block", - () -> createStorageBlock(Blocks.EMERALD_BLOCK)); - public static final DeferredBlock TITANIUM_BLOCK = BLOCKS.register("titanium_block", - () -> createStorageBlock(Blocks.DIAMOND_BLOCK)); - public static final DeferredBlock RAW_URANIUM_BLOCK = BLOCKS.register("raw_uranium_block", - () -> createRawStorageBlock(Blocks.RAW_GOLD_BLOCK)); - public static final DeferredBlock RAW_TITANIUM_BLOCK = BLOCKS.register("raw_titanium_block", - () -> createRawStorageBlock(Blocks.RAW_IRON_BLOCK)); - public static final DeferredBlock CUT_URANIUM = BLOCKS.register("cut_uranium", - () -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER)); - public static final DeferredBlock CUT_TITANIUM = BLOCKS.register("cut_titanium", - () -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER)); - public static final DeferredBlock CUT_URANIUM_SLAB = BLOCKS.register("cut_uranium_slab", - () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB))); - public static final DeferredBlock CUT_TITANIUM_SLAB = BLOCKS.register("cut_titanium_slab", - () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB))); - public static final DeferredBlock CUT_URANIUM_STAIRS = BLOCKS.register("cut_uranium_stairs", - () -> new net.minecraft.world.level.block.StairBlock(CUT_URANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS))); - public static final DeferredBlock CUT_TITANIUM_STAIRS = BLOCKS.register("cut_titanium_stairs", - () -> new net.minecraft.world.level.block.StairBlock(CUT_TITANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS))); - public static final DeferredBlock CHISELED_URANIUM = BLOCKS.register("chiseled_uranium", - () -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER)); - public static final DeferredBlock CHISELED_TITANIUM = BLOCKS.register("chiseled_titanium", - () -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER)); - public static final DeferredBlock URANIUM_BULB = BLOCKS.register("uranium_bulb", - () -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB))); - public static final DeferredBlock TITANIUM_BULB = BLOCKS.register("titanium_bulb", - () -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB))); - public static final DeferredBlock URANIUM_DOOR = BLOCKS.register("uranium_door", - () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR))); - public static final DeferredBlock TITANIUM_DOOR = BLOCKS.register("titanium_door", - () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR))); - public static final DeferredBlock URANIUM_TRAPDOOR = BLOCKS.register("uranium_trapdoor", - () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR))); - public static final DeferredBlock TITANIUM_TRAPDOOR = BLOCKS.register("titanium_trapdoor", - () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR))); - public static final DeferredBlock URANIUM_BARS = BLOCKS.register("uranium_bars", - () -> new net.minecraft.world.level.block.IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS))); - public static final DeferredBlock TITANIUM_BARS = BLOCKS.register("titanium_bars", - () -> new net.minecraft.world.level.block.IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS))); - public static final DeferredBlock ANTIMETAL = BLOCKS.register("antimetal", - () -> new net.minecraft.world.level.block.RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BASALT))); - public static final DeferredBlock POLISHED_ANTIMETAL = BLOCKS.register("polished_antimetal", - () -> new net.minecraft.world.level.block.RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POLISHED_BASALT))); - public static final DeferredBlock ANTIMETAL_SCAFFOLDING = BLOCKS.register("antimetal_scaffolding", - () -> new com.craisinlord.antarchy.content.block.AntimetalScaffoldingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SCAFFOLDING))); - public static final DeferredBlock CORNEA_STALK = BLOCKS.register("cornea_stalk", - () -> new CorneaStalkBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SWEET_BERRY_BUSH).randomTicks())); - public static final DeferredBlock CORN_CROP = BLOCKS.register("corn_crop", - () -> new CornCropBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.WHEAT).randomTicks().noCollission().noOcclusion())); - public static final DeferredBlock WILD_CORN = BLOCKS.register("wild_corn", - () -> new WildCornBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.WHEAT).noCollission().noOcclusion())); - public static final DeferredBlock FALLEN_KING_CROWN_BLOCK = BLOCKS.register("fallen_king_crown", - () -> new Block(BlockBehaviour.Properties.of() - .strength(0.2F) - .sound(SoundType.METAL) - .noOcclusion() - .isSuffocating((state, level, pos) -> false) - .isViewBlocking((state, level, pos) -> false))); - public static final DeferredBlock SMALL_BLOOD_CRYSTAL_BUD = BLOCKS.register("small_blood_crystal_bud", - () -> new AmethystClusterBlock(3.0F, 4.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.SMALL_AMETHYST_BUD))); - public static final DeferredBlock MEDIUM_BLOOD_CRYSTAL_BUD = BLOCKS.register("medium_blood_crystal_bud", - () -> new AmethystClusterBlock(4.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.MEDIUM_AMETHYST_BUD))); - public static final DeferredBlock LARGE_BLOOD_CRYSTAL_BUD = BLOCKS.register("large_blood_crystal_bud", - () -> new AmethystClusterBlock(5.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.LARGE_AMETHYST_BUD))); - public static final DeferredBlock BUDDING_BLOOD_CRYSTAL = BLOCKS.register("budding_blood_crystal", - () -> new BuddingBloodCrystalBlock( - BlockBehaviour.Properties.ofFullCopy(Blocks.BUDDING_AMETHYST), - AntarchyFabricContent::smallBloodCrystalBudBlock, - AntarchyFabricContent::mediumBloodCrystalBudBlock, - AntarchyFabricContent::largeBloodCrystalBudBlock, - AntarchyFabricContent::bloodCrystalCrystalBlock - )); - public static final DeferredBlock BLOOD_CRYSTAL = BLOCKS.register("blood_crystal_block", - () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_BLOCK))); - public static final DeferredBlock BLOOD_CRYSTAL_CRYSTAL = BLOCKS.register("blood_crystal_cluster", - () -> new AmethystClusterBlock(7.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_CLUSTER))); - public static final DeferredBlock DREAM_SAND = BLOCKS.register("dream_sand", - () -> new DreamSandBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SAND))); - public static final DeferredBlock DREAM_SANDSTONE = BLOCKS.register("dream_sandstone", - () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE))); - public static final DeferredBlock CHISELED_DREAM_SANDSTONE = BLOCKS.register("chiseled_dream_sandstone", - () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.CHISELED_SANDSTONE))); - public static final DeferredBlock CUT_DREAM_SANDSTONE = BLOCKS.register("cut_dream_sandstone", - () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE))); - public static final DeferredBlock SMOOTH_DREAM_SANDSTONE = BLOCKS.register("smooth_dream_sandstone", - () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE))); - public static final DeferredBlock DREAM_SANDSTONE_STAIRS = BLOCKS.register("dream_sandstone_stairs", - () -> new net.minecraft.world.level.block.StairBlock(DREAM_SANDSTONE.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_STAIRS))); - public static final DeferredBlock DREAM_SANDSTONE_SLAB = BLOCKS.register("dream_sandstone_slab", - () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_SLAB))); - public static final DeferredBlock DREAM_SANDSTONE_WALL = BLOCKS.register("dream_sandstone_wall", - () -> new net.minecraft.world.level.block.WallBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_WALL))); - public static final DeferredBlock SMOOTH_DREAM_SANDSTONE_STAIRS = BLOCKS.register("smooth_dream_sandstone_stairs", - () -> new net.minecraft.world.level.block.StairBlock(SMOOTH_DREAM_SANDSTONE.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE_STAIRS))); - public static final DeferredBlock SMOOTH_DREAM_SANDSTONE_SLAB = BLOCKS.register("smooth_dream_sandstone_slab", - () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE_SLAB))); - public static final DeferredBlock CUT_DREAM_SANDSTONE_SLAB = BLOCKS.register("cut_dream_sandstone_slab", - () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE_SLAB))); - public static final DeferredHolder, BlockEntityType> ANT_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("ant_nest", - () -> BlockEntityType.Builder.of( - AntNestBlockEntity::new, - RED_ANT_NEST.get(), - BROWN_ANT_NEST.get(), - RAINBOW_ANT_NEST.get() - ).build(null)); - public static final DeferredHolder, BlockEntityType> DREAM_CAMPFIRE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("dream_campfire", - () -> BlockEntityType.Builder.of( - DreamCampfireBlockEntity::new, - DREAM_CAMPFIRE.get() - ).build(null)); - public static final DeferredHolder, BlockEntityType> WASP_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("wasp_nest", - () -> BlockEntityType.Builder.of( - WaspNestBlockEntity::new, - WASP_NEST.get() - ).build(null)); - public static final DeferredHolder, BlockEntityType> HUSHWEED_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("hushweed", - () -> BlockEntityType.Builder.of( - HushweedBlockEntity::new, - HUSHWEED.get() - ).build(null)); - public static final DeferredHolder, BlockEntityType> POTENT_NYXITE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("potent_nyxite", - () -> BlockEntityType.Builder.of( - (pos, state) -> new PotentNyxiteBlockEntity(pos, state, AntarchyFabricContent::potentNyxiteBlockEntityType), - POTENT_NYXITE.get() - ).build(null)); - public static final DeferredHolder, RedAntNestFeature> RED_ANT_NEST_FEATURE = FEATURES.register("red_ant_nest", - () -> new RedAntNestFeature(SimpleBlockConfiguration.CODEC)); - public static final DeferredHolder, BrownAntNestFeature> BROWN_ANT_NEST_FEATURE = FEATURES.register("brown_ant_nest", - () -> new BrownAntNestFeature(SimpleBlockConfiguration.CODEC)); - public static final DeferredHolder, RainbowAntNestFeature> RAINBOW_ANT_NEST_FEATURE = FEATURES.register("rainbow_ant_nest", - () -> new RainbowAntNestFeature(SimpleBlockConfiguration.CODEC)); - public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_LARGE_TREE = FEATURES.register("ouranwood_large_tree", - () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); - public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_YOUNG_TREE = FEATURES.register("ouranwood_young_tree", - () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); - public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_MEDIUM_TREE = FEATURES.register("ouranwood_medium_tree", - () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); - public static final DeferredHolder, OuranwoodCocoonTreeFeature> OURANWOOD_COCOON_TREE = FEATURES.register("ouranwood_cocoon_tree", - () -> new OuranwoodCocoonTreeFeature(OuranwoodTreeConfiguration.CODEC)); - public static final DeferredHolder, PeachTreeFeature> PEACH_TREE_FEATURE = FEATURES.register("peach_tree", - () -> new PeachTreeFeature(PeachTreeConfiguration.CODEC)); - public static final DeferredHolder, PeachTreeFeature> PEACH_LARGE_TREE_FEATURE = FEATURES.register("peach_large_tree", - () -> new PeachTreeFeature(PeachTreeConfiguration.CODEC)); - public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_FOREST_FLORA = FEATURES.register("elythia_forest_flora", - () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FOREST)); - public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_MEADOW_FLORA = FEATURES.register("elythia_meadow_flora", - () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.MEADOW)); - public static final DeferredHolder, ElythiaFloraFeature> PEACH_FOREST_FLORA = FEATURES.register("peach_forest_flora", - () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.PEACH_FOREST)); - public static final DeferredHolder, ElythiaFloraFeature> FLOWER_FOREST_MILKWEED = FEATURES.register("flower_forest_milkweed", - () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FLOWER_FOREST_MILKWEED)); - public static final DeferredHolder, CornPatchFeature> CORN_PATCH = FEATURES.register("corn_patch", - () -> new CornPatchFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_BUTTERFLY_FIELDS_FLORA = FEATURES.register("butterfly_fields_flora", - () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.BUTTERFLY_FIELDS)); - public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_TORCHFLOWER_FIELDS_FLORA = FEATURES.register("elythia_torchflower_fields_flora", - () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.TORCHFLOWER_FIELDS)); - public static final DeferredHolder, ElythiaSurfaceCoverFeature> ELYTHIA_SURFACE_COVER = FEATURES.register("elythia_surface_cover", - () -> new ElythiaSurfaceCoverFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, ElythiaUndergroundFeature> ELYTHIA_UNDERGROUND = FEATURES.register("elythia_underground", - () -> new ElythiaUndergroundFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, BrutalflyCocoonFeature> BRUTALFLY_COCOON = FEATURES.register("brutalfly_cocoon", - () -> new BrutalflyCocoonFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, MolewormTunnelsFeature> ELYTHIA_MOLEWORM_TUNNELS = FEATURES.register("elythia_moleworm_tunnels", - () -> new MolewormTunnelsFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, MolewormCaveEntranceFeature> ELYTHIA_MOLEWORM_CAVE_ENTRANCES = FEATURES.register("elythia_moleworm_cave_entrances", - () -> new MolewormCaveEntranceFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, MolewormWarrensFeature> ELYTHIA_MOLEWORM_WARRENS = FEATURES.register("elythia_moleworm_warrens", - () -> new MolewormWarrensFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, MolewormSurfaceMoundsFeature> ELYTHIA_MOLEWORM_SURFACE_MOUNDS = FEATURES.register("elythia_moleworm_surface_mounds", - () -> new MolewormSurfaceMoundsFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, TriffidPatchFeature> TRIFFID_PATCH = FEATURES.register("triffid_patch", - () -> new TriffidPatchFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, MapCodec> ELYTHIA_BIOME_SOURCE = BIOME_SOURCES.register("elythia_biome_source", - () -> ElythiaBiomeSource.CODEC); - public static final DeferredHolder, MapCodec> ELYTHIA_RIVER_CARVE = DENSITY_FUNCTION_TYPES.register("elythia_river_carve", - () -> ElythiaRiverCarveFunction.CODEC); - public static final DeferredHolder, ElythiaPondFeature> ELYTHIA_POND = FEATURES.register("elythia_pond", - () -> new ElythiaPondFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, LumenPoolFeature> LUMEN_POOL = FEATURES.register("lumen_pools", - () -> new LumenPoolFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, LumenLilyPadFeature> LUMEN_LILY_PADS = FEATURES.register("lumen_lily_pads", - () -> new LumenLilyPadFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, LumenStreamFeature> LUMEN_STREAM = FEATURES.register("lumen_streams", - () -> new LumenStreamFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, ElythiaTuffBoulderFeature> ELYTHIA_TUFF_BOULDER = FEATURES.register("elythia_tuff_boulder", - () -> new ElythiaTuffBoulderFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, ElythiaLargeTuffBoulderFeature> ELYTHIA_LARGE_TUFF_BOULDER = FEATURES.register("elythia_large_tuff_boulder", - () -> new ElythiaLargeTuffBoulderFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, PeachForestMossyBoulderFeature> PEACH_FOREST_MOSSY_BOULDER = FEATURES.register("peach_forest_mossy_boulder", - () -> new PeachForestMossyBoulderFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, PeachForestPondFeature> PEACH_FOREST_POND = FEATURES.register("peach_forest_pond", - () -> new PeachForestPondFeature(PeachForestPondConfiguration.CODEC)); - public static final DeferredHolder, ThoraxisFissureFeature> THORAXIS_FISSURE = FEATURES.register("thoraxis_fissure", - () -> new ThoraxisFissureFeature(ThoraxisFissureConfiguration.CODEC)); - public static final DeferredHolder, ThoraxisRibColumnsFeature> THORAXIS_RIB_COLUMNS = FEATURES.register("thoraxis_rib_columns", - () -> new ThoraxisRibColumnsFeature(ThoraxisRibColumnsConfiguration.CODEC)); - public static final DeferredHolder, ThoraxisSpikeFeature> THORAXIS_SPIKE = FEATURES.register("thoraxis_spike", - () -> new ThoraxisSpikeFeature(ThoraxisSpikeConfiguration.CODEC)); - public static final DeferredHolder, NyxiteSpikeFeature> NYXITE_SPIKES = FEATURES.register("nyxite_spikes", - () -> new NyxiteSpikeFeature(NyxiteSpikeConfiguration.CODEC)); - public static final DeferredHolder, AntiwaterSpringsFeature> ANTIWATER_SPRINGS = FEATURES.register("antiwater_springs", - () -> new AntiwaterSpringsFeature(AntiwaterSpringsConfiguration.CODEC)); - public static final DeferredHolder, PotentNyxiteFeature> POTENT_NYXITE_FEATURE = FEATURES.register("potent_nyxite", - () -> new PotentNyxiteFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, ThoraxisBloodCrystalFeature> THORAXIS_BLOOD_CRYSTAL_SPIRES = FEATURES.register("thoraxis_blood_crystal_spires", - () -> new ThoraxisBloodCrystalFeature(ThoraxisBloodCrystalConfiguration.CODEC)); - public static final DeferredHolder, CloudSeaCalciteFeature> CLOUD_SEA_CALCITE_BANKS = FEATURES.register("cloud_sea_calcite_banks", - () -> new CloudSeaCalciteFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, BedBugNestFeature> BED_BUG_NEST = FEATURES.register("bed_bug_nest", - () -> new BedBugNestFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, BedBugSurfaceClusterFeature> BED_BUG_SURFACE_CLUSTER = FEATURES.register("bed_bug_surface_cluster", - () -> new BedBugSurfaceClusterFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, ThoraxisAntiwaterPoolFeature> THORAXIS_ANTIWATER_POOL = FEATURES.register("thoraxis_antiwater_pool", - () -> new ThoraxisAntiwaterPoolFeature(ThoraxisAntiwaterPoolConfiguration.CODEC)); - public static final DeferredHolder, LucidAntiwaterPoolFeature> LUCID_ANTIWATER_POOL = FEATURES.register("lucid_antiwater_pool", - () -> new LucidAntiwaterPoolFeature(ThoraxisAntiwaterPoolConfiguration.CODEC)); - public static final DeferredHolder, ThoraxisDuneFeature> THORAXIS_DUNE = FEATURES.register("thoraxis_dune", - () -> new ThoraxisDuneFeature(ThoraxisDuneConfiguration.CODEC)); - public static final DeferredHolder, CoralSpikeFeature> ELYTHIA_CORAL_SPIKE = FEATURES.register("elythia_coral_spike", - () -> new CoralSpikeFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, com.craisinlord.antarchy.content.worldgen.elythia.FallenOuranwoodFeature> FALLEN_OURANWOOD_TREE = FEATURES.register("fallen_ouranwood_tree", - () -> new com.craisinlord.antarchy.content.worldgen.elythia.FallenOuranwoodFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, com.craisinlord.antarchy.content.worldgen.elythia.FungalMushroomFeature> FUNGAL_MUSHROOM = FEATURES.register("fungal_mushroom", - () -> new com.craisinlord.antarchy.content.worldgen.elythia.FungalMushroomFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, MapCodec> THORAXIS_BIOME_SOURCE = BIOME_SOURCES.register("thoraxis_biome_source", - () -> ThoraxisBiomeSource.CODEC); - - public static final DeferredItem DUPLICATOR_LOG_ITEM = ITEMS.registerSimpleBlockItem(DUPLICATOR_LOG); - public static final DeferredItem OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_LOG); - public static final DeferredItem OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_WOOD); - public static final DeferredItem MOSSY_OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(MOSSY_OURANWOOD_LOG); - public static final DeferredItem MOSSY_OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(MOSSY_OURANWOOD_WOOD); - public static final DeferredItem STRIPPED_OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(STRIPPED_OURANWOOD_LOG); - public static final DeferredItem STRIPPED_OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(STRIPPED_OURANWOOD_WOOD); - public static final DeferredItem OURANWOOD_PLANKS_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_PLANKS); - public static final DeferredItem OURANWOOD_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_STAIRS); - public static final DeferredItem OURANWOOD_SLAB_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_SLAB); - public static final DeferredItem OURANWOOD_FENCE_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_FENCE); - public static final DeferredItem OURANWOOD_FENCE_GATE_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_FENCE_GATE); - public static final DeferredItem OURANWOOD_DOOR_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_DOOR); - public static final DeferredItem OURANWOOD_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_TRAPDOOR); - public static final DeferredItem OURANWOOD_PRESSURE_PLATE_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_PRESSURE_PLATE); - public static final DeferredItem OURANWOOD_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_BUTTON); - public static final DeferredItem OURANWOOD_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_LEAVES); - public static final DeferredItem OURANWOOD_ACORN = ITEMS.registerSimpleBlockItem(OURANWOOD_ACORN_BLOCK); - public static final DeferredItem PEACH_LOG_ITEM = ITEMS.registerSimpleBlockItem(PEACH_LOG); - public static final DeferredItem PEACH_WOOD_ITEM = ITEMS.registerSimpleBlockItem(PEACH_WOOD); - public static final DeferredItem STRIPPED_PEACH_LOG_ITEM = ITEMS.registerSimpleBlockItem(STRIPPED_PEACH_LOG); - public static final DeferredItem STRIPPED_PEACH_WOOD_ITEM = ITEMS.registerSimpleBlockItem(STRIPPED_PEACH_WOOD); - public static final DeferredItem PEACH_PLANKS_ITEM = ITEMS.registerSimpleBlockItem(PEACH_PLANKS); - public static final DeferredItem PEACH_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(PEACH_STAIRS); - public static final DeferredItem PEACH_SLAB_ITEM = ITEMS.registerSimpleBlockItem(PEACH_SLAB); - public static final DeferredItem PEACH_FENCE_ITEM = ITEMS.registerSimpleBlockItem(PEACH_FENCE); - public static final DeferredItem PEACH_FENCE_GATE_ITEM = ITEMS.registerSimpleBlockItem(PEACH_FENCE_GATE); - public static final DeferredItem PEACH_DOOR_ITEM = ITEMS.registerSimpleBlockItem(PEACH_DOOR); - public static final DeferredItem PEACH_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(PEACH_TRAPDOOR); - public static final DeferredItem PEACH_PRESSURE_PLATE_ITEM = ITEMS.registerSimpleBlockItem(PEACH_PRESSURE_PLATE); - public static final DeferredItem PEACH_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(PEACH_BUTTON); - public static final DeferredItem PEACH_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(PEACH_LEAVES); - public static final DeferredItem PEACH_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(PEACH_SAPLING); - // public static final DeferredItem OURANWOOD_VINE_ITEM = ITEMS.registerSimpleBlockItem(OURANWOOD_VINE); - public static final DeferredItem ORANGE_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(ORANGE_MILKWEED); - public static final DeferredItem PINK_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(PINK_MILKWEED); - public static final DeferredItem OURANWOOD_SIGN_ITEM = ITEMS.register("ouranwood_sign", - () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), OURANWOOD_SIGN.get(), OURANWOOD_WALL_SIGN.get())); - public static final DeferredItem OURANWOOD_HANGING_SIGN_ITEM = ITEMS.register("ouranwood_hanging_sign", - () -> new net.minecraft.world.item.HangingSignItem(OURANWOOD_HANGING_SIGN.get(), OURANWOOD_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16))); - public static final DeferredItem OURANWOOD_BOAT = ITEMS.register("ouranwood_boat", - () -> new OuranwoodBoatOnlyItem(OURANWOOD_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); - public static final DeferredItem OURANWOOD_CHEST_BOAT = ITEMS.register("ouranwood_chest_boat", - () -> new OuranwoodChestBoatItem(OURANWOOD_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); - public static final DeferredItem PEACH_SIGN_ITEM = ITEMS.register("peach_sign", - () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), PEACH_SIGN.get(), PEACH_WALL_SIGN.get())); - public static final DeferredItem PEACH_HANGING_SIGN_ITEM = ITEMS.register("peach_hanging_sign", - () -> new net.minecraft.world.item.HangingSignItem(PEACH_HANGING_SIGN.get(), PEACH_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16))); - public static final DeferredItem PEACH_BOAT = ITEMS.register("peach_boat", - () -> new com.craisinlord.antarchy.content.item.PeachBoatOnlyItem(PEACH_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); - public static final DeferredItem PEACH_CHEST_BOAT = ITEMS.register("peach_chest_boat", - () -> new com.craisinlord.antarchy.content.item.PeachChestBoatItem(PEACH_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); - public static final DeferredItem DUPLICATOR_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(DUPLICATOR_SAPLING); - public static final DeferredItem RED_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(RED_ANT_NEST); - public static final DeferredItem BROWN_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(BROWN_ANT_NEST); - public static final DeferredItem RAINBOW_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(RAINBOW_ANT_NEST); - public static final DeferredItem URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_ORE); - public static final DeferredItem DEEPSLATE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(DEEPSLATE_URANIUM_ORE); - public static final DeferredItem TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_ORE); - public static final DeferredItem DEEPSLATE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(DEEPSLATE_TITANIUM_ORE); - public static final DeferredItem URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_BLOCK); - public static final DeferredItem TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_BLOCK); - public static final DeferredItem RAW_URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(RAW_URANIUM_BLOCK); - public static final DeferredItem RAW_TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(RAW_TITANIUM_BLOCK); - public static final DeferredItem CUT_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(CUT_URANIUM); - public static final DeferredItem CUT_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(CUT_TITANIUM); - public static final DeferredItem CUT_URANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(CUT_URANIUM_SLAB); - public static final DeferredItem CUT_TITANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(CUT_TITANIUM_SLAB); - public static final DeferredItem CUT_URANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(CUT_URANIUM_STAIRS); - public static final DeferredItem CUT_TITANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(CUT_TITANIUM_STAIRS); - public static final DeferredItem CHISELED_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_URANIUM); - public static final DeferredItem CHISELED_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_TITANIUM); - public static final DeferredItem URANIUM_BULB_ITEM = ITEMS.register("uranium_bulb", - () -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(URANIUM_BULB.get(), new Item.Properties())); - public static final DeferredItem TITANIUM_BULB_ITEM = ITEMS.register("titanium_bulb", - () -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(TITANIUM_BULB.get(), new Item.Properties())); - public static final DeferredItem URANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_DOOR); - public static final DeferredItem TITANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_DOOR); - public static final DeferredItem URANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_TRAPDOOR); - public static final DeferredItem TITANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_TRAPDOOR); - public static final DeferredItem URANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(URANIUM_BARS); - public static final DeferredItem TITANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(TITANIUM_BARS); - public static final DeferredItem ANTIMETAL_ITEM = ITEMS.register("antimetal", - () -> new AntimetalBlockItem(ANTIMETAL.get(), new Item.Properties())); - public static final DeferredItem POLISHED_ANTIMETAL_ITEM = ITEMS.register("polished_antimetal", - () -> new AntimetalBlockItem(POLISHED_ANTIMETAL.get(), new Item.Properties())); - public static final DeferredItem ANTIMETAL_SCAFFOLDING_ITEM = ITEMS.register("antimetal_scaffolding", - () -> new AntimetalScaffoldingItem(ANTIMETAL_SCAFFOLDING.get(), new Item.Properties())); - public static final DeferredItem SMALL_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(SMALL_BLOOD_CRYSTAL_BUD); - public static final DeferredItem MEDIUM_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(MEDIUM_BLOOD_CRYSTAL_BUD); - public static final DeferredItem LARGE_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(LARGE_BLOOD_CRYSTAL_BUD); - public static final DeferredItem BUDDING_BLOOD_CRYSTAL_ITEM = ITEMS.registerSimpleBlockItem(BUDDING_BLOOD_CRYSTAL); - public static final DeferredItem BLOOD_CRYSTAL_ITEM = ITEMS.register("blood_crystal_block", - () -> new net.minecraft.world.item.BlockItem(BLOOD_CRYSTAL.get(), new Item.Properties())); - public static final DeferredItem BLOOD_CRYSTAL_CRYSTAL_ITEM = ITEMS.registerSimpleBlockItem(BLOOD_CRYSTAL_CRYSTAL); - public static final DeferredItem DREAM_SAND_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SAND); - public static final DeferredItem DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SANDSTONE); - public static final DeferredItem CHISELED_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_DREAM_SANDSTONE); - public static final DeferredItem CUT_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(CUT_DREAM_SANDSTONE); - public static final DeferredItem SMOOTH_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(SMOOTH_DREAM_SANDSTONE); - public static final DeferredItem DREAM_SANDSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SANDSTONE_STAIRS); - public static final DeferredItem DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SANDSTONE_SLAB); - public static final DeferredItem DREAM_SANDSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(DREAM_SANDSTONE_WALL); - public static final DeferredItem SMOOTH_DREAM_SANDSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(SMOOTH_DREAM_SANDSTONE_STAIRS); - public static final DeferredItem SMOOTH_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(SMOOTH_DREAM_SANDSTONE_SLAB); - public static final DeferredItem CUT_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(CUT_DREAM_SANDSTONE_SLAB); - public static final DeferredItem DUCT_TAPE_ITEM = ITEMS.register("duct_tape", - () -> new DuctTapeBlockItem(DUCT_TAPE.get(), new Item.Properties().stacksTo(1))); - public static final DeferredItem INFESTED_ROOTED_DIRT_ITEM = ITEMS.registerSimpleBlockItem(INFESTED_ROOTED_DIRT); - public static final DeferredItem INFESTED_COARSE_DIRT_ITEM = ITEMS.registerSimpleBlockItem(INFESTED_COARSE_DIRT); - public static final DeferredItem NYXITE_ITEM = ITEMS.registerSimpleBlockItem(NYXITE); - public static final DeferredItem POLISHED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_NYXITE); - public static final DeferredItem CHISELED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_NYXITE); - public static final DeferredItem NYXITE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICKS); - public static final DeferredItem NYXITE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_STAIRS); - public static final DeferredItem NYXITE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_SLAB); - public static final DeferredItem NYXITE_WALL_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_WALL); - public static final DeferredItem POLISHED_NYXITE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_NYXITE_STAIRS); - public static final DeferredItem POLISHED_NYXITE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_NYXITE_SLAB); - public static final DeferredItem POLISHED_NYXITE_WALL_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_NYXITE_WALL); - public static final DeferredItem NYXITE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICK_STAIRS); - public static final DeferredItem NYXITE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICK_SLAB); - public static final DeferredItem NYXITE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_BRICK_WALL); - public static final DeferredItem SHELLSTONE_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE); - public static final DeferredItem POLISHED_SHELLSTONE_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_SHELLSTONE); - public static final DeferredItem SHELLSTONE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_BRICKS); - public static final DeferredItem CHISELED_SHELLSTONE_ITEM = ITEMS.registerSimpleBlockItem(CHISELED_SHELLSTONE); - public static final DeferredItem MOSSY_SHELLSTONE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(MOSSY_SHELLSTONE_BRICKS); - public static final DeferredItem CRACKED_SHELLSTONE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(CRACKED_SHELLSTONE_BRICKS); - public static final DeferredItem MOSSY_SHELLSTONE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(MOSSY_SHELLSTONE_BRICK_STAIRS); - public static final DeferredItem MOSSY_SHELLSTONE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(MOSSY_SHELLSTONE_BRICK_SLAB); - public static final DeferredItem MOSSY_SHELLSTONE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(MOSSY_SHELLSTONE_BRICK_WALL); - public static final DeferredItem SHELLSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_STAIRS); - public static final DeferredItem SHELLSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_SLAB); - public static final DeferredItem SHELLSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_WALL); - public static final DeferredItem POLISHED_SHELLSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_SHELLSTONE_STAIRS); - public static final DeferredItem POLISHED_SHELLSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_SHELLSTONE_SLAB); - public static final DeferredItem POLISHED_SHELLSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(POLISHED_SHELLSTONE_WALL); - public static final DeferredItem SHELLSTONE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_BRICK_STAIRS); - public static final DeferredItem SHELLSTONE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_BRICK_SLAB); - public static final DeferredItem SHELLSTONE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(SHELLSTONE_BRICK_WALL); - public static final DeferredItem TRIFFID_GOO_BLOCK_ITEM = ITEMS.register("triffid_goo_block", - () -> new com.craisinlord.antarchy.content.item.TriffidGooBlockItem(TRIFFID_GOO_BLOCK.get(), new Item.Properties())); - public static final DeferredItem PALE_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(PALE_NYXITE); - public static final DeferredItem NYXITE_SPIKE_ITEM = ITEMS.registerSimpleBlockItem(NYXITE_SPIKE); - public static final DeferredItem POTENT_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(POTENT_NYXITE); - public static final DeferredItem UMBRAL_MOSS_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(UMBRAL_MOSS_BLOCK); - public static final DeferredItem UMBRAL_MOSS_CARPET_ITEM = ITEMS.registerSimpleBlockItem(UMBRAL_MOSS_CARPET); - public static final DeferredItem BLUSH_MOSS_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(BLUSH_MOSS_BLOCK); - public static final DeferredItem BLUSH_MOSS_CARPET_ITEM = ITEMS.registerSimpleBlockItem(BLUSH_MOSS_CARPET); - public static final DeferredItem DREAM_TORCH_ITEM = ITEMS.register("dream_torch", - () -> new StandingAndWallBlockItem(DREAM_TORCH.get(), DREAM_WALL_TORCH.get(), new Item.Properties(), Direction.UP)); - public static final DeferredItem DREAM_LANTERN_ITEM = ITEMS.registerSimpleBlockItem(DREAM_LANTERN); - public static final DeferredItem DREAM_CAMPFIRE_ITEM = ITEMS.registerSimpleBlockItem(DREAM_CAMPFIRE); - public static final DeferredItem BED_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(BED_BUG_EGG); - public static final DeferredItem WASP_NEST_ITEM = ITEMS.registerSimpleBlockItem(WASP_NEST); - public static final DeferredItem HUSHWEED_ITEM = ITEMS.registerSimpleBlockItem(HUSHWEED); - public static final DeferredItem BILE_BUCKET = ITEMS.register("bile_bucket", - () -> new BucketItem(BILE.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); - public static final DeferredItem ICHOR_BUCKET = ITEMS.register("ichor_bucket", - () -> new BucketItem(ICHOR.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); - public static final DeferredItem ANTIWATER_BUCKET = ITEMS.register("antiwater_bucket", - () -> new BucketItem(ANTIWATER.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); - public static final DeferredItem LUMEN_BUCKET = ITEMS.register("lumen_bucket", - () -> new BucketItem(LUMEN.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); - public static final DeferredItem LUMEN_FROGLIGHT_ITEM = ITEMS.registerSimpleBlockItem(LUMEN_FROGLIGHT); - public static final DeferredItem ROSEATE_FROGLIGHT_ITEM = ITEMS.registerSimpleBlockItem(ROSEATE_FROGLIGHT); - public static final DeferredItem CLOUD_BUCKET = ITEMS.register("cloud_bucket", - () -> new com.craisinlord.antarchy.content.item.CloudBucketItem(CLOUD_BLOCK.get(), new Item.Properties().craftRemainder(Items.BUCKET))); - public static final DeferredItem BLOOD_CRYSTAL_SHARD = ITEMS.register("blood_crystal_shard", - () -> new com.craisinlord.antarchy.content.item.BloodCrystalShardItem(new Item.Properties())); - public static final DeferredItem BLOOD_CRYSTAL_APPLE = ITEMS.register("blood_crystal_apple", - () -> new BloodCrystalAppleItem(new Item.Properties() - .rarity(Rarity.RARE) - .food(new net.minecraft.world.food.FoodProperties.Builder() - .nutrition(4) - .saturationModifier(1.2f) - .effect(new MobEffectInstance(net.minecraft.world.effect.MobEffects.REGENERATION, 100, 1), 1.0f) - .alwaysEdible() - .build()))); - public static final DeferredItem BLOOD_CRYSTAL_HELMET = ITEMS.register("blood_crystal_helmet", - () -> new BloodCrystalArmorItem(net.minecraft.core.Holder.direct(BLOOD_CRYSTAL_ARMOR_MATERIAL.get()), ArmorItem.Type.HELMET, new Item.Properties().rarity(Rarity.RARE))); - public static final DeferredItem BLOOD_CRYSTAL_CHESTPLATE = ITEMS.register("blood_crystal_chestplate", - () -> new BloodCrystalArmorItem(net.minecraft.core.Holder.direct(BLOOD_CRYSTAL_ARMOR_MATERIAL.get()), ArmorItem.Type.CHESTPLATE, new Item.Properties().rarity(Rarity.RARE))); - public static final DeferredItem BLOOD_CRYSTAL_LEGGINGS = ITEMS.register("blood_crystal_leggings", - () -> new BloodCrystalArmorItem(net.minecraft.core.Holder.direct(BLOOD_CRYSTAL_ARMOR_MATERIAL.get()), ArmorItem.Type.LEGGINGS, new Item.Properties().rarity(Rarity.RARE))); - public static final DeferredItem BLOOD_CRYSTAL_BOOTS = ITEMS.register("blood_crystal_boots", - () -> new BloodCrystalArmorItem(net.minecraft.core.Holder.direct(BLOOD_CRYSTAL_ARMOR_MATERIAL.get()), ArmorItem.Type.BOOTS, new Item.Properties().rarity(Rarity.RARE))); - public static final DeferredItem BLOOD_CRYSTAL_KATANA = ITEMS.register("blood_crystal_katana", - () -> new BloodCrystalKatanaItem( - BLOOD_CRYSTAL_KATANA_TIER, - new Item.Properties().stacksTo(1).durability(1200).rarity(Rarity.RARE), - AntarchySettings.bloodCrystalKatanaAttackDamage(), - -2.2F - )); - public static final DeferredItem MANTIS_CLAW = ITEMS.registerSimpleItem("mantis_claw", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem KING_SCALE = ITEMS.register("king_scale", - () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); - public static final DeferredItem QUEEN_SCALE = ITEMS.register("queen_scale", - () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); - public static final DeferredItem STINK_BUG_ITEM = ITEMS.register("stink_bug", - () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON))); - public static final DeferredItem JUMPY_BUG_LEG = ITEMS.register("jumpy_bug_leg", - () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON))); - private static final DeferredHolder JUMPY_BOOTS_ARMOR_MATERIAL = ARMOR_MATERIALS.register("jumpy_boots", - () -> new ArmorMaterial( - createJumpyBootsDefense(), - 15, - net.minecraft.sounds.SoundEvents.ARMOR_EQUIP_NETHERITE, - () -> Ingredient.of(net.minecraft.world.item.Items.NETHERITE_BOOTS), - java.util.List.of(new ArmorMaterial.Layer(net.minecraft.resources.ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "jumpy_boots"))), - 3.0F, - 0.1F - )); - public static final DeferredItem JUMPY_BOOTS = ITEMS.register("jumpy_boots", - () -> new com.craisinlord.antarchy.content.item.JumpyBootsItem( - net.minecraft.core.Holder.direct(JUMPY_BOOTS_ARMOR_MATERIAL.get()), - new Item.Properties().stacksTo(1).rarity(Rarity.UNCOMMON).fireResistant().durability(ArmorItem.Type.BOOTS.getDurability(37)) - )); - public static final DeferredItem BRUTALFLY_WING = ITEMS.registerSimpleItem("brutalfly_wing", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem BRUTALFLY_ELYTRA = ITEMS.register("brutalfly_elytra", - () -> new BrutalflyElytraItem(new Item.Properties().rarity(Rarity.UNCOMMON).durability(480))); - public static final DeferredItem CORNEA_EAR = ITEMS.register("cornea_ear", - () -> new CorneaEarItem(new Item.Properties() - .rarity(Rarity.UNCOMMON) - .food(new FoodProperties.Builder() - .nutrition(2) - .saturationModifier(0.4F) - .build()))); - public static final DeferredItem CORN = ITEMS.register("corn", - () -> new Item(new Item.Properties() - .food(new FoodProperties.Builder() - .nutrition(3) - .saturationModifier(0.6F) - .build()))); - public static final DeferredItem CORN_SEEDS = ITEMS.register("corn_seeds", - () -> new net.minecraft.world.item.ItemNameBlockItem(CORN_CROP.get(), new Item.Properties())); - public static final DeferredItem RAW_VENISON = ITEMS.register("raw_venison", - () -> new Item(new Item.Properties() - .food(new FoodProperties.Builder() - .nutrition(2) - .saturationModifier(0.3F) - .build()))); - public static final DeferredItem COOKED_VENISON = ITEMS.register("cooked_venison", - () -> new Item(new Item.Properties() - .food(new FoodProperties.Builder() - .nutrition(6) - .saturationModifier(0.8F) - .build()))); - public static final DeferredItem PEACH = ITEMS.register("peach", - () -> new com.craisinlord.antarchy.content.item.PeachItem()); - public static final DeferredItem RAW_CORNDOG = ITEMS.register("raw_corndog", - () -> new Item(new Item.Properties() - .stacksTo(64) - .food(new FoodProperties.Builder() - .nutrition(8) - .saturationModifier(0.7F) - .build()))); - public static final DeferredItem COOKED_CORNDOG = ITEMS.register("cooked_corndog", - () -> new Item(new Item.Properties() - .stacksTo(64) - .food(new FoodProperties.Builder() - .nutrition(14) - .saturationModifier(1.1F) - .build()))); - public static final DeferredItem HIGH_FRUCTOSE_CORN_SYRUP = ITEMS.register("high_fructose_corn_syrup", - () -> new com.craisinlord.antarchy.content.item.HighFructoseCornSyrupItem(new Item.Properties() - .stacksTo(16) - .food(new FoodProperties.Builder() - .nutrition(0) - .saturationModifier(0.0F) - .alwaysEdible() - .build()))); - public static final DeferredItem ROOT_BEER = ITEMS.register("root_beer", - () -> new com.craisinlord.antarchy.content.item.RootBeerItem(new Item.Properties() - .stacksTo(16) - .food(new FoodProperties.Builder() - .nutrition(4) - .saturationModifier(0.4F) - .effect(new MobEffectInstance(MobEffects.REGENERATION, 100, 0), 1.0F) - .alwaysEdible() - .build()))); - public static final DeferredItem TRIFFID_GOO = ITEMS.registerSimpleItem("triffid_goo", - new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem VORTEX_EYE = ITEMS.register("vortex_eye", - () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); - public static final DeferredItem RAW_URANIUM_SCRAP = ITEMS.registerSimpleItem("raw_uranium_scrap", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem RAW_TITANIUM_SCRAP = ITEMS.registerSimpleItem("raw_titanium_scrap", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem RAW_URANIUM = ITEMS.registerSimpleItem("raw_uranium", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem RAW_TITANIUM = ITEMS.registerSimpleItem("raw_titanium", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem MUD_PIE = ITEMS.register("mud_pie", - () -> new Item(new Item.Properties() - .food(new FoodProperties.Builder() - .nutrition(10) - .saturationModifier(0.9F) - .effect(new MobEffectInstance(MobEffects.CONFUSION, 200), 1.0F) - .build()))); - public static final DeferredItem RAINBOW_SUGAR = ITEMS.register("rainbow_sugar", - () -> new RainbowSugarItem(new Item.Properties() - .rarity(Rarity.UNCOMMON) - .food(new FoodProperties.Builder().nutrition(1).saturationModifier(0.0F).alwaysEdible().build()))); - public static final DeferredItem URANIUM_NUGGET = ITEMS.registerSimpleItem("uranium_nugget", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem TITANIUM_NUGGET = ITEMS.registerSimpleItem("titanium_nugget", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem URANIUM_INGOT = ITEMS.registerSimpleItem("uranium_ingot", new Item.Properties().rarity(Rarity.UNCOMMON).fireResistant()); - public static final DeferredItem TITANIUM_INGOT = ITEMS.registerSimpleItem("titanium_ingot", new Item.Properties().rarity(Rarity.UNCOMMON).fireResistant()); - public static final DeferredItem MOLEVORE_NOSE = ITEMS.registerSimpleItem("molevore_nose", new Item.Properties().rarity(Rarity.RARE)); - public static final DeferredItem MOLEWORM_ITEM = ITEMS.register("moleworm", - () -> new Item(new Item.Properties() - .food(new FoodProperties.Builder() - .nutrition(1) - .saturationModifier(0.0F) - .effect(new MobEffectInstance(MobEffects.HUNGER, 600), 0.8F) - .build()))); - public static final DeferredItem CLOUD_SHARK_FIN = ITEMS.registerSimpleItem("cloud_shark_fin", new Item.Properties().rarity(Rarity.UNCOMMON)); - public static final DeferredItem CLOUD_SHARK_FIN_SOUP = ITEMS.register("cloud_shark_fin_soup", - () -> new CloudSharkFinSoupItem(new Item.Properties() - .stacksTo(1) - .craftRemainder(Items.BOWL) - .food(new FoodProperties.Builder() - .nutrition(10) - .saturationModifier(0.8F) - .effect(new MobEffectInstance(MobEffects.DAMAGE_BOOST, 600, 0), 1.0F) - .effect(new MobEffectInstance(MobEffects.SLOW_FALLING, 600, 0), 1.0F) - .build()))); - public static final DeferredItem KRAKEN_TOOTH = ITEMS.register("kraken_tooth", - () -> new Item(new Item.Properties().rarity(net.minecraft.world.item.Rarity.RARE))); - public static final DeferredItem BASILISK_FANG = ITEMS.registerSimpleItem("basilisk_fang", new Item.Properties().rarity(Rarity.RARE)); - public static final DeferredItem BASILISK_DAGGER = ITEMS.register("basilisk_dagger", - () -> new BasiliskDaggerItem(Tiers.IRON, new Item.Properties().rarity(Rarity.RARE), 4, -1.8F)); - public static final DeferredItem EMPEROR_SCORPION_STINGER = ITEMS.registerSimpleItem("emperor_scorpion_stinger", new Item.Properties().rarity(Rarity.RARE)); - public static final DeferredItem SCORPION_WHIP = ITEMS.register("scorpion_whip", - () -> new ScorpionWhipItem(Tiers.IRON, new Item.Properties().rarity(Rarity.RARE).durability(384))); - public static final DeferredItem MOGGLES = ITEMS.register("moggles", - () -> new MogglesItem(net.minecraft.core.Holder.direct(MOGGLES_ARMOR_MATERIAL.get()), new Item.Properties().rarity(Rarity.RARE).stacksTo(1))); - public static final DeferredItem FALLEN_KING_CROWN = ITEMS.register("fallen_king_crown", - () -> new com.craisinlord.antarchy.content.item.FallenKingCrownItem( - net.minecraft.core.Holder.direct(FALLEN_KING_CROWN_ARMOR_MATERIAL.get()), - new Item.Properties().rarity(Rarity.RARE) - )); - public static final DeferredItem ULTIMATE_HELMET = ITEMS.register("ultimate_helmet", - () -> new UltimateArmorItem( - net.minecraft.core.Holder.direct(ULTIMATE_ARMOR_MATERIAL.get()), - ArmorItem.Type.HELMET, - new Item.Properties() - .rarity(Rarity.EPIC) - .fireResistant() - .durability(ArmorItem.Type.HELMET.getDurability(41)) - )); - public static final DeferredItem ULTIMATE_CHESTPLATE = ITEMS.register("ultimate_chestplate", - () -> new UltimateArmorItem( - net.minecraft.core.Holder.direct(ULTIMATE_ARMOR_MATERIAL.get()), - ArmorItem.Type.CHESTPLATE, - new Item.Properties() - .rarity(Rarity.EPIC) - .fireResistant() - .durability(ArmorItem.Type.CHESTPLATE.getDurability(41)) - )); - public static final DeferredItem ULTIMATE_LEGGINGS = ITEMS.register("ultimate_leggings", - () -> new UltimateArmorItem( - net.minecraft.core.Holder.direct(ULTIMATE_ARMOR_MATERIAL.get()), - ArmorItem.Type.LEGGINGS, - new Item.Properties() - .rarity(Rarity.EPIC) - .fireResistant() - .durability(ArmorItem.Type.LEGGINGS.getDurability(41)) - )); - public static final DeferredItem ULTIMATE_BOOTS = ITEMS.register("ultimate_boots", - () -> new UltimateArmorItem( - net.minecraft.core.Holder.direct(ULTIMATE_ARMOR_MATERIAL.get()), - ArmorItem.Type.BOOTS, - new Item.Properties() - .rarity(Rarity.EPIC) - .fireResistant() - .durability(ArmorItem.Type.BOOTS.getDurability(41)) - )); - public static final DeferredItem ULTIMATE_SWORD = ITEMS.register("ultimate_sword", - () -> new UltimateSwordItem( - ULTIMATE_TIER, - new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), - AntarchySettings::ultimateSwordAttackDamage, - -2.4F - )); - public static final DeferredItem ULTIMATE_PICKAXE = ITEMS.register("ultimate_pickaxe", - () -> new UltimatePickaxeItem( - ULTIMATE_TIER, - new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), - AntarchySettings::ultimatePickaxeAttackDamage, - -2.8F - )); - public static final DeferredItem ULTIMATE_AXE = ITEMS.register("ultimate_axe", - () -> new UltimateAxeItem( - ULTIMATE_TIER, - new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), - AntarchySettings::ultimateAxeAttackDamage, - -3.0F - )); - public static final DeferredItem ULTIMATE_SHOVEL = ITEMS.register("ultimate_shovel", - () -> new UtlimateShovelItem( - ULTIMATE_TIER, - new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), - AntarchySettings::ultimateShovelAttackDamage, - -3.0F - )); - public static final DeferredItem ULTIMATE_HOE = ITEMS.register("ultimate_hoe", - () -> new UltimateHoeItem( - ULTIMATE_TIER, - new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), - AntarchySettings::ultimateHoeAttackDamage, - 0.0F - )); - public static final DeferredItem ULTIMATE_BOW = ITEMS.register("ultimate_bow", - () -> new UltimateBowItem(new Item.Properties().stacksTo(1).durability(768).rarity(Rarity.EPIC).fireResistant())); - public static final DeferredItem ULTIMATE_CROSSBOW = ITEMS.register("ultimate_crossbow", - () -> new UltimateCrossbowItem(new Item.Properties().stacksTo(1).durability(1024).rarity(Rarity.EPIC).fireResistant())); -// public static final DeferredItem ULTIMATE_MACE = ITEMS.register("ultimate_mace", -// () -> new UltimateMaceItem(new Item.Properties().stacksTo(1).durability(1024).rarity(Rarity.EPIC).fireResistant())); - public static final DeferredItem NIGHTMARE_HELMET = ITEMS.register("nightmare_helmet", - () -> new NightmareArmorItem( - net.minecraft.core.Holder.direct(NIGHTMARE_ARMOR_MATERIAL.get()), - ArmorItem.Type.HELMET, - new Item.Properties() - .rarity(Rarity.EPIC) - .fireResistant() - .durability(ArmorItem.Type.HELMET.getDurability(41)) - )); - public static final DeferredItem NIGHTMARE_CHESTPLATE = ITEMS.register("nightmare_chestplate", - () -> new NightmareArmorItem( - net.minecraft.core.Holder.direct(NIGHTMARE_ARMOR_MATERIAL.get()), - ArmorItem.Type.CHESTPLATE, - new Item.Properties() - .rarity(Rarity.EPIC) - .fireResistant() - .durability(ArmorItem.Type.CHESTPLATE.getDurability(41)) - )); - public static final DeferredItem NIGHTMARE_LEGGINGS = ITEMS.register("nightmare_leggings", - () -> new NightmareArmorItem( - net.minecraft.core.Holder.direct(NIGHTMARE_ARMOR_MATERIAL.get()), - ArmorItem.Type.LEGGINGS, - new Item.Properties() - .rarity(Rarity.EPIC) - .fireResistant() - .durability(ArmorItem.Type.LEGGINGS.getDurability(41)) - )); - public static final DeferredItem NIGHTMARE_BOOTS = ITEMS.register("nightmare_boots", - () -> new NightmareArmorItem( - net.minecraft.core.Holder.direct(NIGHTMARE_ARMOR_MATERIAL.get()), - ArmorItem.Type.BOOTS, - new Item.Properties() - .rarity(Rarity.EPIC) - .fireResistant() - .durability(ArmorItem.Type.BOOTS.getDurability(41)) - )); - public static final DeferredItem NIGHTMARE_SWORD = ITEMS.register("nightmare_sword", - () -> new NightmareSwordItem( - ULTIMATE_TIER, - new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), - -2.4F - )); - public static final DeferredItem SHRINK_RAY = ITEMS.register("shrink_ray", - () -> new SizeRayItem( - new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant(), - SHRINK_RAY_PROJECTILE, - SizeRayProjectileEntity.SizeRayType.SHRINK, - ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/shrink_ray.geo.json"), - ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/models/item/shrink_ray.png"), - ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/shrink_ray.animation.json"), - "shrink_ray_active" - )); - public static final DeferredItem GROWTH_RAY = ITEMS.register("growth_ray", - () -> new SizeRayItem( - new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant(), - GROWTH_RAY_PROJECTILE, - SizeRayProjectileEntity.SizeRayType.GROWTH, - ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/growth_ray.geo.json"), - ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/models/item/growth_ray.png"), - ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/growth_ray.animation.json"), - "growth_ray_active" - )); - public static final DeferredItem GRAVITY_GUN = ITEMS.register("gravity_gun", - () -> new GravityGunItem(new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant())); - public static final DeferredItem MINERS_DREAM = ITEMS.register("miners_dream", - () -> new MinersDreamItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); - public static final DeferredItem SQUIDZOOKA = ITEMS.register("squidzooka", - () -> new SquidzookaItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.RARE))); - public static final DeferredItem BATTLE_AXE = ITEMS.register("battle_axe", - () -> new BattleAxeItem( - Tiers.NETHERITE, - new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant(), - AntarchySettings::battleAxeAttackDamage, - -3.1F - )); - public static final DeferredHolder, EntityType> DIAMOND_MINECART = ENTITY_TYPES.register("diamond_minecart", - () -> EntityType.Builder.of((entityType, level) -> new DiamondMinecartEntity(entityType, level, diamondMinecartItem()), MobCategory.MISC) - .sized(0.98F, 0.7F) - .clientTrackingRange(8) - .build("diamond_minecart")); - public static final DeferredItem DIAMOND_MINECART_ITEM = ITEMS.register("diamond_minecart", - () -> new DiamondMinecartItem(DIAMOND_MINECART, new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); - public static final DeferredItem REVERIE_BOTTLE = ITEMS.register("reverie_bottle", - () -> new ReverieBottleItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); - public static final DeferredItem BIG_BERTHA_BLADE = ITEMS.registerSimpleItem( - "big_bertha_blade", - new Item.Properties().rarity(Rarity.EPIC).fireResistant() - ); - public static final DeferredItem BIG_BERTHA_HANDLE = ITEMS.registerSimpleItem( - "big_bertha_handle", - new Item.Properties().rarity(Rarity.EPIC).fireResistant() - ); - public static final DeferredItem BIG_BERTHA_HILT = ITEMS.registerSimpleItem( - "big_bertha_hilt", - new Item.Properties().rarity(Rarity.EPIC).fireResistant() - ); - public static final DeferredItem BIG_BERTHA = ITEMS.register("big_bertha", - () -> new BigBerthaItem( - Tiers.NETHERITE, - new Item.Properties() - .stacksTo(1) - .rarity(Rarity.EPIC) - .fireResistant() - )); - - public static final DeferredHolder, EntityType> EASTER_BUNNY = ENTITY_TYPES.register("easter_bunny", - () -> EntityType.Builder.of(EasterBunnyEntity::new, MobCategory.CREATURE) - .sized(0.5F, 1.0F) - .clientTrackingRange(8) - .build("easter_bunny")); - public static final DeferredHolder, EntityType> FLYING_SQUIRREL = ENTITY_TYPES.register("flying_squirrel", - () -> EntityType.Builder.of(FlyingSquirrelEntity::new, MobCategory.CREATURE) - .sized(0.6F, 0.7F) - .clientTrackingRange(8) - .build("flying_squirrel")); - public static final DeferredHolder, EntityType> CATERPILLAR = ENTITY_TYPES.register("caterpillar", - () -> EntityType.Builder.of(CaterpillarEntity::new, MobCategory.CREATURE) - .sized(0.8775F, 0.585F) - .clientTrackingRange(8) - .build("caterpillar")); - public static final DeferredHolder, EntityType> BUTTERFLY = ENTITY_TYPES.register("butterfly", - () -> EntityType.Builder.of(ButterflyEntity::new, MobCategory.AMBIENT) - .sized(1.125F, 1.375F) - .clientTrackingRange(8) - .build("butterfly")); - public static final DeferredHolder, EntityType> REVERIE = ENTITY_TYPES.register("reverie", - () -> EntityType.Builder.of(ReverieEntity::new, MobCategory.AMBIENT) - .sized(0.7F, 0.7F) - .clientTrackingRange(8) - .build("reverie")); - public static final DeferredHolder, EntityType> BRUTALFLY = ENTITY_TYPES.register("brutalfly", - () -> EntityType.Builder.of(BrutalflyEntity::new, MobCategory.MONSTER) - .sized(2.4F, 2.1F) - .clientTrackingRange(12) - .build("brutalfly")); - public static final DeferredHolder, EntityType> APPLE_COW = ENTITY_TYPES.register("apple_cow", - () -> buildCowType(AppleCow::new, "apple_cow")); - public static final DeferredHolder, EntityType> GOLDEN_APPLE_COW = ENTITY_TYPES.register("golden_apple_cow", - () -> buildCowType(GoldenAppleCow::new, "golden_apple_cow")); - public static final DeferredHolder, EntityType> ENCHANTED_GOLDEN_APPLE_COW = ENTITY_TYPES.register("enchanted_golden_apple_cow", - () -> buildCowType(EnchantedGoldenAppleCow::new, "enchanted_golden_apple_cow")); - public static final DeferredHolder, EntityType> DR_TRAYAURUS = ENTITY_TYPES.register("dr_trayaurus", - () -> EntityType.Builder.of(DrTrayaurusEntity::new, MobCategory.MISC) - .sized(0.6F, 1.95F) - .clientTrackingRange(10) - .build("dr_trayaurus")); - public static final DeferredHolder, EntityType> CLOUD_SHARK = ENTITY_TYPES.register("cloud_shark", - () -> EntityType.Builder.of(CloudSharkEntity::new, MobCategory.MONSTER) - .sized(2.4F, 0.9F) - .clientTrackingRange(10) - .build("cloud_shark")); - public static final DeferredHolder, EntityType> KRAKEN = ENTITY_TYPES.register("kraken", - () -> EntityType.Builder.of(KrakenEntity::new, MobCategory.MONSTER) - .sized(11.4F, 39.0F) - .clientTrackingRange(12) - .build("kraken")); - public static final DeferredHolder, EntityType> KRAKEN_PART = ENTITY_TYPES.register("kraken_part", - () -> EntityType.Builder.of( - com.craisinlord.antarchy.fabric.entity.multipart.MultipartPartEntity::new, - MobCategory.MISC - ) - .sized(1.0F, 1.0F) - .clientTrackingRange(12) - .updateInterval(1) - .build("kraken_part")); - public static final DeferredHolder, EntityType> MISSILE_SQUID = ENTITY_TYPES.register("missile_squid", - () -> EntityType.Builder.of(MissileSquidEntity::new, MobCategory.MONSTER) - .sized(1.62F, 3.18F) - .clientTrackingRange(10) - .build("missile_squid")); - public static final DeferredHolder, EntityType> OCTOPUS_BOMB = ENTITY_TYPES.register("octopus_bomb", - () -> EntityType.Builder.of(OctopusBombEntity::new, MobCategory.MONSTER) - .sized(2.4F, 2.9F) - .clientTrackingRange(10) - .build("octopus_bomb")); - public static final DeferredHolder, EntityType> NIGHTMARE = ENTITY_TYPES.register("nightmare", - () -> EntityType.Builder.of(NightmareEntity::new, MobCategory.MONSTER) - .sized(3.2F, 3.8F) - .clientTrackingRange(12) - .build("nightmare")); - public static final DeferredHolder, EntityType> LUCID = ENTITY_TYPES.register("lucid", - () -> EntityType.Builder.of(LucidEntity::new, MobCategory.MONSTER) - .sized(2.0F, 2.0F) - .clientTrackingRange(10) - .build("lucid")); - public static final DeferredHolder, EntityType> LUCID_BOLT = ENTITY_TYPES.register("lucid_bolt", - () -> EntityType.Builder.of(LucidBoltEntity::new, MobCategory.MISC) - .sized(0.3F, 0.3F) - .clientTrackingRange(8) - .updateInterval(1) - .build("lucid_bolt")); - public static final DeferredHolder, EntityType> SCORPION = ENTITY_TYPES.register("scorpion", - () -> EntityType.Builder.of(ScorpionEntity::new, MobCategory.MONSTER) - .sized(1.5F, 1.0F) - .clientTrackingRange(8) - .build("scorpion")); - public static final DeferredHolder, EntityType> BASILISK = ENTITY_TYPES.register("basilisk", - () -> EntityType.Builder.of(BasiliskEntity::new, MobCategory.MONSTER) - .sized(3.0F, 3.5F) - .clientTrackingRange(14) - .build("basilisk")); - public static final DeferredHolder, EntityType> EMPEROR_SCORPION = ENTITY_TYPES.register("emperor_scorpion", - () -> EntityType.Builder.of(EmperorScorpionEntity::new, MobCategory.MONSTER) - .sized(6.0F, 3.0F) - .clientTrackingRange(12) - .build("emperor_scorpion")); - public static final DeferredHolder, EntityType> LUCID_PEARL_PROJECTILE = ENTITY_TYPES.register("lucid_pearl_projectile", - () -> EntityType.Builder.of(LucidEyeProjectileEntity::new, MobCategory.MISC) - .sized(0.25F, 0.25F) - .clientTrackingRange(8) - .updateInterval(1) - .build("lucid_pearl_projectile")); - public static final DeferredHolder, EntityType> HUSH_PROJECTILE = ENTITY_TYPES.register("hush_projectile", - () -> EntityType.Builder.of(HushProjectileEntity::new, MobCategory.MISC) - .sized(0.35F, 0.35F) - .clientTrackingRange(8) - .updateInterval(1) - .build("hush_projectile")); - public static final DeferredHolder, EntityType> BRUTALFLY_ORB = ENTITY_TYPES.register("brutalfly_orb", - () -> EntityType.Builder.of(BrutalflyOrbEntity::new, MobCategory.MISC) - .sized(0.75F, 0.75F) - .clientTrackingRange(10) - .updateInterval(1) - .build("brutalfly_orb")); - public static final DeferredHolder, EntityType> UPWARD_FALLING_BLOCK = ENTITY_TYPES.register("upward_falling_block", - () -> EntityType.Builder.of( - com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity::new, MobCategory.MISC) - .sized(0.98F, 0.98F) - .clientTrackingRange(10) - .updateInterval(1) - .build("upward_falling_block")); - - public static final DeferredItem EASTER_BUNNY_SPAWN_EGG = ITEMS.register("easter_bunny_spawn_egg", - () -> new DeferredSpawnEggItem(EASTER_BUNNY, 0xFFF2B2, 0xFF85B5, new Item.Properties())); - public static final DeferredItem FLYING_SQUIRREL_SPAWN_EGG = ITEMS.register("flying_squirrel_spawn_egg", - () -> new DeferredSpawnEggItem(FLYING_SQUIRREL, 0x7D6649, 0xDCC59C, new Item.Properties())); - public static final DeferredItem CATERPILLAR_SPAWN_EGG = ITEMS.register("caterpillar_spawn_egg", - () -> new DeferredSpawnEggItem(CATERPILLAR, 0xA8D96A, 0xF4E04D, new Item.Properties())); - public static final DeferredItem BUTTERFLY_SPAWN_EGG = ITEMS.register("butterfly_spawn_egg", - () -> new DeferredSpawnEggItem(BUTTERFLY, 0x7A4A1E, 0xFF7A00, new Item.Properties())); - public static final DeferredItem REVERIE_SPAWN_EGG = ITEMS.register("reverie_spawn_egg", - () -> new DeferredSpawnEggItem(REVERIE, 0xF2F2F2, 0xBFC3C7, new Item.Properties())); - public static final DeferredItem BRUTALFLY_SPAWN_EGG = ITEMS.register("brutalfly_spawn_egg", - () -> new DeferredSpawnEggItem(BRUTALFLY, 0x4A2214, 0xFF8A1D, new Item.Properties().rarity(Rarity.EPIC))); - public static final DeferredItem RED_ANT_SPAWN_EGG = ITEMS.register("red_ant_spawn_egg", - () -> new DeferredSpawnEggItem(RED_ANT, 0xA31818, 0x2B0909, new Item.Properties())); - public static final DeferredItem BROWN_ANT_SPAWN_EGG = ITEMS.register("brown_ant_spawn_egg", - () -> new DeferredSpawnEggItem(BROWN_ANT, 0x6A4320, 0x26160A, new Item.Properties())); - public static final DeferredItem RAINBOW_ANT_SPAWN_EGG = ITEMS.register("rainbow_ant_spawn_egg", - () -> new DeferredSpawnEggItem(RAINBOW_ANT, 0x56D4F0, 0xF66DBB, new Item.Properties())); - public static final DeferredItem MOLEWORM_SPAWN_EGG = ITEMS.register("moleworm_spawn_egg", - () -> new DeferredSpawnEggItem(MOLEWORM, 0xB8B8B8, 0x8A623A, new Item.Properties())); - public static final DeferredItem MANTIS_SPAWN_EGG = ITEMS.register("mantis_spawn_egg", - () -> new DeferredSpawnEggItem(MANTIS, 0xF8F8F2, 0x63B44A, new Item.Properties())); - public static final DeferredItem ALPHA_MANTIS_SPAWN_EGG = ITEMS.register("alpha_mantis_spawn_egg", - () -> new DeferredSpawnEggItem(ALPHA_MANTIS, 0x8FDD6C, 0x2F5D22, new Item.Properties())); - public static final DeferredItem MOLEVORE_SPAWN_EGG = ITEMS.register("molevore_spawn_egg", - () -> new DeferredSpawnEggItem(MOLEVORE, 0x4A4A4A, 0x6B4A2B, new Item.Properties().rarity(Rarity.UNCOMMON))); - public static final DeferredItem TRIFFID_SPAWN_EGG = ITEMS.register("triffid_spawn_egg", - () -> new DeferredSpawnEggItem(TRIFFID, 0x4C8F3A, 0xFF2FB3, new Item.Properties().rarity(Rarity.UNCOMMON))); - public static final DeferredItem APPLE_COW_SPAWN_EGG = ITEMS.register("apple_cow_spawn_egg", - () -> new DeferredSpawnEggItem(APPLE_COW, 0xFF1A1A, 0x32FF32, new Item.Properties())); - public static final DeferredItem GOLDEN_APPLE_COW_SPAWN_EGG = ITEMS.register("golden_apple_cow_spawn_egg", - () -> new DeferredSpawnEggItem(GOLDEN_APPLE_COW, 0xFFE14A, 0x32FF32, new Item.Properties())); - public static final DeferredItem ENCHANTED_GOLDEN_APPLE_COW_SPAWN_EGG = ITEMS.register("enchanted_golden_apple_cow_spawn_egg", - () -> new DeferredSpawnEggItem(ENCHANTED_GOLDEN_APPLE_COW, 0x7040B6, 0xFFE14A, new Item.Properties())); - public static final DeferredItem DR_TRAYAURUS_SPAWN_EGG = ITEMS.register("dr_trayaurus_spawn_egg", - () -> new DeferredSpawnEggItem(DR_TRAYAURUS, 0xB7A27B, 0x4A3D29, new Item.Properties())); - public static final DeferredItem WASP_SPAWN_EGG = ITEMS.register("wasp_spawn_egg", - () -> new DeferredSpawnEggItem(WASP, 0x111111, 0xF1D800, new Item.Properties())); - public static final DeferredItem BOMBER_SPAWN_EGG = ITEMS.register("bomber_spawn_egg", - () -> new DeferredSpawnEggItem(BOMBER, 0x7A7A7A, 0xB32020, new Item.Properties())); - public static final DeferredItem CLOUD_SHARK_SPAWN_EGG = ITEMS.register("cloud_shark_spawn_egg", - () -> new DeferredSpawnEggItem(CLOUD_SHARK, 0xDDEAF4, 0x7F96A8, new Item.Properties())); - public static final DeferredItem KRAKEN_SPAWN_EGG = ITEMS.register("kraken_spawn_egg", - () -> new DeferredSpawnEggItem(KRAKEN, 0x163C53, 0x4F8E99, new Item.Properties().rarity(Rarity.EPIC))); - public static final DeferredItem MISSILE_SQUID_SPAWN_EGG = ITEMS.register("missile_squid_spawn_egg", - () -> new DeferredSpawnEggItem(MISSILE_SQUID, 0xD88FA7, 0x8D5269, new Item.Properties().rarity(Rarity.UNCOMMON))); - public static final DeferredItem OCTOPUS_BOMB_SPAWN_EGG = ITEMS.register("octopus_bomb_spawn_egg", - () -> new DeferredSpawnEggItem(OCTOPUS_BOMB, 0xC882C8, 0x5C1A7A, new Item.Properties().rarity(Rarity.UNCOMMON))); - public static final DeferredItem NIGHTMARE_SPAWN_EGG = ITEMS.register("nightmare_spawn_egg", - () -> new DeferredSpawnEggItem(NIGHTMARE, 0x22121C, 0xB51B2D, new Item.Properties().rarity(Rarity.RARE))); - public static final DeferredItem BED_BUG_SPAWN_EGG = ITEMS.register("bed_bug_spawn_egg", - () -> new DeferredSpawnEggItem(BED_BUG, 0x3B2218, 0x611111, new Item.Properties())); - public static final DeferredItem LUCID_SPAWN_EGG = ITEMS.register("lucid_spawn_egg", - () -> new DeferredSpawnEggItem(LUCID, 0xE53935, 0xF4D03F, new Item.Properties().rarity(Rarity.RARE))); - public static final DeferredItem SCORPION_SPAWN_EGG = ITEMS.register("scorpion_spawn_egg", - () -> new DeferredSpawnEggItem(SCORPION, 0xA8D8FF, 0xE04B5A, new Item.Properties())); - public static final DeferredItem BASILISK_SPAWN_EGG = ITEMS.register("basilisk_spawn_egg", - () -> new DeferredSpawnEggItem(BASILISK, 0x4A7C40, 0xD4A040, new Item.Properties())); - public static final DeferredItem EMPEROR_SCORPION_SPAWN_EGG = ITEMS.register("emperor_scorpion_spawn_egg", - () -> new DeferredSpawnEggItem(EMPEROR_SCORPION, 0x3A3242, 0xD8CDB4, new Item.Properties())); - public static final DeferredItem LUCID_EYE = ITEMS.register("lucid_eye", - () -> new LucidEyeItem(new Item.Properties().stacksTo(16).rarity(Rarity.UNCOMMON))); - public static final DeferredItem LUCID_PEARL = ITEMS.register("lucid_pearl", - () -> new LucidPearlItem( - new Item.Properties().stacksTo(16).rarity(Rarity.UNCOMMON), - LUCID_PEARL_PROJECTILE - )); - public static final DeferredItem WATER_CANNON = ITEMS.register("water_cannon", - () -> new WaterCannonItem(new Item.Properties().stacksTo(1).durability(192).rarity(Rarity.RARE))); - public static final DeferredItem PRIMORDIAL_HELMET = ITEMS.register("primordial_helmet", - () -> new PrimordialArmorItem(net.minecraft.core.Holder.direct(PRIMORDIAL_ARMOR_MATERIAL.get()), ArmorItem.Type.HELMET, - new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant().durability(ArmorItem.Type.HELMET.getDurability(37)))); - public static final DeferredItem PRIMORDIAL_CHESTPLATE = ITEMS.register("primordial_chestplate", - () -> new PrimordialArmorItem(net.minecraft.core.Holder.direct(PRIMORDIAL_ARMOR_MATERIAL.get()), ArmorItem.Type.CHESTPLATE, - new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant().durability(ArmorItem.Type.CHESTPLATE.getDurability(37)))); - public static final DeferredItem PRIMORDIAL_LEGGINGS = ITEMS.register("primordial_leggings", - () -> new PrimordialArmorItem(net.minecraft.core.Holder.direct(PRIMORDIAL_ARMOR_MATERIAL.get()), ArmorItem.Type.LEGGINGS, - new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant().durability(ArmorItem.Type.LEGGINGS.getDurability(37)))); - public static final DeferredItem PRIMORDIAL_BOOTS = ITEMS.register("primordial_boots", - () -> new PrimordialArmorItem(net.minecraft.core.Holder.direct(PRIMORDIAL_ARMOR_MATERIAL.get()), ArmorItem.Type.BOOTS, - new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant().durability(ArmorItem.Type.BOOTS.getDurability(37)))); - public static final DeferredHolder, EntityType> TORETERROR = ENTITY_TYPES.register("toreterror", - () -> EntityType.Builder.of(ToreterrorEntity::new, MobCategory.MONSTER) - .sized(2.0F, 3.0F) - .clientTrackingRange(14) - .build("toreterror")); - public static final DeferredHolder, EntityType> WATER_BOMB = ENTITY_TYPES.register("water_bomb", - () -> EntityType.Builder.of(WaterBombEntity::new, MobCategory.MISC) - .sized(0.4F, 0.4F) - .clientTrackingRange(8) - .updateInterval(1) - .build("water_bomb")); - public static final DeferredItem TORETERROR_SPAWN_EGG = ITEMS.register("toreterror_spawn_egg", - () -> new DeferredSpawnEggItem(TORETERROR, 0x90EE90, 0x5C4033, new Item.Properties().rarity(Rarity.EPIC))); - - public static final DeferredHolder, EntityType> CHEEP = ENTITY_TYPES.register("cheep", - () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.CheepEntity::new, MobCategory.WATER_AMBIENT) - .sized(1.0F, 1.2F) - .clientTrackingRange(8) - .build("cheep")); - public static final DeferredItem CHEEP_SPAWN_EGG = ITEMS.register("cheep_spawn_egg", - () -> new DeferredSpawnEggItem(CHEEP, 0xFF00AA, 0x00FF44, new Item.Properties())); - - public static final DeferredHolder, EntityType> DORRIE = ENTITY_TYPES.register("dorrie", - () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.DorrieEntity::new, MobCategory.CREATURE) - .sized(1.6F, 1.4F) - .clientTrackingRange(10) - .build("dorrie")); - public static final DeferredHolder, EntityType> OURANWOOD_DEER = ENTITY_TYPES.register("ouranwood_deer", - () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity::new, MobCategory.CREATURE) - .sized(0.9F, 1.4F) - .clientTrackingRange(8) - .build("ouranwood_deer")); - public static final DeferredHolder, EntityType> GLIMMER = ENTITY_TYPES.register("glimmer", - () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity::new, MobCategory.CREATURE) - .sized(0.9F, 1.4F) - .clientTrackingRange(8) - .build("glimmer")); - public static final DeferredHolder, EntityType> ELKA = ENTITY_TYPES.register("elka", - () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.ElkaEntity::new, MobCategory.CREATURE) - .sized(2.2F, 3.5F) - .clientTrackingRange(10) - .build("elka")); - public static final DeferredItem DORRIE_SPAWN_EGG = ITEMS.register("dorrie_spawn_egg", - () -> new DeferredSpawnEggItem(DORRIE, 0x6F8CFF, 0xD2F2FF, new Item.Properties())); - public static final DeferredItem OURANWOOD_DEER_SPAWN_EGG = ITEMS.register("ouranwood_deer_spawn_egg", - () -> new DeferredSpawnEggItem(OURANWOOD_DEER, 0x8A6D4B, 0xE8D9B5, new Item.Properties())); - public static final DeferredItem GLIMMER_SPAWN_EGG = ITEMS.register("glimmer_spawn_egg", - () -> new DeferredSpawnEggItem(GLIMMER, 0x7DFFFF, 0x2AC7D0, new Item.Properties())); - public static final DeferredItem ELKA_SPAWN_EGG = ITEMS.register("elka_spawn_egg", - () -> new DeferredSpawnEggItem(ELKA, 0x6B2FA0, 0xFFFFFF, new Item.Properties())); - public static final DeferredItem SPIRIT_APPLE = ITEMS.register("spirit_apple", - () -> new com.craisinlord.antarchy.content.item.SpiritAppleItem(new Item.Properties() - .food(new FoodProperties.Builder() - .nutrition(4) - .saturationModifier(0.3F) - .build()))); - public static final DeferredItem GLIMMER_BOTTLE = ITEMS.register("glimmer_bottle", - com.craisinlord.antarchy.content.item.GlimmerBottleItem::new); - - public static final DeferredHolder ANTARCHY_TAB = CREATIVE_MODE_TABS.register("antarchy", - () -> CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) - .title(net.minecraft.network.chat.Component.translatable("itemGroup.antarchy.antarchy")) - .icon(() -> new ItemStack(GRAVITY_GUN.get())) - .displayItems((parameters, output) -> populateCreativeTab(output)) - .build()); - - private static EntityType buildCowType(EntityType.EntityFactory factory, String name) { - return EntityType.Builder.of(factory, MobCategory.CREATURE) - .sized(0.9F, 1.4F) - .clientTrackingRange(10) - .build(name); - } - - private static EntityType buildAntType(EntityType.EntityFactory factory, MobCategory category, String name) { - return EntityType.Builder.of(factory, category) - .sized(0.6375F, 0.2125F) - .clientTrackingRange(8) - .build(name); - } - - private static AttributeSupplier.Builder buildAntAttributes(double health, double speed, double attackDamage) { - return net.minecraft.world.entity.Mob.createMobAttributes() - .add(Attributes.MAX_HEALTH, health) - .add(Attributes.MOVEMENT_SPEED, speed) - .add(Attributes.ATTACK_DAMAGE, attackDamage); - } - - private static Holder mobEffectHolder(DeferredHolder effect) { - return BuiltInRegistries.MOB_EFFECT.wrapAsHolder(effect.get()); - } - - private static Holder attributeHolder(DeferredHolder attribute) { - return BuiltInRegistries.ATTRIBUTE.wrapAsHolder(attribute.get()); - } - - private static Holder potionHolder(DeferredHolder potion) { + public static Holder potionHolder(DeferredHolder potion) { return BuiltInRegistries.POTION.wrapAsHolder(potion.get()); } - private static Holder armorMaterialHolder(DeferredHolder material) { - return BuiltInRegistries.ARMOR_MATERIAL.wrapAsHolder(material.get()); - } - private static void registerEntityAttributes() { - FabricDefaultAttributeRegistry.register( - net.minecraft.world.entity.EntityType.PLAYER, - net.minecraft.world.entity.player.Player.createAttributes() - .add(attributeHolder(DOUBLE_DAMAGE_CHANCE)) - .add(attributeHolder(BLOODGLASS_MAX_HEARTS)) - .build() - ); - - AttributeSupplier rabbitAttributes = Rabbit.createAttributes().build(); - FabricDefaultAttributeRegistry.register(EASTER_BUNNY.get(), rabbitAttributes); - FabricDefaultAttributeRegistry.register(FLYING_SQUIRREL.get(), FlyingSquirrelEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(CATERPILLAR.get(), CaterpillarEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(BUTTERFLY.get(), ButterflyEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(REVERIE.get(), ReverieEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(BRUTALFLY.get(), BrutalflyEntity.createAttributes().build()); - - AttributeSupplier cowAttributes = Cow.createAttributes().build(); - FabricDefaultAttributeRegistry.register(APPLE_COW.get(), cowAttributes); - FabricDefaultAttributeRegistry.register(GOLDEN_APPLE_COW.get(), cowAttributes); - FabricDefaultAttributeRegistry.register(ENCHANTED_GOLDEN_APPLE_COW.get(), cowAttributes); - FabricDefaultAttributeRegistry.register(DR_TRAYAURUS.get(), Villager.createAttributes().build()); - FabricDefaultAttributeRegistry.register(CLOUD_SHARK.get(), CloudSharkEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(KRAKEN.get(), KrakenEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(MISSILE_SQUID.get(), MissileSquidEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(OCTOPUS_BOMB.get(), OctopusBombEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(NIGHTMARE.get(), NightmareEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(BED_BUG.get(), BedBugEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(WASP.get(), WaspEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(BOMBER.get(), BomberEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(MANTIS.get(), MantisEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(ALPHA_MANTIS.get(), AlphaMantisEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(TRIFFID.get(), TriffidEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(LUCID.get(), LucidEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(SCORPION.get(), ScorpionEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(BASILISK.get(), BasiliskEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(EMPEROR_SCORPION.get(), EmperorScorpionEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(TORETERROR.get(), ToreterrorEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(CHEEP.get(), com.craisinlord.antarchy.content.entity.CheepEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(DORRIE.get(), com.craisinlord.antarchy.content.entity.DorrieEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(OURANWOOD_DEER.get(), com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(GLIMMER.get(), com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(ELKA.get(), com.craisinlord.antarchy.content.entity.ElkaEntity.createAttributes().build()); - - FabricDefaultAttributeRegistry.register(RED_ANT.get(), buildAntAttributes( - AntarchySettings.redAntHealth(), - AntarchySettings.redAntMovementSpeed(), - AntarchySettings.redAntAttackDamage() - ).build()); - FabricDefaultAttributeRegistry.register(BROWN_ANT.get(), buildAntAttributes( - AntarchySettings.brownAntHealth(), - AntarchySettings.brownAntMovementSpeed(), - AntarchySettings.brownAntAttackDamage() - ).build()); - FabricDefaultAttributeRegistry.register(RAINBOW_ANT.get(), buildAntAttributes( - AntarchySettings.rainbowAntHealth(), - AntarchySettings.rainbowAntMovementSpeed(), - AntarchySettings.rainbowAntAttackDamage() - ).build()); - FabricDefaultAttributeRegistry.register(MOLEWORM.get(), MolewormEntity.createAttributes().build()); - FabricDefaultAttributeRegistry.register(MOLEVORE.get(), MolevoreEntity.createAttributes().build()); - } - - private static void registerSpawnPlacements() { - SpawnPlacements.register(FLYING_SQUIRREL.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING, FlyingSquirrelEntity::canSpawn); - SpawnPlacements.register(CATERPILLAR.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CaterpillarEntity::canSpawn); - SpawnPlacements.register(BUTTERFLY.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ButterflyEntity::canSpawn); - SpawnPlacements.register(REVERIE.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ReverieEntity::canSpawn); - SpawnPlacements.register(BRUTALFLY.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules); - SpawnPlacements.register(APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules); - SpawnPlacements.register(GOLDEN_APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules); - SpawnPlacements.register(ENCHANTED_GOLDEN_APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules); - SpawnPlacements.register(CLOUD_SHARK.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CloudSharkEntity::canSpawn); - SpawnPlacements.register(WASP.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, WaspEntity::canSpawn); - SpawnPlacements.register(BOMBER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BomberEntity::canSpawn); - SpawnPlacements.register(KRAKEN.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, KrakenEntity::canSpawn); - SpawnPlacements.register(MISSILE_SQUID.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MissileSquidEntity::canSpawn); - SpawnPlacements.register(OCTOPUS_BOMB.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, OctopusBombEntity::canSpawn); - SpawnPlacements.register(CHEEP.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.AbstractFish::checkSurfaceWaterAnimalSpawnRules); - SpawnPlacements.register(DORRIE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules); - SpawnPlacements.register(OURANWOOD_DEER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules); - SpawnPlacements.register(GLIMMER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules); - SpawnPlacements.register(ELKA.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules); - SpawnPlacements.register(NIGHTMARE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, NightmareEntity::canSpawn); - SpawnPlacements.register(MOLEWORM.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolewormEntity::canSpawn); - SpawnPlacements.register(MANTIS.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MantisEntity::canSpawn); - SpawnPlacements.register(ALPHA_MANTIS.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, AlphaMantisEntity::checkAlphaMantisSpawnRules); - SpawnPlacements.register(MOLEVORE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolevoreEntity::canSpawn); - SpawnPlacements.register(BED_BUG.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BedBugEntity::canSpawn); - SpawnPlacements.register(LUCID.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, LucidEntity::canSpawn); - SpawnPlacements.register(SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ScorpionEntity::canSpawn); - SpawnPlacements.register(BASILISK.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BasiliskEntity::canSpawn); - SpawnPlacements.register(EMPEROR_SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EmperorScorpionEntity::canSpawn); - SpawnPlacements.register(TORETERROR.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ToreterrorEntity::canSpawn); - } - - private static void populateCreativeTab(CreativeModeTab.Output output) { - ArrayList sortedItems = new ArrayList<>(); - for (var holder : ITEMS.getEntries()) { - Item item = holder.get(); - if (item != Items.AIR && item != GLIMMER_BOTTLE.get()) { - sortedItems.add(item); - } - } - sortedItems.sort(CreativeTabOrder.COMPARATOR); - addGlimmerBottleVariants(output); - sortedItems.forEach(output::accept); - addPotionVariants(output); - } - - private static void addGlimmerBottleVariants(CreativeModeTab.Output output) { - for (com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant variant : com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.values()) { - output.accept(com.craisinlord.antarchy.content.item.GlimmerBottleItem.create(variant)); - } - } - - private static void addPotionVariants(CreativeModeTab.Output output) { - acceptPotionFamily(output, DREAD_POTION); - acceptPotionFamily(output, LONG_DREAD); - acceptPotionFamily(output, INVERSION); - acceptPotionFamily(output, LONG_INVERSION); - acceptPotionFamily(output, STINKY_POTION); - acceptPotionFamily(output, LONG_STINKY); - acceptPotionFamily(output, PARALYSIS); - acceptPotionFamily(output, LONG_PARALYSIS); - acceptPotionFamily(output, HASTE); - acceptPotionFamily(output, STRONG_HASTE); - acceptPotionFamily(output, SHRINKING); - acceptPotionFamily(output, STRONG_SHRINKING); - acceptPotionFamily(output, EXTREME_SHRINKING); - acceptPotionFamily(output, GROWING); - acceptPotionFamily(output, STRONG_GROWING); - acceptPotionFamily(output, EXTREME_GROWING); - } - - private static void acceptPotionFamily(CreativeModeTab.Output output, DeferredHolder potion) { - Holder holder = potionHolder(potion); - output.accept(PotionContents.createItemStack(Items.POTION, holder)); - output.accept(PotionContents.createItemStack(Items.SPLASH_POTION, holder)); - output.accept(PotionContents.createItemStack(Items.LINGERING_POTION, holder)); - output.accept(PotionContents.createItemStack(Items.TIPPED_ARROW, holder)); - } - - private static int creativeTabGroup(Item item) { - return CreativeTabOrder.group(item); - } - - private static int creativeTabSubOrder(Item item) { - return CreativeTabOrder.subOrder(item); - } - - private static BlockEntityType antNestBlockEntityType() { - return ANT_NEST_BLOCK_ENTITY.get(); - } - - private static BlockEntityType waspNestBlockEntityType() { - return WASP_NEST_BLOCK_ENTITY.get(); - } - - private static BlockEntityType potentNyxiteBlockEntityType() { - return POTENT_NYXITE_BLOCK_ENTITY.get(); - } - - private static Block smallBloodCrystalBudBlock() { - return SMALL_BLOOD_CRYSTAL_BUD.get(); - } - - private static Item cloudBucketItem() { - return CLOUD_BUCKET.get(); - } - - private static Block mediumBloodCrystalBudBlock() { - return MEDIUM_BLOOD_CRYSTAL_BUD.get(); - } - - private static Block largeBloodCrystalBudBlock() { - return LARGE_BLOOD_CRYSTAL_BUD.get(); - } - - private static Block bloodCrystalCrystalBlock() { - return BLOOD_CRYSTAL_CRYSTAL.get(); - } - - // private static OuranwoodVinePlantBlock createOuranwoodVinePlant() { - // OuranwoodVinePlantBlock.bindHeadBlock(OURANWOOD_VINE_INSTANCE); - // OuranwoodVinePlantBlock block = new OuranwoodVinePlantBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.WEEPING_VINES_PLANT)); - // OuranwoodVineBlock.bindBodyBlock(block); - // return block; - // } - - private static Block createDirtOre(Block copyFrom) { - return new Block(dirtOreProperties()); - } - - private static Block createDirtOre(Block copyFrom, int minExperience, int maxExperience) { - return new DropExperienceBlock(UniformInt.of(minExperience, maxExperience), dirtOreProperties()); - } - - private static BlockBehaviour.Properties dirtOreProperties() { - return BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT) - .sound(SoundType.ROOTED_DIRT) - .strength(0.65F, 0.8F) - .requiresCorrectToolForDrops(); - } - - private static BlockBehaviour.Properties nyxiteProperties() { - return BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK); - } - - private static BlockBehaviour.Properties portalProperties() { - return BlockBehaviour.Properties.of() - .strength(-1.0F) - .noCollission() - .noOcclusion() - .lightLevel(state -> 11) - .noLootTable() - .isSuffocating((state, level, pos) -> false) - .isViewBlocking((state, level, pos) -> false); - } - - private static Block createOre(Block copyFrom) { - return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); - } - - private static Block createOre(Block copyFrom, int minExperience, int maxExperience) { - return new DropExperienceBlock(UniformInt.of(minExperience, maxExperience), BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); - } - - private static Block createStorageBlock(Block copyFrom) { - return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); - } - - private static Block createHorizontalFacingStorageBlock(Block copyFrom) { - return new SimpleHorizontalFacingBlock(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); - } - - private static final class SimpleHorizontalFacingBlock extends HorizontalDirectionalBlock { - private static final MapCodec CODEC = simpleCodec(SimpleHorizontalFacingBlock::new); - - private SimpleHorizontalFacingBlock(BlockBehaviour.Properties properties) { - super(properties); - registerDefaultState(stateDefinition.any().setValue(FACING, Direction.NORTH)); - } - - @Override - protected MapCodec codec() { - return CODEC; - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { - builder.add(FACING); - } - - @Override - public BlockState getStateForPlacement(BlockPlaceContext context) { - return defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); - } - - @Override - protected BlockState rotate(BlockState state, Rotation rotation) { - return state.setValue(FACING, rotation.rotate(state.getValue(FACING))); - } - - @Override - protected BlockState mirror(BlockState state, Mirror mirror) { - return state.rotate(mirror.getRotation(state.getValue(FACING))); - } - } - - private static Block createRawStorageBlock(Block copyFrom) { - return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom) - .strength(3.5F, 6.0F) - .requiresCorrectToolForDrops()); - } - - private static Item diamondMinecartItem() { - return DIAMOND_MINECART_ITEM.get(); - } - - - private static DeferredHolder registerSoundEvent(String path) { - return SOUND_EVENTS.register(path, - () -> SoundEvent.createVariableRangeEvent(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path))); - } private static boolean isModLoaded(String modId) { return FabricLoader.getInstance().isModLoaded(modId); } - private static Ingredient bloodCrystalRepairIngredient() { - return Ingredient.of(BuiltInRegistries.ITEM.getOptional(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "blood_crystal_shard")) - .orElse(Items.AIR)); - } - private static Ingredient ultimateRepairIngredient() { - return Ingredient.of(TITANIUM_INGOT.get()); - } - private static java.util.EnumMap createUltimateArmorDefense() { - java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); - defense.put(ArmorItem.Type.BOOTS, 6); - defense.put(ArmorItem.Type.LEGGINGS, 12); - defense.put(ArmorItem.Type.CHESTPLATE, 16); - defense.put(ArmorItem.Type.HELMET, 6); - defense.put(ArmorItem.Type.BODY, 16); - return defense; - } - - private static java.util.EnumMap createNightmareArmorDefense() { - java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); - defense.put(ArmorItem.Type.BOOTS, 4); - defense.put(ArmorItem.Type.LEGGINGS, 9); - defense.put(ArmorItem.Type.CHESTPLATE, 11); - defense.put(ArmorItem.Type.HELMET, 4); - defense.put(ArmorItem.Type.BODY, 11); - return defense; - } - - private static java.util.EnumMap createJumpyBootsDefense() { - java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); - defense.put(ArmorItem.Type.BOOTS, 3); - defense.put(ArmorItem.Type.LEGGINGS, 0); - defense.put(ArmorItem.Type.CHESTPLATE, 0); - defense.put(ArmorItem.Type.HELMET, 0); - defense.put(ArmorItem.Type.BODY, 0); - return defense; - } - - private static java.util.EnumMap createBloodCrystalArmorDefense() { - java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); - defense.put(ArmorItem.Type.BOOTS, 2); - defense.put(ArmorItem.Type.LEGGINGS, 5); - defense.put(ArmorItem.Type.CHESTPLATE, 6); - defense.put(ArmorItem.Type.HELMET, 2); - defense.put(ArmorItem.Type.BODY, 6); - return defense; - } - - private static java.util.EnumMap createMogglesArmorDefense() { - java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); - defense.put(ArmorItem.Type.BOOTS, 0); - defense.put(ArmorItem.Type.LEGGINGS, 0); - defense.put(ArmorItem.Type.CHESTPLATE, 0); - defense.put(ArmorItem.Type.HELMET, 2); - defense.put(ArmorItem.Type.BODY, 2); - return defense; - } - - private static java.util.EnumMap createPrimordialArmorDefense() { - java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); - defense.put(ArmorItem.Type.BOOTS, 3); - defense.put(ArmorItem.Type.LEGGINGS, 6); - defense.put(ArmorItem.Type.CHESTPLATE, 8); - defense.put(ArmorItem.Type.HELMET, 3); - defense.put(ArmorItem.Type.BODY, 8); - return defense; - } - - private static java.util.EnumMap createFallenKingCrownDefense() { - java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); - defense.put(ArmorItem.Type.BOOTS, 0); - defense.put(ArmorItem.Type.LEGGINGS, 0); - defense.put(ArmorItem.Type.CHESTPLATE, 0); - defense.put(ArmorItem.Type.HELMET, 2); - defense.put(ArmorItem.Type.BODY, 2); - return defense; - } - - private static SimpleParticleType simpleParticleType() { - return new SimpleParticleType(true) { - }; - } - - private static ParticleType particleType( - java.util.function.Function, com.mojang.serialization.MapCodec> codecFactory, - java.util.function.Function, net.minecraft.network.codec.StreamCodec> streamCodecFactory - ) { - return new ParticleType<>(false) { - @Override - public com.mojang.serialization.MapCodec codec() { - return codecFactory.apply(this); - } - - @Override - public net.minecraft.network.codec.StreamCodec streamCodec() { - return streamCodecFactory.apply(this); - } - }; - } - - private static net.minecraft.world.level.material.FlowingFluid lookupFlowingFluid(String path) { + public static net.minecraft.world.level.material.FlowingFluid lookupFlowingFluid(String path) { return (net.minecraft.world.level.material.FlowingFluid) BuiltInRegistries.FLUID.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)); } - private static Item lookupItem(String path) { + + + public static Item lookupItem(String path) { return BuiltInRegistries.ITEM.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)); } - private static LiquidBlock lookupLiquidBlock(String path) { + + + public static LiquidBlock lookupLiquidBlock(String path) { return (LiquidBlock) BuiltInRegistries.BLOCK.get(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path)); } + + public static void register() { - com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity.TYPE = UPWARD_FALLING_BLOCK; + com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity.TYPE = AntarchyFabricEntities.UPWARD_FALLING_BLOCK; FabricBrewingRecipeRegistryBuilder.BUILD.register(builder -> { - builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(LUCID_EYE.get()), potionHolder(INVERSION)); - builder.registerPotionRecipe(potionHolder(INVERSION), Ingredient.of(Items.REDSTONE), potionHolder(LONG_INVERSION)); - builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(STINK_BUG_ITEM.get()), potionHolder(STINKY_POTION)); - builder.registerPotionRecipe(potionHolder(STINKY_POTION), Ingredient.of(Items.REDSTONE), potionHolder(LONG_STINKY)); - builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(BASILISK_FANG.get()), potionHolder(PARALYSIS)); - builder.registerPotionRecipe(potionHolder(PARALYSIS), Ingredient.of(Items.REDSTONE), potionHolder(LONG_PARALYSIS)); - builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(MOLEWORM_ITEM.get()), potionHolder(HASTE)); - builder.registerPotionRecipe(potionHolder(HASTE), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(STRONG_HASTE)); - builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(URANIUM_NUGGET.get()), potionHolder(SHRINKING)); - builder.registerPotionRecipe(potionHolder(SHRINKING), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(STRONG_SHRINKING)); - builder.registerPotionRecipe(potionHolder(STRONG_SHRINKING), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(EXTREME_SHRINKING)); - builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(TITANIUM_NUGGET.get()), potionHolder(GROWING)); - builder.registerPotionRecipe(potionHolder(GROWING), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(STRONG_GROWING)); - builder.registerPotionRecipe(potionHolder(STRONG_GROWING), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(EXTREME_GROWING)); - builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(CLOUD_SHARK_FIN.get()), net.minecraft.world.item.alchemy.Potions.SLOW_FALLING); - builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(JUMPY_BUG_LEG.get()), Potions.LEAPING); - builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(CORNEA_EAR.get()), net.minecraft.world.item.alchemy.Potions.NIGHT_VISION); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.LUCID_EYE.get()), potionHolder(AntarchyFabricMisc.INVERSION)); + builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.INVERSION), Ingredient.of(Items.REDSTONE), potionHolder(AntarchyFabricMisc.LONG_INVERSION)); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.STINK_BUG_ITEM.get()), potionHolder(AntarchyFabricMisc.STINKY_POTION)); + builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.STINKY_POTION), Ingredient.of(Items.REDSTONE), potionHolder(AntarchyFabricMisc.LONG_STINKY)); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.BASILISK_FANG.get()), potionHolder(AntarchyFabricMisc.PARALYSIS)); + builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.PARALYSIS), Ingredient.of(Items.REDSTONE), potionHolder(AntarchyFabricMisc.LONG_PARALYSIS)); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.MOLEWORM_ITEM.get()), potionHolder(AntarchyFabricMisc.HASTE)); + builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.HASTE), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(AntarchyFabricMisc.STRONG_HASTE)); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.URANIUM_NUGGET.get()), potionHolder(AntarchyFabricMisc.SHRINKING)); + builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.SHRINKING), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(AntarchyFabricMisc.STRONG_SHRINKING)); + builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.STRONG_SHRINKING), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(AntarchyFabricMisc.EXTREME_SHRINKING)); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.TITANIUM_NUGGET.get()), potionHolder(AntarchyFabricMisc.GROWING)); + builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.GROWING), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(AntarchyFabricMisc.STRONG_GROWING)); + builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.STRONG_GROWING), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(AntarchyFabricMisc.EXTREME_GROWING)); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.CLOUD_SHARK_FIN.get()), net.minecraft.world.item.alchemy.Potions.SLOW_FALLING); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.JUMPY_BUG_LEG.get()), Potions.LEAPING); + builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.CORNEA_EAR.get()), net.minecraft.world.item.alchemy.Potions.NIGHT_VISION); }); - SOUND_EVENTS.register(); - ARMOR_MATERIALS.register(); - FLUIDS.register(); - BLOCKS.register(); - ENTITY_TYPES.register(); - ATTRIBUTES.register(); - registerEntityAttributes(); - registerSpawnPlacements(); - BLOCK_ENTITY_TYPES.register(); - PARTICLE_TYPES.register(); - FEATURES.register(); - BIOME_SOURCES.register(); - DENSITY_FUNCTION_TYPES.register(); - ENTITY_SUB_PREDICATES.register(); - MOB_EFFECTS.register(); - POTIONS.register(); - ITEMS.register(); - MENUS.register(); - DATA_COMPONENT_TYPES.register(); - RECIPE_SERIALIZERS.register(); - CREATIVE_MODE_TABS.register(); + AntarchyFabricSounds.SOUND_EVENTS.register(); + AntarchyFabricMisc.ARMOR_MATERIALS.register(); + AntarchyFabricMisc.FLUIDS.register(); + AntarchyFabricBlocks.BLOCKS.register(); + AntarchyFabricEntities.ENTITY_TYPES.register(); + AntarchyFabricMisc.ATTRIBUTES.register(); + AntarchyFabricEntityAttributes.register(); + AntarchyFabricSpawnPlacements.register(); + AntarchyFabricBlocks.BLOCK_ENTITY_TYPES.register(); + AntarchyFabricMisc.PARTICLE_TYPES.register(); + AntarchyFabricMisc.FEATURES.register(); + AntarchyFabricMisc.BIOME_SOURCES.register(); + AntarchyFabricMisc.DENSITY_FUNCTION_TYPES.register(); + AntarchyFabricMisc.ENTITY_SUB_PREDICATES.register(); + AntarchyFabricMisc.MOB_EFFECTS.register(); + AntarchyFabricMisc.POTIONS.register(); + AntarchyFabricItems.ITEMS.register(); + AntarchyFabricMisc.MENUS.register(); + AntarchyFabricMisc.DATA_COMPONENT_TYPES.register(); + AntarchyFabricMisc.RECIPE_SERIALIZERS.register(); + AntarchyFabricCreativeModeTabs.CREATIVE_MODE_TABS.register(); - // Wire common-module accessors after all registrations are complete. PermanentPortalType.bindBlocks( - () -> MOSSY_OURANWOOD_WOOD.get(), - () -> ELYTHIA_PORTAL.get(), - () -> NYXITE.get(), - () -> THORAXIS_PORTAL.get(), - () -> NYXITE.get(), - () -> THORAXIS_PORTAL.get() + () -> AntarchyFabricBlocks.MOSSY_OURANWOOD_WOOD.get(), + () -> AntarchyFabricBlocks.ELYTHIA_PORTAL.get(), + () -> AntarchyFabricBlocks.NYXITE.get(), + () -> AntarchyFabricBlocks.THORAXIS_PORTAL.get(), + () -> AntarchyFabricBlocks.NYXITE.get(), + () -> AntarchyFabricBlocks.THORAXIS_PORTAL.get() ); AntarchySoundEvents.bind( - SQUIDZOOKA_FIRE, - SHRINK_RAY_SOUND, - GROWTH_RAY_SOUND, - SIZE_RAY_CHARGE, - ANT_AMBIENT, - ANT_IDLE, - ANT_HURT, - ANT_BITE, - ANT_GATHER, - ANT_NEST, - CLOUD_SHARK_BITE, - CLOUD_SHARK_IDLE, - CLOUD_SHARK_HURT, - CLOUD_SHARK_DEATH, - CLOUD_SHARK_FLY, - CATERPILLAR_IDLE, - CATERPILLAR_HURT, - CATERPILLAR_CRAWL, - BUTTERFLY_HURT, - BRUTALFLY_IDLE, - BRUTALFLY_DEATH, - ELYTHIA_FIREFLY_AMBIENT, - MISSILE_SQUID_AMBIENT, - MISSILE_SQUID_HURT, - MISSILE_SQUID_DEATH, - MISSILE_SQUID_ATTACK, - KRAKEN_FLYING_LOOP, - KRAKEN_FLYING_SIDEWAYS_LOOP, - KRAKEN_ATTACK, - KRAKEN_SPIN, - KRAKEN_ROAR, - KRAKEN_SUMMON, - KRAKEN_HURT, - KRAKEN_DEATH, - BASILISK_IDLE_LOOP, - BASILISK_SLITHER_LOOP, - BASILISK_BITE, - BASILISK_HISS, - BASILISK_HURT, - BASILISK_DEATH, - THORAXIS_NIGHTMARE_WASTES_AMBIENT, - THORAXIS_NIGHTMARE_WASTES_ADDITIONS, - THORAXIS_NIGHTMARE_WASTES_MOOD, - THORAXIS_DREAM_DUNES_AMBIENT, - THORAXIS_DREAM_DUNES_ADDITIONS, - THORAXIS_DREAM_DUNES_MOOD, - THORAXIS_LUCID_POOLS_AMBIENT, - THORAXIS_LUCID_POOLS_ADDITIONS, - THORAXIS_LUCID_POOLS_MOOD, - LUCID_AMBIENT, - LUCID_FLYING, - LUCID_ATTACK, - LUCID_BOLT_SOUND, - LUCID_HURT, - LUCID_DEATH, - REVERIE_IDLE, - REVERIE_HURT, - REVERIE_WORRY, - REVERIE_SAVE, - REVERIE_JOIN_PLAYER, - REVERIE_ALERT, - FLYING_SQUIRREL_IDLE, - FLYING_SQUIRREL_BEG, - FLYING_SQUIRREL_NUT, - FLYING_SQUIRREL_GLIDE_LOOP, - FLYING_SQUIRREL_HURT, - FLYING_SQUIRREL_DEATH, - NIGHTMARE_IDLE, - NIGHTMARE_HURT, - NIGHTMARE_ROAR, - NIGHTMARE_DEATH, - NIGHTMARE_BITE, - NIGHTMARE_FLAP, - TRIFFID_ATTACK, - TRIFFID_GRAB, - TRIFFID_HURT, - TRIFFID_DEATH, - TRIFFID_HISS, - TRIFFID_GROWL, - MANTIS_AMBIENT, - MANTIS_HURT, - MANTIS_ATTACK, - MANTIS_FLY_LOOP, - GRAVITY_GUN_PICKUP, - GRAVITY_GUN_DROP, - GRAVITY_GUN_HOLD_LOOP, - GRAVITY_GUN_LAUNCH, - GRAVITY_GUN_DRYFIRE, - BED_BUG_AMBIENT, - BED_BUG_HURT, - BED_BUG_ATTACK, - WASP_IDLE, - WASP_HURT, - WASP_ATTACK, - WASP_DEATH, - SCORPION_AMBIENT, - SCORPION_HURT, - SCORPION_ATTACK, - EMPEROR_SCORPION_AMBIENT, - EMPEROR_SCORPION_HURT, - EMPEROR_SCORPION_ATTACK, - EMPEROR_SCORPION_ROAR, - MOLEWORM_AMBIENT, - MOLEWORM_HURT, - MOLEWORM_ATTACK, - MOLEWORM_DIG, - MOLEVORE_AMBIENT, - MOLEVORE_HURT, - MOLEVORE_ATTACK, - MOLEVORE_DIG, - BOMBER_WALK, - BOMBER_KNOCK, - BOMBER_EXPLODE, - TORETERROR_IDLE, - TORETERROR_HURT, - TORETERROR_DEATH, - TORETERROR_BOMBER_FIRE, - TORETERROR_SPIN, - TORETERROR_RICOCHET, - WATER_CANNON_FIRE, - TORETERROR_JUMP_UP, - TORETERROR_JUMP_LAND, - STINKY_FLY_SOUND, - ANT_IDLE, - ANT_HURT, - ANT_BITE, - ANT_IDLE, - ANT_HURT, - ANT_BITE, - ANT_IDLE, - DUCT_TAPE_USE + AntarchyFabricSounds.SQUIDZOOKA_FIRE, + AntarchyFabricSounds.SHRINK_RAY_SOUND, + AntarchyFabricSounds.GROWTH_RAY_SOUND, + AntarchyFabricSounds.SIZE_RAY_CHARGE, + AntarchyFabricSounds.ANT_AMBIENT, + AntarchyFabricSounds.ANT_IDLE, + AntarchyFabricSounds.ANT_HURT, + AntarchyFabricSounds.ANT_BITE, + AntarchyFabricSounds.ANT_GATHER, + AntarchyFabricSounds.ANT_NEST, + AntarchyFabricSounds.CLOUD_SHARK_BITE, + AntarchyFabricSounds.CLOUD_SHARK_IDLE, + AntarchyFabricSounds.CLOUD_SHARK_HURT, + AntarchyFabricSounds.CLOUD_SHARK_DEATH, + AntarchyFabricSounds.CLOUD_SHARK_FLY, + AntarchyFabricSounds.CATERPILLAR_IDLE, + AntarchyFabricSounds.CATERPILLAR_HURT, + AntarchyFabricSounds.CATERPILLAR_CRAWL, + AntarchyFabricSounds.BUTTERFLY_HURT, + AntarchyFabricSounds.BRUTALFLY_IDLE, + AntarchyFabricSounds.BRUTALFLY_DEATH, + AntarchyFabricSounds.ELYTHIA_FIREFLY_AMBIENT, + AntarchyFabricSounds.MISSILE_SQUID_AMBIENT, + AntarchyFabricSounds.MISSILE_SQUID_HURT, + AntarchyFabricSounds.MISSILE_SQUID_DEATH, + AntarchyFabricSounds.MISSILE_SQUID_ATTACK, + AntarchyFabricSounds.KRAKEN_FLYING_LOOP, + AntarchyFabricSounds.KRAKEN_FLYING_SIDEWAYS_LOOP, + AntarchyFabricSounds.KRAKEN_ATTACK, + AntarchyFabricSounds.KRAKEN_SPIN, + AntarchyFabricSounds.KRAKEN_ROAR, + AntarchyFabricSounds.KRAKEN_SUMMON, + AntarchyFabricSounds.KRAKEN_HURT, + AntarchyFabricSounds.KRAKEN_DEATH, + AntarchyFabricSounds.BASILISK_IDLE_LOOP, + AntarchyFabricSounds.BASILISK_SLITHER_LOOP, + AntarchyFabricSounds.BASILISK_BITE, + AntarchyFabricSounds.BASILISK_HISS, + AntarchyFabricSounds.BASILISK_HURT, + AntarchyFabricSounds.BASILISK_DEATH, + AntarchyFabricSounds.THORAXIS_NIGHTMARE_WASTES_AMBIENT, + AntarchyFabricSounds.THORAXIS_NIGHTMARE_WASTES_ADDITIONS, + AntarchyFabricSounds.THORAXIS_NIGHTMARE_WASTES_MOOD, + AntarchyFabricSounds.THORAXIS_DREAM_DUNES_AMBIENT, + AntarchyFabricSounds.THORAXIS_DREAM_DUNES_ADDITIONS, + AntarchyFabricSounds.THORAXIS_DREAM_DUNES_MOOD, + AntarchyFabricSounds.THORAXIS_LUCID_POOLS_AMBIENT, + AntarchyFabricSounds.THORAXIS_LUCID_POOLS_ADDITIONS, + AntarchyFabricSounds.THORAXIS_LUCID_POOLS_MOOD, + AntarchyFabricSounds.LUCID_AMBIENT, + AntarchyFabricSounds.LUCID_FLYING, + AntarchyFabricSounds.LUCID_ATTACK, + AntarchyFabricSounds.LUCID_BOLT_SOUND, + AntarchyFabricSounds.LUCID_HURT, + AntarchyFabricSounds.LUCID_DEATH, + AntarchyFabricSounds.REVERIE_IDLE, + AntarchyFabricSounds.REVERIE_HURT, + AntarchyFabricSounds.REVERIE_WORRY, + AntarchyFabricSounds.REVERIE_SAVE, + AntarchyFabricSounds.REVERIE_JOIN_PLAYER, + AntarchyFabricSounds.REVERIE_ALERT, + AntarchyFabricSounds.FLYING_SQUIRREL_IDLE, + AntarchyFabricSounds.FLYING_SQUIRREL_BEG, + AntarchyFabricSounds.FLYING_SQUIRREL_NUT, + AntarchyFabricSounds.FLYING_SQUIRREL_GLIDE_LOOP, + AntarchyFabricSounds.FLYING_SQUIRREL_HURT, + AntarchyFabricSounds.FLYING_SQUIRREL_DEATH, + AntarchyFabricSounds.NIGHTMARE_IDLE, + AntarchyFabricSounds.NIGHTMARE_HURT, + AntarchyFabricSounds.NIGHTMARE_ROAR, + AntarchyFabricSounds.NIGHTMARE_DEATH, + AntarchyFabricSounds.NIGHTMARE_BITE, + AntarchyFabricSounds.NIGHTMARE_FLAP, + AntarchyFabricSounds.TRIFFID_ATTACK, + AntarchyFabricSounds.TRIFFID_GRAB, + AntarchyFabricSounds.TRIFFID_HURT, + AntarchyFabricSounds.TRIFFID_DEATH, + AntarchyFabricSounds.TRIFFID_HISS, + AntarchyFabricSounds.TRIFFID_GROWL, + AntarchyFabricSounds.MANTIS_AMBIENT, + AntarchyFabricSounds.MANTIS_HURT, + AntarchyFabricSounds.MANTIS_ATTACK, + AntarchyFabricSounds.MANTIS_FLY_LOOP, + AntarchyFabricSounds.GRAVITY_GUN_PICKUP, + AntarchyFabricSounds.GRAVITY_GUN_DROP, + AntarchyFabricSounds.GRAVITY_GUN_HOLD_LOOP, + AntarchyFabricSounds.GRAVITY_GUN_LAUNCH, + AntarchyFabricSounds.GRAVITY_GUN_DRYFIRE, + AntarchyFabricSounds.BED_BUG_AMBIENT, + AntarchyFabricSounds.BED_BUG_HURT, + AntarchyFabricSounds.BED_BUG_ATTACK, + AntarchyFabricSounds.WASP_IDLE, + AntarchyFabricSounds.WASP_HURT, + AntarchyFabricSounds.WASP_ATTACK, + AntarchyFabricSounds.WASP_DEATH, + AntarchyFabricSounds.SCORPION_AMBIENT, + AntarchyFabricSounds.SCORPION_HURT, + AntarchyFabricSounds.SCORPION_ATTACK, + AntarchyFabricSounds.EMPEROR_SCORPION_AMBIENT, + AntarchyFabricSounds.EMPEROR_SCORPION_HURT, + AntarchyFabricSounds.EMPEROR_SCORPION_ATTACK, + AntarchyFabricSounds.EMPEROR_SCORPION_ROAR, + AntarchyFabricSounds.MOLEWORM_AMBIENT, + AntarchyFabricSounds.MOLEWORM_HURT, + AntarchyFabricSounds.MOLEWORM_ATTACK, + AntarchyFabricSounds.MOLEWORM_DIG, + AntarchyFabricSounds.MOLEVORE_AMBIENT, + AntarchyFabricSounds.MOLEVORE_HURT, + AntarchyFabricSounds.MOLEVORE_ATTACK, + AntarchyFabricSounds.MOLEVORE_DIG, + AntarchyFabricSounds.BOMBER_WALK, + AntarchyFabricSounds.BOMBER_KNOCK, + AntarchyFabricSounds.BOMBER_EXPLODE, + AntarchyFabricSounds.TORETERROR_IDLE, + AntarchyFabricSounds.TORETERROR_HURT, + AntarchyFabricSounds.TORETERROR_DEATH, + AntarchyFabricSounds.TORETERROR_BOMBER_FIRE, + AntarchyFabricSounds.TORETERROR_SPIN, + AntarchyFabricSounds.TORETERROR_RICOCHET, + AntarchyFabricSounds.WATER_CANNON_FIRE, + AntarchyFabricSounds.TORETERROR_JUMP_UP, + AntarchyFabricSounds.TORETERROR_JUMP_LAND, + AntarchyFabricSounds.STINKY_FLY_SOUND, + AntarchyFabricSounds.ANT_IDLE, + AntarchyFabricSounds.ANT_HURT, + AntarchyFabricSounds.ANT_BITE, + AntarchyFabricSounds.ANT_IDLE, + AntarchyFabricSounds.ANT_HURT, + AntarchyFabricSounds.ANT_BITE, + AntarchyFabricSounds.ANT_IDLE, + AntarchyFabricSounds.DUCT_TAPE_USE ); - AntarchyObjects.setOctopusBomb(OCTOPUS_BOMB); - AntarchyObjects.setOuranwoodDeer(OURANWOOD_DEER); - AntarchyObjects.setGlimmer(GLIMMER); - AntarchyObjects.setSpiritApple(() -> SPIRIT_APPLE.get()); - AntarchyObjects.setElka(ELKA); - AntarchyObjects.setPeach(() -> PEACH.get()); - AntarchyObjects.setCorn(() -> CORN.get()); - AntarchyObjects.setCornSeeds(() -> CORN_SEEDS.get()); - AntarchyObjects.setWildCorn(() -> WILD_CORN.get()); - AntarchyObjects.setCookedCorndog(() -> COOKED_CORNDOG.get()); - AntarchyObjects.setGlimmerBottle(() -> GLIMMER_BOTTLE.get()); - AntarchyObjects.setGlimmerVariantComponent(() -> GLIMMER_VARIANT.get()); - AntarchyObjects.setAmericanComponent(() -> AMERICAN.get()); - AntarchyObjects.setLumen(() -> LUMEN.get()); - AntarchyObjects.setFlowingLumen(() -> FLOWING_LUMEN.get()); - AntarchyObjects.setLumenBucket(() -> LUMEN_BUCKET.get()); - AntarchyObjects.setLumenBlock(() -> LUMEN_BLOCK.get()); - AntarchyObjects.setLumenFroglight(() -> LUMEN_FROGLIGHT.get()); - AntarchyObjects.setPeachLeavesParticle(() -> PEACH_LEAVES_PARTICLE.get()); - AntarchyObjects.setDorrieInventoryMenu(DORRIE_INVENTORY_MENU); + AntarchyObjects.setOctopusBomb(AntarchyFabricEntities.OCTOPUS_BOMB); + AntarchyObjects.setOuranwoodDeer(AntarchyFabricEntities.OURANWOOD_DEER); + AntarchyObjects.setGlimmer(AntarchyFabricEntities.GLIMMER); + AntarchyObjects.setSpiritApple(() -> AntarchyFabricItems.SPIRIT_APPLE.get()); + AntarchyObjects.setElka(AntarchyFabricEntities.ELKA); + AntarchyObjects.setPeach(() -> AntarchyFabricItems.PEACH.get()); + AntarchyObjects.setCorn(() -> AntarchyFabricItems.CORN.get()); + AntarchyObjects.setCornSeeds(() -> AntarchyFabricItems.CORN_SEEDS.get()); + AntarchyObjects.setWildCorn(() -> AntarchyFabricBlocks.WILD_CORN.get()); + AntarchyObjects.setCookedCorndog(() -> AntarchyFabricItems.COOKED_CORNDOG.get()); + AntarchyObjects.setGlimmerBottle(() -> AntarchyFabricItems.GLIMMER_BOTTLE.get()); + AntarchyObjects.setGlimmerVariantComponent(() -> AntarchyFabricMisc.GLIMMER_VARIANT.get()); + AntarchyObjects.setAmericanComponent(() -> AntarchyFabricMisc.AMERICAN.get()); + AntarchyObjects.setLumen(() -> AntarchyFabricMisc.LUMEN.get()); + AntarchyObjects.setFlowingLumen(() -> AntarchyFabricMisc.FLOWING_LUMEN.get()); + AntarchyObjects.setLumenBucket(() -> AntarchyFabricItems.LUMEN_BUCKET.get()); + AntarchyObjects.setLumenBlock(() -> AntarchyFabricBlocks.LUMEN_BLOCK.get()); + AntarchyObjects.setLumenFroglight(() -> AntarchyFabricBlocks.LUMEN_FROGLIGHT.get()); + AntarchyObjects.setPeachLeavesParticle(() -> AntarchyFabricMisc.PEACH_LEAVES_PARTICLE.get()); + // Dorrie is not part of this update yet. + // AntarchyObjects.setDorrieInventoryMenu(AntarchyFabricMisc.DORRIE_INVENTORY_MENU); AntarchyObjects.bind( - EASTER_BUNNY, - FLYING_SQUIRREL, - KRAKEN, - MISSILE_SQUID, - MOLEWORM, - MANTIS, - BED_BUG, - WASP, - BOMBER, - SCORPION, - CATERPILLAR, - BUTTERFLY, - REVERIE, - TRIFFID, - BRUTALFLY, - BRUTALFLY_ORB, - HUSH_PROJECTILE, - TORETERROR, - WATER_BOMB, - (java.util.function.Supplier) BOMBER, - (java.util.function.Supplier) BOMBER, - (java.util.function.Supplier) BED_BUG, - CHEEP, - DORRIE, - () -> DUPLICATOR_LOG.get(), - () -> DUPLICATOR_SAPLING.get(), - () -> DUCT_TAPE.get(), - () -> INFESTED_ROOTED_DIRT.get(), - () -> INFESTED_COARSE_DIRT.get(), - () -> NYXITE.get(), - () -> SHELLSTONE.get(), - () -> POLISHED_SHELLSTONE.get(), - () -> SHELLSTONE_BRICKS.get(), - () -> CHISELED_SHELLSTONE.get(), - () -> MOSSY_SHELLSTONE_BRICKS.get(), - () -> CRACKED_SHELLSTONE_BRICKS.get(), - () -> MOSSY_SHELLSTONE_BRICK_STAIRS.get(), - () -> MOSSY_SHELLSTONE_BRICK_SLAB.get(), - () -> MOSSY_SHELLSTONE_BRICK_WALL.get(), - () -> SHELLSTONE_STAIRS.get(), - () -> SHELLSTONE_SLAB.get(), - () -> SHELLSTONE_WALL.get(), - () -> POLISHED_SHELLSTONE_STAIRS.get(), - () -> POLISHED_SHELLSTONE_SLAB.get(), - () -> POLISHED_SHELLSTONE_WALL.get(), - () -> SHELLSTONE_BRICK_STAIRS.get(), - () -> SHELLSTONE_BRICK_SLAB.get(), - () -> SHELLSTONE_BRICK_WALL.get(), - () -> CLOUD_BLOCK.get(), - () -> TRIFFID_GOO_BLOCK.get(), - () -> PALE_NYXITE.get(), - () -> NYXITE_SPIKE.get(), - () -> NYXITE.get(), - () -> NYXITE_SPIKE.get(), - () -> POTENT_NYXITE.get(), - () -> ANTIMETAL.get(), - () -> POLISHED_ANTIMETAL.get(), - () -> BUDDING_BLOOD_CRYSTAL.get(), - () -> SMALL_BLOOD_CRYSTAL_BUD.get(), - () -> MEDIUM_BLOOD_CRYSTAL_BUD.get(), - () -> LARGE_BLOOD_CRYSTAL_BUD.get(), - () -> BLOOD_CRYSTAL_CRYSTAL.get(), - () -> OURANWOOD_ACORN.get(), - KRAKEN_TOOTH, - () -> MOGGLES.get(), - () -> REVERIE_BOTTLE.get(), - () -> STINK_BUG_ITEM.get(), - () -> mobEffectHolder(DREAD), - () -> mobEffectHolder(PARALYZED), - () -> mobEffectHolder(INVERTED), - () -> mobEffectHolder(STINKY), - () -> OURANWOOD_ACORN_BLOCK.get(), - () -> MOSSY_OURANWOOD_LOG.get(), - () -> MOSSY_OURANWOOD_WOOD.get(), - () -> UMBRAL_MOSS_BLOCK.get(), - () -> UMBRAL_MOSS_CARPET.get(), - () -> BLUSH_MOSS_BLOCK.get(), - () -> BLUSH_MOSS_CARPET.get(), - () -> ORANGE_MILKWEED.get(), - () -> PINK_MILKWEED.get(), - () -> BED_BUG_EGG.get(), - () -> BED_BUG_EGG.get(), - () -> BED_BUG_EGG.get(), - () -> WASP_NEST.get(), - () -> HUSHWEED.get(), - () -> OURANWOOD_SQUIRREL_NEST.get(), - () -> BRUTALFLY_COCOON_SPAWNER.get(), - () -> ANT_NEST_BLOCK_ENTITY.get(), - () -> DREAM_CAMPFIRE_BLOCK_ENTITY.get(), - () -> WASP_NEST_BLOCK_ENTITY.get(), - () -> HUSHWEED_BLOCK_ENTITY.get(), - () -> STINKY_GAS.get(), - () -> STINKY_FLY.get(), - () -> PEACH_LEAVES_PARTICLE.get(), - () -> attributeHolder(DOUBLE_DAMAGE_CHANCE), - () -> attributeHolder(BLOODGLASS_MAX_HEARTS), - () -> mobEffectHolder(BLOODGLASS_WARD) + AntarchyFabricEntities.EASTER_BUNNY, + AntarchyFabricEntities.FLYING_SQUIRREL, + AntarchyFabricEntities.KRAKEN, + AntarchyFabricEntities.MISSILE_SQUID, + AntarchyFabricEntities.MOLEWORM, + AntarchyFabricEntities.MANTIS, + AntarchyFabricEntities.BED_BUG, + AntarchyFabricEntities.WASP, + AntarchyFabricEntities.BOMBER, + AntarchyFabricEntities.SCORPION, + AntarchyFabricEntities.CATERPILLAR, + AntarchyFabricEntities.BUTTERFLY, + AntarchyFabricEntities.REVERIE, + AntarchyFabricEntities.TRIFFID, + AntarchyFabricEntities.BRUTALFLY, + AntarchyFabricEntities.BRUTALFLY_ORB, + AntarchyFabricEntities.HUSH_PROJECTILE, + AntarchyFabricEntities.TORETERROR, + AntarchyFabricEntities.WATER_BOMB, + (java.util.function.Supplier) AntarchyFabricEntities.BOMBER, + (java.util.function.Supplier) AntarchyFabricEntities.BOMBER, + (java.util.function.Supplier) AntarchyFabricEntities.BED_BUG, + AntarchyFabricEntities.CHEEP, + () -> { throw new IllegalStateException("Dorrie is not part of this update yet."); }, + () -> AntarchyFabricBlocks.DUPLICATOR_LOG.get(), + () -> AntarchyFabricBlocks.DUPLICATOR_SAPLING.get(), + () -> AntarchyFabricBlocks.DUCT_TAPE.get(), + () -> AntarchyFabricBlocks.INFESTED_ROOTED_DIRT.get(), + () -> AntarchyFabricBlocks.INFESTED_COARSE_DIRT.get(), + () -> AntarchyFabricBlocks.NYXITE.get(), + () -> AntarchyFabricBlocks.SHELLSTONE.get(), + () -> AntarchyFabricBlocks.POLISHED_SHELLSTONE.get(), + () -> AntarchyFabricBlocks.SHELLSTONE_BRICKS.get(), + () -> AntarchyFabricBlocks.CHISELED_SHELLSTONE.get(), + () -> AntarchyFabricBlocks.MOSSY_SHELLSTONE_BRICKS.get(), + () -> AntarchyFabricBlocks.CRACKED_SHELLSTONE_BRICKS.get(), + () -> AntarchyFabricBlocks.MOSSY_SHELLSTONE_BRICK_STAIRS.get(), + () -> AntarchyFabricBlocks.MOSSY_SHELLSTONE_BRICK_SLAB.get(), + () -> AntarchyFabricBlocks.MOSSY_SHELLSTONE_BRICK_WALL.get(), + () -> AntarchyFabricBlocks.SHELLSTONE_STAIRS.get(), + () -> AntarchyFabricBlocks.SHELLSTONE_SLAB.get(), + () -> AntarchyFabricBlocks.SHELLSTONE_WALL.get(), + () -> AntarchyFabricBlocks.POLISHED_SHELLSTONE_STAIRS.get(), + () -> AntarchyFabricBlocks.POLISHED_SHELLSTONE_SLAB.get(), + () -> AntarchyFabricBlocks.POLISHED_SHELLSTONE_WALL.get(), + () -> AntarchyFabricBlocks.SHELLSTONE_BRICK_STAIRS.get(), + () -> AntarchyFabricBlocks.SHELLSTONE_BRICK_SLAB.get(), + () -> AntarchyFabricBlocks.SHELLSTONE_BRICK_WALL.get(), + () -> AntarchyFabricBlocks.CLOUD_BLOCK.get(), + () -> AntarchyFabricBlocks.TRIFFID_GOO_BLOCK.get(), + () -> AntarchyFabricBlocks.PALE_NYXITE.get(), + () -> AntarchyFabricBlocks.NYXITE_SPIKE.get(), + () -> AntarchyFabricBlocks.NYXITE.get(), + () -> AntarchyFabricBlocks.NYXITE_SPIKE.get(), + () -> AntarchyFabricBlocks.POTENT_NYXITE.get(), + () -> AntarchyFabricBlocks.ANTIMETAL.get(), + () -> AntarchyFabricBlocks.POLISHED_ANTIMETAL.get(), + () -> AntarchyFabricBlocks.BUDDING_BLOOD_CRYSTAL.get(), + () -> AntarchyFabricBlocks.SMALL_BLOOD_CRYSTAL_BUD.get(), + () -> AntarchyFabricBlocks.MEDIUM_BLOOD_CRYSTAL_BUD.get(), + () -> AntarchyFabricBlocks.LARGE_BLOOD_CRYSTAL_BUD.get(), + () -> AntarchyFabricBlocks.BLOOD_CRYSTAL_CRYSTAL.get(), + () -> AntarchyFabricItems.OURANWOOD_ACORN.get(), + AntarchyFabricItems.KRAKEN_TOOTH, + () -> AntarchyFabricItems.MOGGLES.get(), + () -> AntarchyFabricItems.REVERIE_BOTTLE.get(), + () -> AntarchyFabricItems.STINK_BUG_ITEM.get(), + () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.DREAD), + () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.PARALYZED), + () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.INVERTED), + () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.STINKY), + () -> AntarchyFabricBlocks.OURANWOOD_ACORN_BLOCK.get(), + () -> AntarchyFabricBlocks.MOSSY_OURANWOOD_LOG.get(), + () -> AntarchyFabricBlocks.MOSSY_OURANWOOD_WOOD.get(), + () -> AntarchyFabricBlocks.UMBRAL_MOSS_BLOCK.get(), + () -> AntarchyFabricBlocks.UMBRAL_MOSS_CARPET.get(), + () -> AntarchyFabricBlocks.BLUSH_MOSS_BLOCK.get(), + () -> AntarchyFabricBlocks.BLUSH_MOSS_CARPET.get(), + () -> AntarchyFabricBlocks.ORANGE_MILKWEED.get(), + () -> AntarchyFabricBlocks.PINK_MILKWEED.get(), + () -> AntarchyFabricBlocks.BED_BUG_EGG.get(), + () -> AntarchyFabricBlocks.BED_BUG_EGG.get(), + () -> AntarchyFabricBlocks.BED_BUG_EGG.get(), + () -> AntarchyFabricBlocks.WASP_NEST.get(), + () -> AntarchyFabricBlocks.HUSHWEED.get(), + () -> AntarchyFabricBlocks.OURANWOOD_SQUIRREL_NEST.get(), + () -> AntarchyFabricBlocks.BRUTALFLY_COCOON_SPAWNER.get(), + () -> AntarchyFabricBlocks.ANT_NEST_BLOCK_ENTITY.get(), + () -> AntarchyFabricBlocks.DREAM_CAMPFIRE_BLOCK_ENTITY.get(), + () -> AntarchyFabricBlocks.WASP_NEST_BLOCK_ENTITY.get(), + () -> AntarchyFabricBlocks.HUSHWEED_BLOCK_ENTITY.get(), + () -> AntarchyFabricMisc.STINKY_GAS.get(), + () -> AntarchyFabricMisc.STINKY_FLY.get(), + () -> AntarchyFabricMisc.PEACH_LEAVES_PARTICLE.get(), + () -> AntarchyFabricMisc.attributeHolder(AntarchyFabricMisc.DOUBLE_DAMAGE_CHANCE), + () -> AntarchyFabricMisc.attributeHolder(AntarchyFabricMisc.BLOODGLASS_MAX_HEARTS), + () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.BLOODGLASS_WARD) ); - LucidEyeProjectileEntity.defaultItemSupplier = () -> LUCID_PEARL.get(); - LucidEntity.invertedEffectSupplier = () -> mobEffectHolder(INVERTED); - LucidEntity.boltEntityTypeSupplier = () -> LUCID_BOLT.get(); - LucidBoltEntity.invertedEffectSupplier = () -> mobEffectHolder(INVERTED); - LucidEyeProjectileEntity.invertedEffectSupplier = () -> mobEffectHolder(INVERTED); + LucidEyeProjectileEntity.defaultItemSupplier = () -> AntarchyFabricItems.LUCID_PEARL.get(); + LucidEntity.invertedEffectSupplier = () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.INVERTED); + LucidEntity.boltEntityTypeSupplier = () -> AntarchyFabricEntities.LUCID_BOLT.get(); + LucidBoltEntity.invertedEffectSupplier = () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.INVERTED); + LucidEyeProjectileEntity.invertedEffectSupplier = () -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.INVERTED); ScorpionWhipTetherSync.setSink(AntarchyFabricNetworking::syncScorpionWhipTether); HerculesBeetleImpactShakeSync.setSink((player, ticks) -> net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking.send(player, new com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakePayload(ticks))); @@ -2776,6 +393,8 @@ public final class AntarchyFabricContent { } } + + private static boolean isSupportedInfinityLoaded() { if (!FabricInfinityCompat.isAvailableOnClasspath()) { return false; @@ -2800,8 +419,5 @@ public final class AntarchyFabricContent { } return false; } + } - - - - diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java index 5f9c2e54..cbb7aa93 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java @@ -1,4 +1,6 @@ package com.craisinlord.antarchy.fabric; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricBlocks; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricItems; import com.craisinlord.antarchy.content.entity.ReverieEntity; import com.craisinlord.antarchy.config.AntarchySettings; @@ -48,20 +50,20 @@ public final class AntarchyFabricEvents { CaterpillarCommand.register(dispatcher); }); - DispenserBlock.registerBehavior(AntarchyFabricContent.SQUIDZOOKA.get(), new SquidzookaDispenseBehavior()); - DispenserBlock.registerBehavior(AntarchyFabricContent.WATER_CANNON.get(), new WaterCannonDispenseBehavior()); + DispenserBlock.registerBehavior(AntarchyFabricItems.SQUIDZOOKA.get(), new SquidzookaDispenseBehavior()); + DispenserBlock.registerBehavior(AntarchyFabricItems.WATER_CANNON.get(), new WaterCannonDispenseBehavior()); - ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.UMBRAL_MOSS_BLOCK.get().asItem(), 0.65f); - ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.UMBRAL_MOSS_CARPET.get().asItem(), 0.3f); - ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.BLUSH_MOSS_BLOCK.get().asItem(), 0.65f); - ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.BLUSH_MOSS_CARPET.get().asItem(), 0.3f); - ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.HUSHWEED.get().asItem(), 0.65f); - ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.CORNEA_EAR.get(), 0.65f); - ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.PEACH_LEAVES.get().asItem(), 0.3f); - ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.PEACH_SAPLING_ITEM.get(), 0.3f); - ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.CORN.get(), 0.65f); - ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.CORN_SEEDS.get(), 0.3f); - ComposterBlock.COMPOSTABLES.put(AntarchyFabricContent.PEACH.get(), 0.65f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricBlocks.UMBRAL_MOSS_BLOCK.get().asItem(), 0.65f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricBlocks.UMBRAL_MOSS_CARPET.get().asItem(), 0.3f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricBlocks.BLUSH_MOSS_BLOCK.get().asItem(), 0.65f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricBlocks.BLUSH_MOSS_CARPET.get().asItem(), 0.3f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricBlocks.HUSHWEED.get().asItem(), 0.65f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricItems.CORNEA_EAR.get(), 0.65f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricBlocks.PEACH_LEAVES.get().asItem(), 0.3f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricItems.PEACH_SAPLING_ITEM.get(), 0.3f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricItems.CORN.get(), 0.65f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricItems.CORN_SEEDS.get(), 0.3f); + ComposterBlock.COMPOSTABLES.put(AntarchyFabricItems.PEACH.get(), 0.65f); ServerLivingEntityEvents.AFTER_DEATH.register((entity, damageSource) -> { if (entity instanceof ServerPlayer sp) { diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/BloodglassManager.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/BloodglassManager.java index 2fb4c920..3da80911 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/BloodglassManager.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/BloodglassManager.java @@ -129,10 +129,15 @@ public final class BloodglassManager { int cap = Math.max(0, AntarchySettings.bloodCrystalHardMaxShields() - access.antarchy$getArmorShieldsActive() - access.antarchy$getArmorShieldLostCount()); - access.antarchy$setAppleShieldsActive(Math.min(amplifier + 1, cap)); - access.antarchy$setAppleShieldLostCount(0); - access.antarchy$setAppleRechargeTimer(0); - if (player instanceof ServerPlayer sp) syncBloodglass(sp); + int targetCap = Math.min(amplifier + 1, cap); + int currentCap = access.antarchy$getAppleShieldsActive() + access.antarchy$getAppleShieldLostCount(); + // Only grant newly-added capacity (e.g. first application, or a higher amplifier). + // A mere duration refresh of an already-active ward must not reset shields that are + // already lost, nor restart their recharge timer. + if (targetCap > currentCap) { + access.antarchy$setAppleShieldsActive(access.antarchy$getAppleShieldsActive() + (targetCap - currentCap)); + if (player instanceof ServerPlayer sp) syncBloodglass(sp); + } } public static void handleWardRemoved(Player player) { diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java index c8aba29c..860a545b 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java @@ -1,4 +1,8 @@ package com.craisinlord.antarchy.fabric.client; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricBlocks; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricEntities; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricItems; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricMisc; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.client.HerculesBeetleImpactShakeClientState; @@ -52,7 +56,7 @@ public final class AntarchyFabricClientBootstrap { public static void register() { AntarchyKeyBindings.register(); - MenuScreens.register(AntarchyFabricContent.DORRIE_INVENTORY_MENU.get(), com.craisinlord.antarchy.content.client.screen.DorrieInventoryScreen::new); + MenuScreens.register(AntarchyFabricMisc.DORRIE_INVENTORY_MENU.get(), com.craisinlord.antarchy.content.client.screen.DorrieInventoryScreen::new); registerRenderers(); registerEntityLayers(); registerColors(); @@ -65,60 +69,61 @@ public final class AntarchyFabricClientBootstrap { private static void registerRenderers() { BlockEntityRendererRegistry.register( - (net.minecraft.world.level.block.entity.BlockEntityType) AntarchyFabricContent.DREAM_CAMPFIRE_BLOCK_ENTITY.get(), + (net.minecraft.world.level.block.entity.BlockEntityType) AntarchyFabricBlocks.DREAM_CAMPFIRE_BLOCK_ENTITY.get(), (BlockEntityRendererProvider) CampfireRenderer::new ); - EntityRendererRegistry.register(AntarchyFabricContent.EASTER_BUNNY.get(), EasterBunnyRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.FLYING_SQUIRREL.get(), FlyingSquirrelRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.CATERPILLAR.get(), CaterpillarRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.BUTTERFLY.get(), ButterflyRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.REVERIE.get(), ReverieRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.BRUTALFLY.get(), BrutalflyRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.RED_ANT.get(), AntRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.BROWN_ANT.get(), AntRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.RAINBOW_ANT.get(), AntRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.MOLEWORM.get(), MolewormRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.MANTIS.get(), MantisRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.ALPHA_MANTIS.get(), AlphaMantisRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.MOLEVORE.get(), MolevoreRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.TRIFFID.get(), TriffidRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.OURANWOOD_BOAT_ENTITY.get(), context -> new OuranwoodBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/boat/ouranwood.png"), false)); - EntityRendererRegistry.register(AntarchyFabricContent.OURANWOOD_CHEST_BOAT_ENTITY.get(), context -> new OuranwoodBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/ouranwood.png"), true)); - EntityRendererRegistry.register(AntarchyFabricContent.PEACH_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/boat/peach.png"), false)); - EntityRendererRegistry.register(AntarchyFabricContent.PEACH_CHEST_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/peach.png"), true)); - EntityRendererRegistry.register(AntarchyFabricContent.APPLE_COW.get(), AppleCowRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.GOLDEN_APPLE_COW.get(), AppleCowRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.ENCHANTED_GOLDEN_APPLE_COW.get(), AppleCowRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.DIAMOND_MINECART.get(), DiamondMinecartRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.DR_TRAYAURUS.get(), context -> new DrTrayaurusRenderer(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/dr_trayaurus.png"))); - EntityRendererRegistry.register(AntarchyFabricContent.CLOUD_SHARK.get(), CloudSharkRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.KRAKEN.get(), KrakenRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.KRAKEN_PART.get(), MultipartPartRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.MISSILE_SQUID.get(), MissileSquidRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.OCTOPUS_BOMB.get(), OctopusBombRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.NIGHTMARE.get(), NightmareRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.LUCID.get(), LucidRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.BED_BUG.get(), BedBugRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.WASP.get(), WaspRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.BOMBER.get(), BomberRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.BASILISK.get(), BasiliskRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.SHRINK_RAY_PROJECTILE.get(), SizeRayProjectileRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.GROWTH_RAY_PROJECTILE.get(), SizeRayProjectileRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.LUCID_BOLT.get(), LucidBoltRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.LUCID_PEARL_PROJECTILE.get(), ThrownItemRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.HUSH_PROJECTILE.get(), HushProjectileRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.BRUTALFLY_ORB.get(), BrutalflyOrbRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.UPWARD_FALLING_BLOCK.get(), UpwardFallingBlockRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.SCORPION.get(), ScorpionRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.EMPEROR_SCORPION.get(), EmperorScorpionRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.TORETERROR.get(), ToreterrorRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.WATER_BOMB.get(), WaterBombRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.CHEEP.get(), com.craisinlord.antarchy.content.client.renderer.CheepRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.DORRIE.get(), com.craisinlord.antarchy.content.client.renderer.DorrieRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.OURANWOOD_DEER.get(), com.craisinlord.antarchy.content.client.renderer.OuranwoodDeerRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.GLIMMER.get(), com.craisinlord.antarchy.content.client.renderer.glimmer.GlimmerRenderer::new); - EntityRendererRegistry.register(AntarchyFabricContent.ELKA.get(), com.craisinlord.antarchy.content.client.renderer.ElkaRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.EASTER_BUNNY.get(), EasterBunnyRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.FLYING_SQUIRREL.get(), FlyingSquirrelRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.CATERPILLAR.get(), CaterpillarRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.BUTTERFLY.get(), ButterflyRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.REVERIE.get(), ReverieRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.BRUTALFLY.get(), BrutalflyRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.RED_ANT.get(), AntRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.BROWN_ANT.get(), AntRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.RAINBOW_ANT.get(), AntRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.MOLEWORM.get(), MolewormRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.MANTIS.get(), MantisRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.ALPHA_MANTIS.get(), AlphaMantisRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.MOLEVORE.get(), MolevoreRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.TRIFFID.get(), TriffidRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.OURANWOOD_BOAT_ENTITY.get(), context -> new OuranwoodBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/boat/ouranwood.png"), false)); + EntityRendererRegistry.register(AntarchyFabricEntities.OURANWOOD_CHEST_BOAT_ENTITY.get(), context -> new OuranwoodBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/ouranwood.png"), true)); + EntityRendererRegistry.register(AntarchyFabricEntities.PEACH_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/boat/peach.png"), false)); + EntityRendererRegistry.register(AntarchyFabricEntities.PEACH_CHEST_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/peach.png"), true)); + EntityRendererRegistry.register(AntarchyFabricEntities.APPLE_COW.get(), AppleCowRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.GOLDEN_APPLE_COW.get(), AppleCowRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.ENCHANTED_GOLDEN_APPLE_COW.get(), AppleCowRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.DIAMOND_MINECART.get(), DiamondMinecartRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.DR_TRAYAURUS.get(), context -> new DrTrayaurusRenderer(context, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/dr_trayaurus.png"))); + EntityRendererRegistry.register(AntarchyFabricEntities.CLOUD_SHARK.get(), CloudSharkRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.KRAKEN.get(), KrakenRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.KRAKEN_PART.get(), MultipartPartRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.MISSILE_SQUID.get(), MissileSquidRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.OCTOPUS_BOMB.get(), OctopusBombRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.NIGHTMARE.get(), NightmareRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.LUCID.get(), LucidRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.BED_BUG.get(), BedBugRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.WASP.get(), WaspRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.BOMBER.get(), BomberRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.BASILISK.get(), BasiliskRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.SHRINK_RAY_PROJECTILE.get(), SizeRayProjectileRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.GROWTH_RAY_PROJECTILE.get(), SizeRayProjectileRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.LUCID_BOLT.get(), LucidBoltRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.LUCID_PEARL_PROJECTILE.get(), ThrownItemRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.HUSH_PROJECTILE.get(), HushProjectileRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.BRUTALFLY_ORB.get(), BrutalflyOrbRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.UPWARD_FALLING_BLOCK.get(), UpwardFallingBlockRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.SCORPION.get(), ScorpionRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.EMPEROR_SCORPION.get(), EmperorScorpionRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.TORETERROR.get(), ToreterrorRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.WATER_BOMB.get(), WaterBombRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.CHEEP.get(), com.craisinlord.antarchy.content.client.renderer.CheepRenderer::new); + // Dorrie is not part of this update yet. + // EntityRendererRegistry.register(AntarchyFabricEntities.DORRIE.get(), com.craisinlord.antarchy.content.client.renderer.DorrieRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.OURANWOOD_DEER.get(), com.craisinlord.antarchy.content.client.renderer.OuranwoodDeerRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.GLIMMER.get(), com.craisinlord.antarchy.content.client.renderer.glimmer.GlimmerRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.ELKA.get(), com.craisinlord.antarchy.content.client.renderer.ElkaRenderer::new); EntityModelLayerRegistry.registerModelLayer(OuranwoodBoatRenderer.boatLayer(), BoatModel::createBodyModel); EntityModelLayerRegistry.registerModelLayer(OuranwoodBoatRenderer.chestBoatLayer(), ChestBoatModel::createBodyModel); @@ -131,24 +136,26 @@ public final class AntarchyFabricClientBootstrap { (state, level, pos, tintIndex) -> level != null && pos != null ? BiomeColors.getAverageFoliageColor(level, pos) : FoliageColor.getDefaultColor(), - AntarchyFabricContent.OURANWOOD_LEAVES.get() + AntarchyFabricBlocks.OURANWOOD_LEAVES.get() ); - ColorProviderRegistry.BLOCK.register((state, level, pos, tintIndex) -> 0xFF4A0000, AntarchyFabricContent.ANTIWATER_BLOCK.get()); + ColorProviderRegistry.BLOCK.register((state, level, pos, tintIndex) -> 0xFF4A0000, AntarchyFabricBlocks.ANTIWATER_BLOCK.get()); ColorProviderRegistry.BLOCK.register( (state, level, pos, tintIndex) -> level != null && pos != null ? BiomeColors.getAverageGrassColor(level, pos) - : net.minecraft.world.level.GrassColor.getDefaultColor() + : net.minecraft.world.level.GrassColor.getDefaultColor(), + AntarchyFabricBlocks.SPIDER_LILY.get() ); - ColorProviderRegistry.ITEM.register((stack, tintIndex) -> FoliageColor.getDefaultColor(), AntarchyFabricContent.OURANWOOD_LEAVES_ITEM.get()); + ColorProviderRegistry.ITEM.register((stack, tintIndex) -> FoliageColor.getDefaultColor(), AntarchyFabricItems.OURANWOOD_LEAVES_ITEM.get()); ColorProviderRegistry.ITEM.register( - (stack, tintIndex) -> net.minecraft.world.level.GrassColor.getDefaultColor() + (stack, tintIndex) -> tintIndex == 0 ? net.minecraft.world.level.GrassColor.getDefaultColor() : -1, + AntarchyFabricItems.SPIDER_LILY_ITEM.get() ); } private static void registerFluids() { FluidRenderHandlerRegistry.INSTANCE.register( - AntarchyFabricContent.BILE.get(), - AntarchyFabricContent.FLOWING_BILE.get(), + AntarchyFabricMisc.BILE.get(), + AntarchyFabricMisc.FLOWING_BILE.get(), new SimpleFluidRenderHandler( ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/bile/bile_still"), ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/bile/bile_flowing"), @@ -158,8 +165,8 @@ public final class AntarchyFabricClientBootstrap { ); FluidRenderHandlerRegistry.INSTANCE.register( - AntarchyFabricContent.ICHOR.get(), - AntarchyFabricContent.FLOWING_ICHOR.get(), + AntarchyFabricMisc.ICHOR.get(), + AntarchyFabricMisc.FLOWING_ICHOR.get(), new SimpleFluidRenderHandler( ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/antiwater_still"), ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/antiwater_flow"), @@ -169,8 +176,8 @@ public final class AntarchyFabricClientBootstrap { ); FluidRenderHandlerRegistry.INSTANCE.register( - AntarchyFabricContent.ANTIWATER.get(), - AntarchyFabricContent.FLOWING_ANTIWATER.get(), + AntarchyFabricMisc.ANTIWATER.get(), + AntarchyFabricMisc.FLOWING_ANTIWATER.get(), new SimpleFluidRenderHandler( ResourceLocation.withDefaultNamespace("block/water_still"), ResourceLocation.withDefaultNamespace("block/water_flow"), @@ -196,8 +203,8 @@ public final class AntarchyFabricClientBootstrap { ); FluidRenderHandlerRegistry.INSTANCE.register( - AntarchyFabricContent.LUMEN.get(), - AntarchyFabricContent.FLOWING_LUMEN.get(), + AntarchyFabricMisc.LUMEN.get(), + AntarchyFabricMisc.FLOWING_LUMEN.get(), new SimpleFluidRenderHandler( ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/lumen_still"), ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/lumen_flow"), @@ -209,95 +216,97 @@ public final class AntarchyFabricClientBootstrap { private static void registerParticles() { ParticleFactoryRegistry registry = ParticleFactoryRegistry.getInstance(); - registry.register(AntarchyFabricContent.DREAM_FIRE_FLAME.get(), DreamFlameParticle.Provider::new); - registry.register(AntarchyFabricContent.STINKY_GAS.get(), HypnoticGasParticle.Provider::new); - registry.register(AntarchyFabricContent.STINKY_FLY.get(), FireflyParticle.Provider::new); - registry.register(AntarchyFabricContent.PEACH_LEAVES_PARTICLE.get(), PeachLeavesParticle.Provider::new); - registry.register(AntarchyFabricContent.HYPNOTIC_GAS.get(), HypnoticGasParticle.Provider::new); - registry.register(AntarchyFabricContent.HYPNOTIC_GAS_DOWN.get(), sprites -> new HypnoticGasParticle.Provider(sprites, true)); - registry.register(AntarchyFabricContent.HYPNOTIC_GAS_CLOUD.get(), new HypnoticGasCloudParticle.Provider()); - registry.register(AntarchyFabricContent.HYPNOTIC_GAS_CLOUD_DOWN.get(), new HypnoticGasCloudParticle.Provider(true)); - registry.register(AntarchyFabricContent.INVERTED_GEYSER_BASE.get(), InvertedGeyserBaseParticle.Provider::new); - registry.register(AntarchyFabricContent.INVERTED_GEYSER_PLUME.get(), InvertedGeyserPlumeParticle.Provider::new); - registry.register(AntarchyFabricContent.INVERTED_GEYSER_POOF.get(), InvertedGeyserBaseParticle.Provider::new); - registry.register(AntarchyFabricContent.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider()); - registry.register(AntarchyFabricContent.FIREFLY.get(), FireflyParticle.Provider::new); - registry.register(AntarchyFabricContent.ORANGE_ASH.get(), OrangeAshParticle.Provider::new); + registry.register(AntarchyFabricMisc.DREAM_FIRE_FLAME.get(), DreamFlameParticle.Provider::new); + registry.register(AntarchyFabricMisc.STINKY_GAS.get(), HypnoticGasParticle.Provider::new); + registry.register(AntarchyFabricMisc.STINKY_FLY.get(), FireflyParticle.Provider::new); + registry.register(AntarchyFabricMisc.PEACH_LEAVES_PARTICLE.get(), PeachLeavesParticle.Provider::new); + registry.register(AntarchyFabricMisc.HYPNOTIC_GAS.get(), HypnoticGasParticle.Provider::new); + registry.register(AntarchyFabricMisc.HYPNOTIC_GAS_DOWN.get(), sprites -> new HypnoticGasParticle.Provider(sprites, true)); + registry.register(AntarchyFabricMisc.HYPNOTIC_GAS_CLOUD.get(), new HypnoticGasCloudParticle.Provider()); + registry.register(AntarchyFabricMisc.HYPNOTIC_GAS_CLOUD_DOWN.get(), new HypnoticGasCloudParticle.Provider(true)); + registry.register(AntarchyFabricMisc.INVERTED_GEYSER_BASE.get(), InvertedGeyserBaseParticle.Provider::new); + registry.register(AntarchyFabricMisc.INVERTED_GEYSER_PLUME.get(), InvertedGeyserPlumeParticle.Provider::new); + registry.register(AntarchyFabricMisc.INVERTED_GEYSER_POOF.get(), InvertedGeyserBaseParticle.Provider::new); + registry.register(AntarchyFabricMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider()); + registry.register(AntarchyFabricMisc.FIREFLY.get(), FireflyParticle.Provider::new); + registry.register(AntarchyFabricMisc.ORANGE_ASH.get(), OrangeAshParticle.Provider::new); } private static void registerRenderLayers() { - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.OURANWOOD_LEAVES.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.OURANWOOD_DOOR.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.OURANWOOD_TRAPDOOR.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.OURANWOOD_ACORN_BLOCK.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.PEACH_LEAVES.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.PEACH_HANGING_PEACH.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.PEACH_DOOR.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.PEACH_TRAPDOOR.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.PEACH_SAPLING.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.OURANWOOD_LEAVES.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.OURANWOOD_DOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.OURANWOOD_TRAPDOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.OURANWOOD_ACORN_BLOCK.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.PEACH_LEAVES.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.PEACH_HANGING_PEACH.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.PEACH_DOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.PEACH_TRAPDOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.PEACH_SAPLING.get(), RenderType.cutout()); // BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.OURANWOOD_VINE.get(), RenderType.cutout()); // BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.OURANWOOD_VINE_PLANT.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DUPLICATOR_SAPLING.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.ORANGE_MILKWEED.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.PINK_MILKWEED.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.HUSHWEED.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.CORNEA_STALK.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.CORN_CROP.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.WILD_CORN.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.FALLEN_KING_CROWN_BLOCK.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.ANTIMETAL_SCAFFOLDING.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.UMBRAL_MOSS_CARPET.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.NYXITE_SPIKE.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.SMALL_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.MEDIUM_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.LARGE_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.BLOOD_CRYSTAL_CRYSTAL.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DREAM_TORCH.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DREAM_WALL_TORCH.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DREAM_LANTERN.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DREAM_CAMPFIRE.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DREAM_FIRE.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.DREAM_CEILING_FIRE.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.ANTIWATER_BLOCK.get(), RenderType.translucent()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.LUMEN_BLOCK.get(), RenderType.translucent()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.ELYTHIA_PORTAL.get(), RenderType.translucent()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.THORAXIS_PORTAL.get(), RenderType.translucent()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.TRIFFID_GOO_BLOCK.get(), RenderType.translucent()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.URANIUM_DOOR.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.TITANIUM_DOOR.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.URANIUM_TRAPDOOR.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.TITANIUM_TRAPDOOR.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.URANIUM_BARS.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.TITANIUM_BARS.get(), RenderType.cutout()); - BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricContent.CLOUD_BLOCK.get(), RenderType.translucent()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DUPLICATOR_SAPLING.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.ORANGE_MILKWEED.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.PINK_MILKWEED.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.CAMELLIA.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.SPIDER_LILY.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.HUSHWEED.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.CORNEA_STALK.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.CORN_CROP.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.WILD_CORN.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.FALLEN_KING_CROWN_BLOCK.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.ANTIMETAL_SCAFFOLDING.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.UMBRAL_MOSS_CARPET.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.NYXITE_SPIKE.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.SMALL_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.MEDIUM_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.LARGE_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.BLOOD_CRYSTAL_CRYSTAL.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DREAM_TORCH.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DREAM_WALL_TORCH.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DREAM_LANTERN.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DREAM_CAMPFIRE.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DREAM_FIRE.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.DREAM_CEILING_FIRE.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.ANTIWATER_BLOCK.get(), RenderType.translucent()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.LUMEN_BLOCK.get(), RenderType.translucent()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.ELYTHIA_PORTAL.get(), RenderType.translucent()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.THORAXIS_PORTAL.get(), RenderType.translucent()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.TRIFFID_GOO_BLOCK.get(), RenderType.translucent()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.URANIUM_DOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.TITANIUM_DOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.URANIUM_TRAPDOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.TITANIUM_TRAPDOOR.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.URANIUM_BARS.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.TITANIUM_BARS.get(), RenderType.cutout()); + BlockRenderLayerMap.INSTANCE.putBlock(AntarchyFabricBlocks.CLOUD_BLOCK.get(), RenderType.translucent()); BlockRenderLayerMap.INSTANCE.putFluids( RenderType.translucent(), - AntarchyFabricContent.BILE.get(), - AntarchyFabricContent.FLOWING_BILE.get(), - AntarchyFabricContent.ICHOR.get(), - AntarchyFabricContent.FLOWING_ICHOR.get(), - AntarchyFabricContent.LUMEN.get(), - AntarchyFabricContent.FLOWING_LUMEN.get(), - AntarchyFabricContent.ANTIWATER.get(), - AntarchyFabricContent.FLOWING_ANTIWATER.get() + AntarchyFabricMisc.BILE.get(), + AntarchyFabricMisc.FLOWING_BILE.get(), + AntarchyFabricMisc.ICHOR.get(), + AntarchyFabricMisc.FLOWING_ICHOR.get(), + AntarchyFabricMisc.LUMEN.get(), + AntarchyFabricMisc.FLOWING_LUMEN.get(), + AntarchyFabricMisc.ANTIWATER.get(), + AntarchyFabricMisc.FLOWING_ANTIWATER.get() ); } private static void registerItemProperties() { ItemProperties.register( - AntarchyFabricContent.ULTIMATE_BOW.get(), + AntarchyFabricItems.ULTIMATE_BOW.get(), ResourceLocation.withDefaultNamespace("pull"), (stack, level, entity, seed) -> entity == null || entity.getUseItem() != stack ? 0.0F : (stack.getItem().getUseDuration(stack, entity) - entity.getUseItemRemainingTicks()) / 20.0F ); ItemProperties.register( - AntarchyFabricContent.ULTIMATE_BOW.get(), + AntarchyFabricItems.ULTIMATE_BOW.get(), ResourceLocation.withDefaultNamespace("pulling"), (stack, level, entity, seed) -> entity != null && entity.isUsingItem() && entity.getUseItem() == stack ? 1.0F : 0.0F ); ItemProperties.register( - AntarchyFabricContent.ULTIMATE_CROSSBOW.get(), + AntarchyFabricItems.ULTIMATE_CROSSBOW.get(), ResourceLocation.withDefaultNamespace("pull"), (stack, level, entity, seed) -> { if (entity == null || CrossbowItem.isCharged(stack) || entity.getUseItem() != stack) { @@ -308,17 +317,17 @@ public final class AntarchyFabricClientBootstrap { } ); ItemProperties.register( - AntarchyFabricContent.ULTIMATE_CROSSBOW.get(), + AntarchyFabricItems.ULTIMATE_CROSSBOW.get(), ResourceLocation.withDefaultNamespace("pulling"), (stack, level, entity, seed) -> entity != null && entity.isUsingItem() && entity.getUseItem() == stack && !CrossbowItem.isCharged(stack) ? 1.0F : 0.0F ); ItemProperties.register( - AntarchyFabricContent.ULTIMATE_CROSSBOW.get(), + AntarchyFabricItems.ULTIMATE_CROSSBOW.get(), ResourceLocation.withDefaultNamespace("charged"), (stack, level, entity, seed) -> CrossbowItem.isCharged(stack) ? 1.0F : 0.0F ); ItemProperties.register( - AntarchyFabricContent.ULTIMATE_CROSSBOW.get(), + AntarchyFabricItems.ULTIMATE_CROSSBOW.get(), ResourceLocation.withDefaultNamespace("firework"), (stack, level, entity, seed) -> CrossbowItem.isCharged(stack) && ChargedProjectiles.of(stack).contains(Items.FIREWORK_ROCKET) ? 1.0F : 0.0F ); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadClientHandler.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadClientHandler.java index 4df0d8ee..a472dbc0 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadClientHandler.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadClientHandler.java @@ -1,4 +1,6 @@ package com.craisinlord.antarchy.fabric.client; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricMisc; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricSounds; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyTags; @@ -24,7 +26,7 @@ import java.util.Random; public final class DreadClientHandler { private static final Holder DREAD_EFFECT = - BuiltInRegistries.MOB_EFFECT.wrapAsHolder(AntarchyFabricContent.DREAD.get()); + BuiltInRegistries.MOB_EFFECT.wrapAsHolder(AntarchyFabricMisc.DREAD.get()); private static final int FOOTSTEP_MIN_INTERVAL_TICKS = 10; private static final int FOOTSTEP_MAX_INTERVAL_TICKS = 22; private static final int APPARITION_MIN_DURATION_TICKS = 16; @@ -285,7 +287,7 @@ public final class DreadClientHandler { player.getX(), player.getY() + 1.0D, player.getZ(), - AntarchyFabricContent.NIGHTMARE_BITE.get(), + AntarchyFabricSounds.NIGHTMARE_BITE.get(), SoundSource.HOSTILE, 0.4F, 0.88F + RANDOM.nextFloat() * 0.12F, diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadHudRenderer.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadHudRenderer.java index 8feae4d6..f88b07a0 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadHudRenderer.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/DreadHudRenderer.java @@ -1,4 +1,5 @@ package com.craisinlord.antarchy.fabric.client; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricMisc; import com.craisinlord.antarchy.fabric.AntarchyFabricContent; import net.minecraft.client.Minecraft; @@ -10,7 +11,7 @@ import net.minecraft.world.effect.MobEffect; import net.minecraft.world.entity.player.Player; public final class DreadHudRenderer { - private static final Holder DREAD_EFFECT = BuiltInRegistries.MOB_EFFECT.wrapAsHolder(AntarchyFabricContent.DREAD.get()); + private static final Holder DREAD_EFFECT = BuiltInRegistries.MOB_EFFECT.wrapAsHolder(AntarchyFabricMisc.DREAD.get()); private DreadHudRenderer() { } diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ElythiaFireflyManager.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ElythiaFireflyManager.java index b436f125..ca92f8d8 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ElythiaFireflyManager.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ElythiaFireflyManager.java @@ -1,4 +1,5 @@ package com.craisinlord.antarchy.fabric.client; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricMisc; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyTags; @@ -56,7 +57,7 @@ public final class ElythiaFireflyManager { if (!level.getBlockState(candidate).isAir()) continue; level.addParticle( - AntarchyFabricContent.FIREFLY.get(), + AntarchyFabricMisc.FIREFLY.get(), candidate.getX() + level.random.nextDouble(), candidate.getY() + level.random.nextDouble(), candidate.getZ() + level.random.nextDouble(), diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/FallenKingCrownArmorStandLayer.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/FallenKingCrownArmorStandLayer.java index 4d36e49e..e55147a6 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/FallenKingCrownArmorStandLayer.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/FallenKingCrownArmorStandLayer.java @@ -1,4 +1,6 @@ package com.craisinlord.antarchy.fabric.client; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricBlocks; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricItems; import com.craisinlord.antarchy.fabric.AntarchyFabricContent; import com.mojang.blaze3d.vertex.PoseStack; @@ -24,7 +26,7 @@ public final class FallenKingCrownArmorStandLayer extends RenderLayer PARALYZED_EFFECT = - BuiltInRegistries.MOB_EFFECT.wrapAsHolder(AntarchyFabricContent.PARALYZED.get()); + BuiltInRegistries.MOB_EFFECT.wrapAsHolder(AntarchyFabricMisc.PARALYZED.get()); private static final int PARTICLE_INTERVAL = 3; diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ParalyzedHudRenderer.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ParalyzedHudRenderer.java index d5365870..8858fc4e 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ParalyzedHudRenderer.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/ParalyzedHudRenderer.java @@ -1,4 +1,5 @@ package com.craisinlord.antarchy.fabric.client; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricMisc; import com.craisinlord.antarchy.fabric.AntarchyFabricContent; import net.minecraft.client.Minecraft; @@ -11,7 +12,7 @@ import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.player.Player; public final class ParalyzedHudRenderer { - private static final Holder PARALYZED_EFFECT = BuiltInRegistries.MOB_EFFECT.wrapAsHolder(AntarchyFabricContent.PARALYZED.get()); + private static final Holder PARALYZED_EFFECT = BuiltInRegistries.MOB_EFFECT.wrapAsHolder(AntarchyFabricMisc.PARALYZED.get()); private ParalyzedHudRenderer() { } diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/TriffidGooHudRenderer.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/TriffidGooHudRenderer.java index b222ffd1..c2c59d05 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/TriffidGooHudRenderer.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/client/TriffidGooHudRenderer.java @@ -1,4 +1,5 @@ package com.craisinlord.antarchy.fabric.client; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricBlocks; import com.craisinlord.antarchy.fabric.AntarchyFabricContent; import net.minecraft.client.Minecraft; @@ -23,7 +24,7 @@ public final class TriffidGooHudRenderer { fadeProgress = Math.max(0f, fadeProgress - FADE_SPEED); if (fadeProgress <= 0f) return; } else { - Block goo = AntarchyFabricContent.TRIFFID_GOO_BLOCK.get(); + Block goo = AntarchyFabricBlocks.TRIFFID_GOO_BLOCK.get(); BlockPos feet = player.blockPosition(); boolean inGoo = player.level().getBlockState(feet).is(goo) || player.level().getBlockState(feet.above()).is(goo); diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/AntiwaterFluid.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/AntiwaterFluid.java index 565d95e8..9b32a774 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/AntiwaterFluid.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/content/fluid/AntiwaterFluid.java @@ -1,4 +1,7 @@ package com.craisinlord.antarchy.fabric.content.fluid; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricBlocks; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricItems; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricMisc; import com.craisinlord.antarchy.fabric.AntarchyFabricContent; import java.util.HashSet; @@ -28,22 +31,22 @@ public abstract class AntiwaterFluid extends FlowingFluid { @Override public Fluid getFlowing() { - return AntarchyFabricContent.FLOWING_ANTIWATER.get(); + return AntarchyFabricMisc.FLOWING_ANTIWATER.get(); } @Override public Fluid getSource() { - return AntarchyFabricContent.ANTIWATER.get(); + return AntarchyFabricMisc.ANTIWATER.get(); } @Override public Item getBucket() { - return AntarchyFabricContent.ANTIWATER_BUCKET.get(); + return AntarchyFabricItems.ANTIWATER_BUCKET.get(); } @Override public boolean isSame(Fluid fluid) { - return fluid == AntarchyFabricContent.ANTIWATER.get() || fluid == AntarchyFabricContent.FLOWING_ANTIWATER.get(); + return fluid == AntarchyFabricMisc.ANTIWATER.get() || fluid == AntarchyFabricMisc.FLOWING_ANTIWATER.get(); } @Override @@ -78,7 +81,7 @@ public abstract class AntiwaterFluid extends FlowingFluid { @Override protected BlockState createLegacyBlock(FluidState state) { - return AntarchyFabricContent.ANTIWATER_BLOCK.get() + return AntarchyFabricBlocks.ANTIWATER_BLOCK.get() .defaultBlockState() .setValue(LiquidBlock.LEVEL, getLegacyLevel(state)); } @@ -341,8 +344,8 @@ public abstract class AntiwaterFluid extends FlowingFluid { if (aboveFluid.is(FluidTags.WATER)) { BlockState result = state.isSource() - ? AntarchyFabricContent.ANTIMETAL.get().defaultBlockState() - : AntarchyFabricContent.NYXITE.get().defaultBlockState(); + ? AntarchyFabricBlocks.ANTIMETAL.get().defaultBlockState() + : AntarchyFabricBlocks.NYXITE.get().defaultBlockState(); level.setBlockAndUpdate(pos, result); level.levelEvent(1501, pos, 0); return; diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalScaffoldingMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalScaffoldingMixin.java index c96f551f..3d8405cb 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalScaffoldingMixin.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/AntimetalScaffoldingMixin.java @@ -1,4 +1,5 @@ package com.craisinlord.antarchy.fabric.mixin; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricBlocks; import com.craisinlord.antarchy.fabric.AntarchyFabricContent; import net.minecraft.core.BlockPos; @@ -69,7 +70,7 @@ public abstract class AntimetalScaffoldingMixin { } private boolean antarchy$isAntimetalScaffolding() { - return ((ScaffoldingBlock) (Object) this).asItem() == AntarchyFabricContent.ANTIMETAL_SCAFFOLDING.get().asItem(); + return ((ScaffoldingBlock) (Object) this).asItem() == AntarchyFabricBlocks.ANTIMETAL_SCAFFOLDING.get().asItem(); } private int antarchy$getDistance(BlockGetter level, BlockPos pos) { diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/MultipartClientSpawnMixin.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/MultipartClientSpawnMixin.java index 5968bf07..e39b6ea7 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/MultipartClientSpawnMixin.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/mixin/client/MultipartClientSpawnMixin.java @@ -1,4 +1,5 @@ package com.craisinlord.antarchy.fabric.mixin.client; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricEntities; import com.craisinlord.antarchy.fabric.AntarchyFabricContent; import net.minecraft.client.multiplayer.ClientPacketListener; @@ -12,7 +13,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public abstract class MultipartClientSpawnMixin { @Inject(method = "handleAddEntity", at = @At("HEAD"), cancellable = true) private void antarchy$skipTrackedMultipartPlaceholders(ClientboundAddEntityPacket packet, CallbackInfo ci) { - if (packet.getType() == AntarchyFabricContent.KRAKEN_PART.get()) { + if (packet.getType() == AntarchyFabricEntities.KRAKEN_PART.get()) { ci.cancel(); } } diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java index 81ff9284..a560c639 100644 --- a/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricNetworking.java @@ -1,4 +1,5 @@ package com.craisinlord.antarchy.fabric.network; +import com.craisinlord.antarchy.fabric.registry.AntarchyFabricEntities; import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; import com.craisinlord.antarchy.content.client.HerculesBeetleImpactShakeClientState; @@ -61,7 +62,7 @@ public final class AntarchyFabricNetworking { } public static MultipartPartEntity createMultipartPart(MultipartEntityOwner owner, int partIndex, com.craisinlord.antarchy.content.entity.multipart.MultipartPartDefinition spec) { - return new MultipartPartEntity(AntarchyFabricContent.KRAKEN_PART.get(), ((Entity) owner).level()) + return new MultipartPartEntity(AntarchyFabricEntities.KRAKEN_PART.get(), ((Entity) owner).level()) .antarchy$configure(owner, partIndex, spec); } diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java new file mode 100644 index 00000000..9670f0b2 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java @@ -0,0 +1,1133 @@ +package com.craisinlord.antarchy.fabric.registry; + +import com.craisinlord.antarchy.fabric.AntarchyWoodTypes; +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.compat.infinity.InfinityCompat; +import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.CreativeTabOrder; +import com.craisinlord.antarchy.content.block.*; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; +import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; +import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; +import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; +import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; +import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; +import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; +import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; +import com.craisinlord.antarchy.fabric.registry.DeferredBlock; +import com.craisinlord.antarchy.fabric.registry.DeferredHolder; +import com.craisinlord.antarchy.fabric.registry.DeferredItem; +import com.craisinlord.antarchy.fabric.registry.DeferredRegister; +import com.craisinlord.antarchy.content.effect.DreadMobEffect; +import com.craisinlord.antarchy.content.effect.GrowthMobEffect; +import com.craisinlord.antarchy.content.effect.InvertedMobEffect; +import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; +import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; +import com.craisinlord.antarchy.content.effect.StinkyMobEffect; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.JumpyBugEntity; +import com.craisinlord.antarchy.content.entity.StinkBugEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; +import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import com.craisinlord.antarchy.content.entity.RollyPollyEntity; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import com.craisinlord.antarchy.content.item.LucidEyeItem; +import com.craisinlord.antarchy.content.item.LucidPearlItem; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; +import com.craisinlord.antarchy.content.entity.WaterBombEntity; +import com.craisinlord.antarchy.content.item.PrimordialArmorItem; +import com.craisinlord.antarchy.content.item.WaterCannonItem; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.OctopusBombEntity; +import com.craisinlord.antarchy.content.entity.MolevoreEntity; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; +import com.craisinlord.antarchy.content.item.BattleAxeItem; +import com.craisinlord.antarchy.content.item.BasiliskDaggerItem; +import com.craisinlord.antarchy.content.item.BigBerthaItem; +import com.craisinlord.antarchy.content.item.AntimetalBlockItem; +import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; +import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; +import com.craisinlord.antarchy.content.item.CorneaEarItem; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.item.MinersDreamItem; +import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; +import com.craisinlord.antarchy.content.item.MogglesItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; +import com.craisinlord.antarchy.content.item.DiamondMinecartItem; +import com.craisinlord.antarchy.content.item.ReverieBottleItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync; +import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; +import com.craisinlord.antarchy.content.item.SizeRayItem; +import com.craisinlord.antarchy.content.item.SquidzookaItem; +import com.craisinlord.antarchy.content.item.SimpleToolTier; +import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; +import com.craisinlord.antarchy.content.item.NightmareArmorItem; +import com.craisinlord.antarchy.content.item.NightmareSwordItem; +import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; +import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; +import com.craisinlord.antarchy.content.item.RainbowSugarItem; +import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import com.craisinlord.antarchy.content.portal.PermanentPortalType; +import java.util.List; +import java.util.ArrayList; +import java.util.Comparator; +import com.mojang.serialization.MapCodec; +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; +import net.minecraft.advancements.critereon.EntitySubPredicate; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.StandingAndWallBlockItem; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.Tiers; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.AmethystClusterBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.DropExperienceBlock; +import net.minecraft.world.level.block.GlowLichenBlock; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.VineBlock; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.levelgen.DensityFunction; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; +import net.minecraft.world.level.levelgen.Heightmap; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; + +public final class AntarchyFabricBlocks { + + public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(Antarchy.MODID); + + + public static final DeferredRegister> BLOCK_ENTITY_TYPES = DeferredRegister.create(Registries.BLOCK_ENTITY_TYPE, Antarchy.MODID); + + + public static final DeferredBlock DUPLICATOR_LOG = BLOCKS.register("duplicator_log", + () -> new DuplicatorLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_LOG).randomTicks())); + + + public static final DeferredBlock OURANWOOD_LOG = BLOCKS.register("ouranwood_log", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); + + + public static final DeferredBlock OURANWOOD_WOOD = BLOCKS.register("ouranwood_wood", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); + + + public static final DeferredBlock MOSSY_OURANWOOD_LOG = BLOCKS.register("mossy_ouranwood_log", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); + + + public static final DeferredBlock MOSSY_OURANWOOD_WOOD = BLOCKS.register("mossy_ouranwood_wood", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); + + + public static final DeferredBlock STRIPPED_OURANWOOD_LOG = BLOCKS.register("stripped_ouranwood_log", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_LOG))); + + + public static final DeferredBlock STRIPPED_OURANWOOD_WOOD = BLOCKS.register("stripped_ouranwood_wood", + () -> new OuranwoodLogBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_WOOD))); + + + public static final DeferredBlock OURANWOOD_PLANKS = BLOCKS.register("ouranwood_planks", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PLANKS))); + + + public static final DeferredBlock OURANWOOD_STAIRS = BLOCKS.register("ouranwood_stairs", + () -> new net.minecraft.world.level.block.StairBlock(OURANWOOD_PLANKS.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_STAIRS))); + + + public static final DeferredBlock OURANWOOD_SLAB = BLOCKS.register("ouranwood_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SLAB))); + + + public static final DeferredBlock OURANWOOD_FENCE = BLOCKS.register("ouranwood_fence", + () -> new net.minecraft.world.level.block.FenceBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE))); + + + public static final DeferredBlock OURANWOOD_FENCE_GATE = BLOCKS.register("ouranwood_fence_gate", + () -> new net.minecraft.world.level.block.FenceGateBlock(net.minecraft.world.level.block.state.properties.WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE_GATE))); + + + public static final DeferredBlock OURANWOOD_DOOR = BLOCKS.register("ouranwood_door", + () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_DOOR))); + + + public static final DeferredBlock OURANWOOD_TRAPDOOR = BLOCKS.register("ouranwood_trapdoor", + () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_TRAPDOOR))); + + + public static final DeferredBlock OURANWOOD_PRESSURE_PLATE = BLOCKS.register("ouranwood_pressure_plate", + () -> new net.minecraft.world.level.block.PressurePlateBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE))); + + + public static final DeferredBlock OURANWOOD_BUTTON = BLOCKS.register("ouranwood_button", + () -> new net.minecraft.world.level.block.ButtonBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); + + + public static final DeferredBlock OURANWOOD_LEAVES = BLOCKS.register("ouranwood_leaves", + () -> new OuranwoodLeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); + + + public static final DeferredBlock OURANWOOD_ACORN_BLOCK = BLOCKS.register("ouranwood_acorn", + () -> new OuranwoodAcornBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); + + + public static final DeferredBlock ORANGE_MILKWEED = BLOCKS.register("orange_milkweed", + () -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); + + + public static final DeferredBlock PINK_MILKWEED = BLOCKS.register("pink_milkweed", + () -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); + + + public static final DeferredBlock CAMELLIA = BLOCKS.register("camellia", + () -> new com.craisinlord.antarchy.content.block.CamelliaBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); + + + public static final DeferredBlock SPIDER_LILY = BLOCKS.register("spider_lily", + () -> new com.craisinlord.antarchy.content.block.SpiderLilyBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POPPY))); + + + public static final DeferredBlock OURANWOOD_SIGN = BLOCKS.register("ouranwood_sign", + () -> new net.minecraft.world.level.block.StandingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); + + + public static final DeferredBlock OURANWOOD_WALL_SIGN = BLOCKS.register("ouranwood_wall_sign", + () -> new net.minecraft.world.level.block.WallSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN))); + + + public static final DeferredBlock OURANWOOD_HANGING_SIGN = BLOCKS.register("ouranwood_hanging_sign", + () -> new net.minecraft.world.level.block.CeilingHangingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN))); + + + public static final DeferredBlock OURANWOOD_WALL_HANGING_SIGN = BLOCKS.register("ouranwood_wall_hanging_sign", + () -> new net.minecraft.world.level.block.WallHangingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN))); + + + public static final DeferredBlock PEACH_LOG = BLOCKS.register("peach_log", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG))); + + + public static final DeferredBlock PEACH_WOOD = BLOCKS.register("peach_wood", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD))); + + + public static final DeferredBlock STRIPPED_PEACH_LOG = BLOCKS.register("stripped_peach_log", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_LOG))); + + + public static final DeferredBlock STRIPPED_PEACH_WOOD = BLOCKS.register("stripped_peach_wood", + () -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_WOOD))); + + + public static final DeferredBlock PEACH_PLANKS = BLOCKS.register("peach_planks", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PLANKS))); + + + public static final DeferredBlock PEACH_STAIRS = BLOCKS.register("peach_stairs", + () -> new net.minecraft.world.level.block.StairBlock(PEACH_PLANKS.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_STAIRS))); + + + public static final DeferredBlock PEACH_SLAB = BLOCKS.register("peach_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SLAB))); + + + public static final DeferredBlock PEACH_FENCE = BLOCKS.register("peach_fence", + () -> new net.minecraft.world.level.block.FenceBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE))); + + + public static final DeferredBlock PEACH_FENCE_GATE = BLOCKS.register("peach_fence_gate", + () -> new net.minecraft.world.level.block.FenceGateBlock(net.minecraft.world.level.block.state.properties.WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE_GATE))); + + + public static final DeferredBlock PEACH_DOOR = BLOCKS.register("peach_door", + () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_DOOR))); + + + public static final DeferredBlock PEACH_TRAPDOOR = BLOCKS.register("peach_trapdoor", + () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_TRAPDOOR))); + + + public static final DeferredBlock PEACH_PRESSURE_PLATE = BLOCKS.register("peach_pressure_plate", + () -> new net.minecraft.world.level.block.PressurePlateBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE))); + + + public static final DeferredBlock PEACH_BUTTON = BLOCKS.register("peach_button", + () -> new net.minecraft.world.level.block.ButtonBlock(net.minecraft.world.level.block.state.properties.BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON))); + + + public static final DeferredBlock PEACH_LEAVES = BLOCKS.register("peach_leaves", + () -> new com.craisinlord.antarchy.content.block.PeachLeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks())); + + + public static final DeferredBlock PEACH_HANGING_PEACH = BLOCKS.register("hanging_peach", + () -> new com.craisinlord.antarchy.content.block.HangingPeachBlock(BlockBehaviour.Properties.of().noOcclusion().instabreak())); + + + public static final DeferredBlock PEACH_SAPLING = BLOCKS.register("peach_sapling", + () -> new com.craisinlord.antarchy.content.block.PeachSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); + + + public static final DeferredBlock PEACH_SIGN = BLOCKS.register("peach_sign", + () -> new net.minecraft.world.level.block.StandingSignBlock(AntarchyWoodTypes.PEACH, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); + + + public static final DeferredBlock PEACH_WALL_SIGN = BLOCKS.register("peach_wall_sign", + () -> new net.minecraft.world.level.block.WallSignBlock(AntarchyWoodTypes.PEACH, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN))); + + + public static final DeferredBlock PEACH_HANGING_SIGN = BLOCKS.register("peach_hanging_sign", + () -> new net.minecraft.world.level.block.CeilingHangingSignBlock(AntarchyWoodTypes.PEACH, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN))); + + + public static final DeferredBlock PEACH_WALL_HANGING_SIGN = BLOCKS.register("peach_wall_hanging_sign", + () -> new net.minecraft.world.level.block.WallHangingSignBlock(AntarchyWoodTypes.PEACH, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN))); + + + public static final DeferredBlock DUPLICATOR_SAPLING = BLOCKS.register("duplicator_sapling", + () -> new DuplicatorSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission())); + + + public static final DeferredBlock DUCT_TAPE = BLOCKS.register("duct_tape", + () -> new DuctTapeBlock(BlockBehaviour.Properties.of() + .strength(0.2F) + .sound(SoundType.WOOL) + .noOcclusion() + .replaceable())); + + + public static final DeferredBlock INFESTED_ROOTED_DIRT = BLOCKS.register("infested_rooted_dirt", + () -> new InfestedRootedDirtBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.ROOTED_DIRT).randomTicks())); + + + public static final DeferredBlock INFESTED_COARSE_DIRT = BLOCKS.register("infested_coarse_dirt", + () -> new InfestedCoarseDirtBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COARSE_DIRT).randomTicks())); + + + public static final DeferredBlock NYXITE = BLOCKS.register("nyxite", + () -> new Block(nyxiteProperties())); + + + public static final DeferredBlock POLISHED_NYXITE = BLOCKS.register("polished_nyxite", + () -> new Block(nyxiteProperties())); + + + public static final DeferredBlock CHISELED_NYXITE = BLOCKS.register("chiseled_nyxite", + () -> new Block(nyxiteProperties())); + + + public static final DeferredBlock NYXITE_BRICKS = BLOCKS.register("nyxite_bricks", + () -> new Block(nyxiteProperties())); + + + public static final DeferredBlock NYXITE_STAIRS = BLOCKS.register("nyxite_stairs", + () -> new net.minecraft.world.level.block.StairBlock(NYXITE.get().defaultBlockState(), nyxiteProperties())); + + + public static final DeferredBlock NYXITE_SLAB = BLOCKS.register("nyxite_slab", + () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); + + + public static final DeferredBlock NYXITE_WALL = BLOCKS.register("nyxite_wall", + () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); + + + public static final DeferredBlock POLISHED_NYXITE_STAIRS = BLOCKS.register("polished_nyxite_stairs", + () -> new net.minecraft.world.level.block.StairBlock(POLISHED_NYXITE.get().defaultBlockState(), nyxiteProperties())); + + + public static final DeferredBlock POLISHED_NYXITE_SLAB = BLOCKS.register("polished_nyxite_slab", + () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); + + + public static final DeferredBlock POLISHED_NYXITE_WALL = BLOCKS.register("polished_nyxite_wall", + () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); + + + public static final DeferredBlock NYXITE_BRICK_STAIRS = BLOCKS.register("nyxite_brick_stairs", + () -> new net.minecraft.world.level.block.StairBlock(NYXITE_BRICKS.get().defaultBlockState(), nyxiteProperties())); + + + public static final DeferredBlock NYXITE_BRICK_SLAB = BLOCKS.register("nyxite_brick_slab", + () -> new net.minecraft.world.level.block.SlabBlock(nyxiteProperties())); + + + public static final DeferredBlock NYXITE_BRICK_WALL = BLOCKS.register("nyxite_brick_wall", + () -> new net.minecraft.world.level.block.WallBlock(nyxiteProperties())); + + + public static final DeferredBlock SHELLSTONE = BLOCKS.register("shellstone", + () -> new Block(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock POLISHED_SHELLSTONE = BLOCKS.register("polished_shellstone", + () -> new Block(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock SHELLSTONE_BRICKS = BLOCKS.register("shellstone_bricks", + () -> new Block(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock CHISELED_SHELLSTONE = BLOCKS.register("chiseled_shellstone", + () -> new Block(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock MOSSY_SHELLSTONE_BRICKS = BLOCKS.register("mossy_shellstone_bricks", + () -> new Block(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock CRACKED_SHELLSTONE_BRICKS = BLOCKS.register("cracked_shellstone_bricks", + () -> new Block(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock MOSSY_SHELLSTONE_BRICK_STAIRS = BLOCKS.register("mossy_shellstone_brick_stairs", + () -> new net.minecraft.world.level.block.StairBlock(MOSSY_SHELLSTONE_BRICKS.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock MOSSY_SHELLSTONE_BRICK_SLAB = BLOCKS.register("mossy_shellstone_brick_slab", + () -> new net.minecraft.world.level.block.SlabBlock(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock MOSSY_SHELLSTONE_BRICK_WALL = BLOCKS.register("mossy_shellstone_brick_wall", + () -> new net.minecraft.world.level.block.WallBlock(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock SHELLSTONE_STAIRS = BLOCKS.register("shellstone_stairs", + () -> new net.minecraft.world.level.block.StairBlock(SHELLSTONE.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock SHELLSTONE_SLAB = BLOCKS.register("shellstone_slab", + () -> new net.minecraft.world.level.block.SlabBlock(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock SHELLSTONE_WALL = BLOCKS.register("shellstone_wall", + () -> new net.minecraft.world.level.block.WallBlock(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock POLISHED_SHELLSTONE_STAIRS = BLOCKS.register("polished_shellstone_stairs", + () -> new net.minecraft.world.level.block.StairBlock(POLISHED_SHELLSTONE.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock POLISHED_SHELLSTONE_SLAB = BLOCKS.register("polished_shellstone_slab", + () -> new net.minecraft.world.level.block.SlabBlock(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock POLISHED_SHELLSTONE_WALL = BLOCKS.register("polished_shellstone_wall", + () -> new net.minecraft.world.level.block.WallBlock(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock SHELLSTONE_BRICK_STAIRS = BLOCKS.register("shellstone_brick_stairs", + () -> new net.minecraft.world.level.block.StairBlock(SHELLSTONE_BRICKS.get().defaultBlockState(), AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock SHELLSTONE_BRICK_SLAB = BLOCKS.register("shellstone_brick_slab", + () -> new net.minecraft.world.level.block.SlabBlock(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock SHELLSTONE_BRICK_WALL = BLOCKS.register("shellstone_brick_wall", + () -> new net.minecraft.world.level.block.WallBlock(AntarchyObjects.shellstoneProperties())); + + + public static final DeferredBlock TRIFFID_GOO_BLOCK = BLOCKS.register("triffid_goo_block", + () -> new com.craisinlord.antarchy.content.block.TriffidGooBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SLIME_BLOCK).noOcclusion().isViewBlocking((s, l, p) -> false).isSuffocating((s, l, p) -> false))); + + + public static final DeferredBlock CLOUD_BLOCK = BLOCKS.register("cloud_block", + () -> new com.craisinlord.antarchy.content.block.CloudBlock( + AntarchyFabricItems::cloudBucketItem, + BlockBehaviour.Properties.ofFullCopy(Blocks.POWDER_SNOW).noLootTable().noOcclusion() + )); + + + public static final DeferredBlock ELYTHIA_PORTAL = BLOCKS.register("elythia_portal", + () -> new AntDimensionPortalBlock(PermanentPortalType.ELYTHIA, portalProperties())); + + + public static final DeferredBlock THORAXIS_PORTAL = BLOCKS.register("thoraxis_portal", + () -> new AntDimensionPortalBlock(PermanentPortalType.THORAXIS, portalProperties())); + + + public static final DeferredBlock PALE_NYXITE = BLOCKS.register("pale_nyxite", + () -> new Block(nyxiteProperties())); + + + public static final DeferredBlock NYXITE_SPIKE = BLOCKS.register("nyxite_spike", + () -> new NyxiteSpikeBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POINTED_DRIPSTONE))); + + + public static final DeferredBlock POTENT_NYXITE = BLOCKS.register("potent_nyxite", + () -> new PotentNyxiteBlock( + AntarchyFabricBlocks::potentNyxiteBlockEntityType, + BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK).lightLevel(state -> 3) + )); + + + public static final DeferredBlock UMBRAL_MOSS_BLOCK = BLOCKS.register("umbral_moss_block", + () -> new UmbralMossBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_BLOCK))); + + + public static final DeferredBlock UMBRAL_MOSS_CARPET = BLOCKS.register("umbral_moss_carpet", + () -> new UmbralMossCarpetBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_CARPET).noOcclusion())); + + + public static final DeferredBlock BLUSH_MOSS_BLOCK = BLOCKS.register("blush_moss_block", + () -> new BlushMossBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_BLOCK))); + + + public static final DeferredBlock BLUSH_MOSS_CARPET = BLOCKS.register("blush_moss_carpet", + () -> new BlushMossCarpetBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_CARPET).noOcclusion())); + + + public static final DeferredBlock DREAM_TORCH = BLOCKS.register("dream_torch", + () -> new DreamTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_TORCH))); + + + public static final DeferredBlock DREAM_WALL_TORCH = BLOCKS.register("dream_wall_torch", + () -> new DreamWallTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_WALL_TORCH))); + + + public static final DeferredBlock DREAM_LANTERN = BLOCKS.register("dream_lantern", + () -> new net.minecraft.world.level.block.LanternBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_LANTERN))); + + + public static final DeferredBlock DREAM_CAMPFIRE = BLOCKS.register("dream_campfire", + () -> new DreamCampfireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_CAMPFIRE))); + + + public static final DeferredBlock DREAM_FIRE = BLOCKS.register("dream_fire", + () -> new DreamFireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_FIRE))); + + + public static final DeferredBlock DREAM_CEILING_FIRE = BLOCKS.register("dream_fire_ceiling", + () -> new DreamCeilingFireBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_FIRE))); + + + public static final DeferredBlock BED_BUG_EGG = BLOCKS.register("bed_bug_egg", + () -> new BedBugEggBlock(BlockBehaviour.Properties.of() + .strength(0.15F) + .sound(SoundType.METAL) + .randomTicks() + .noOcclusion() + .noCollission() + .replaceable())); + + + public static final DeferredBlock WASP_NEST = BLOCKS.register("wasp_nest", + () -> new WaspNestBlock(AntarchyFabricBlocks::waspNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.BEE_NEST))); + + + public static final DeferredBlock OURANWOOD_SQUIRREL_NEST = BLOCKS.register("ouranwood_squirrel_nest", + () -> new com.craisinlord.antarchy.content.block.OuranwoodSquirrelNestBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COARSE_DIRT).noLootTable())); + + + public static final DeferredBlock BRUTALFLY_COCOON_SPAWNER = BLOCKS.register("brutalfly_cocoon_spawner", + () -> new com.craisinlord.antarchy.content.block.BrutalflyCocoonSpawnerBlock(BlockBehaviour.Properties.of().noCollission().instabreak().noLootTable())); + + + public static final DeferredBlock HUSHWEED = BLOCKS.register("hushweed", + () -> new HushweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.AZALEA).noCollission().noOcclusion())); + + + public static final DeferredBlock BILE_BLOCK = BLOCKS.register("bile", + () -> new BileLiquidBlock((net.minecraft.world.level.material.FlowingFluid) AntarchyFabricMisc.BILE.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).lightLevel(state -> 5).noLootTable())); + + + public static final DeferredBlock ICHOR_BLOCK = BLOCKS.register("ichor", + () -> new LiquidBlock((net.minecraft.world.level.material.FlowingFluid) AntarchyFabricMisc.ICHOR.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).noLootTable())); + + + public static final DeferredBlock ANTIWATER_BLOCK = BLOCKS.register("antiwater", + () -> new AntiwaterLiquidBlock((net.minecraft.world.level.material.FlowingFluid) AntarchyFabricMisc.ANTIWATER.get(), + BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).noLootTable())); + + + public static final DeferredBlock LUMEN_BLOCK = BLOCKS.register("lumen", + () -> new LumenLiquidBlock((net.minecraft.world.level.material.FlowingFluid) AntarchyFabricMisc.LUMEN.get(), + BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).lightLevel(state -> 9).noLootTable())); + + + public static final DeferredBlock LUMEN_FROGLIGHT = BLOCKS.register("lumen_froglight", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.OCHRE_FROGLIGHT))); + + + public static final DeferredBlock ROSEATE_FROGLIGHT = BLOCKS.register("roseate_froglight", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.OCHRE_FROGLIGHT))); + + + public static final DeferredBlock RED_ANT_NEST = BLOCKS.register("red_ant_nest", + () -> new AntNestBlock( + AntarchyFabricEntities.RED_ANT, + AntarchyFabricBlocks::antNestBlockEntityType, + true, + BlockBehaviour.Properties.ofFullCopy(Blocks.MAGMA_BLOCK).lightLevel(state -> 3).noLootTable() + )); + + + public static final DeferredBlock BROWN_ANT_NEST = BLOCKS.register("brown_ant_nest", + () -> new AntNestBlock(AntarchyFabricEntities.BROWN_ANT, AntarchyFabricBlocks::antNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT).noLootTable())); + + + public static final DeferredBlock RAINBOW_ANT_NEST = BLOCKS.register("rainbow_ant_nest", + () -> new AntNestBlock(AntarchyFabricEntities.RAINBOW_ANT, AntarchyFabricBlocks::antNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT).noLootTable())); + + + public static final DeferredBlock URANIUM_ORE = BLOCKS.register("uranium_ore", + () -> createOre(Blocks.EMERALD_ORE, 4, 8)); + + + public static final DeferredBlock DEEPSLATE_URANIUM_ORE = BLOCKS.register("deepslate_uranium_ore", + () -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8)); + + + public static final DeferredBlock TITANIUM_ORE = BLOCKS.register("titanium_ore", + () -> createOre(Blocks.DIAMOND_ORE, 4, 8)); + + + public static final DeferredBlock DEEPSLATE_TITANIUM_ORE = BLOCKS.register("deepslate_titanium_ore", + () -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8)); + + + public static final DeferredBlock URANIUM_BLOCK = BLOCKS.register("uranium_block", + () -> createStorageBlock(Blocks.EMERALD_BLOCK)); + + + public static final DeferredBlock TITANIUM_BLOCK = BLOCKS.register("titanium_block", + () -> createStorageBlock(Blocks.DIAMOND_BLOCK)); + + + public static final DeferredBlock RAW_URANIUM_BLOCK = BLOCKS.register("raw_uranium_block", + () -> createRawStorageBlock(Blocks.RAW_GOLD_BLOCK)); + + + public static final DeferredBlock RAW_TITANIUM_BLOCK = BLOCKS.register("raw_titanium_block", + () -> createRawStorageBlock(Blocks.RAW_IRON_BLOCK)); + + + public static final DeferredBlock CUT_URANIUM = BLOCKS.register("cut_uranium", + () -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER)); + + + public static final DeferredBlock CUT_TITANIUM = BLOCKS.register("cut_titanium", + () -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER)); + + + public static final DeferredBlock CUT_URANIUM_SLAB = BLOCKS.register("cut_uranium_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB))); + + + public static final DeferredBlock CUT_TITANIUM_SLAB = BLOCKS.register("cut_titanium_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB))); + + + public static final DeferredBlock CUT_URANIUM_STAIRS = BLOCKS.register("cut_uranium_stairs", + () -> new net.minecraft.world.level.block.StairBlock(CUT_URANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS))); + + + public static final DeferredBlock CUT_TITANIUM_STAIRS = BLOCKS.register("cut_titanium_stairs", + () -> new net.minecraft.world.level.block.StairBlock(CUT_TITANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS))); + + + public static final DeferredBlock CHISELED_URANIUM = BLOCKS.register("chiseled_uranium", + () -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER)); + + + public static final DeferredBlock CHISELED_TITANIUM = BLOCKS.register("chiseled_titanium", + () -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER)); + + + public static final DeferredBlock URANIUM_BULB = BLOCKS.register("uranium_bulb", + () -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB))); + + + public static final DeferredBlock TITANIUM_BULB = BLOCKS.register("titanium_bulb", + () -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB))); + + + public static final DeferredBlock URANIUM_DOOR = BLOCKS.register("uranium_door", + () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR))); + + + public static final DeferredBlock TITANIUM_DOOR = BLOCKS.register("titanium_door", + () -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR))); + + + public static final DeferredBlock URANIUM_TRAPDOOR = BLOCKS.register("uranium_trapdoor", + () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR))); + + + public static final DeferredBlock TITANIUM_TRAPDOOR = BLOCKS.register("titanium_trapdoor", + () -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR))); + + + public static final DeferredBlock URANIUM_BARS = BLOCKS.register("uranium_bars", + () -> new net.minecraft.world.level.block.IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS))); + + + public static final DeferredBlock TITANIUM_BARS = BLOCKS.register("titanium_bars", + () -> new net.minecraft.world.level.block.IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS))); + + + public static final DeferredBlock ANTIMETAL = BLOCKS.register("antimetal", + () -> new net.minecraft.world.level.block.RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BASALT))); + + + public static final DeferredBlock POLISHED_ANTIMETAL = BLOCKS.register("polished_antimetal", + () -> new net.minecraft.world.level.block.RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POLISHED_BASALT))); + + + public static final DeferredBlock ANTIMETAL_SCAFFOLDING = BLOCKS.register("antimetal_scaffolding", + () -> new com.craisinlord.antarchy.content.block.AntimetalScaffoldingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SCAFFOLDING))); + + + public static final DeferredBlock CORNEA_STALK = BLOCKS.register("cornea_stalk", + () -> new CorneaStalkBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SWEET_BERRY_BUSH).randomTicks())); + + + public static final DeferredBlock CORN_CROP = BLOCKS.register("corn_crop", + () -> new CornCropBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.WHEAT).randomTicks().noCollission().noOcclusion())); + + + public static final DeferredBlock WILD_CORN = BLOCKS.register("wild_corn", + () -> new WildCornBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.WHEAT).noCollission().noOcclusion())); + + + public static final DeferredBlock FALLEN_KING_CROWN_BLOCK = BLOCKS.register("fallen_king_crown", + () -> new Block(BlockBehaviour.Properties.of() + .strength(0.2F) + .sound(SoundType.METAL) + .noOcclusion() + .isSuffocating((state, level, pos) -> false) + .isViewBlocking((state, level, pos) -> false))); + + + public static final DeferredBlock SMALL_BLOOD_CRYSTAL_BUD = BLOCKS.register("small_blood_crystal_bud", + () -> new AmethystClusterBlock(3.0F, 4.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.SMALL_AMETHYST_BUD))); + + + public static final DeferredBlock MEDIUM_BLOOD_CRYSTAL_BUD = BLOCKS.register("medium_blood_crystal_bud", + () -> new AmethystClusterBlock(4.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.MEDIUM_AMETHYST_BUD))); + + + public static final DeferredBlock LARGE_BLOOD_CRYSTAL_BUD = BLOCKS.register("large_blood_crystal_bud", + () -> new AmethystClusterBlock(5.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.LARGE_AMETHYST_BUD))); + + + public static final DeferredBlock BUDDING_BLOOD_CRYSTAL = BLOCKS.register("budding_blood_crystal", + () -> new BuddingBloodCrystalBlock( + BlockBehaviour.Properties.ofFullCopy(Blocks.BUDDING_AMETHYST), + AntarchyFabricBlocks::smallBloodCrystalBudBlock, + AntarchyFabricBlocks::mediumBloodCrystalBudBlock, + AntarchyFabricBlocks::largeBloodCrystalBudBlock, + AntarchyFabricBlocks::bloodCrystalCrystalBlock + )); + + + public static final DeferredBlock BLOOD_CRYSTAL = BLOCKS.register("blood_crystal_block", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_BLOCK))); + + + public static final DeferredBlock BLOOD_CRYSTAL_CRYSTAL = BLOCKS.register("blood_crystal_cluster", + () -> new AmethystClusterBlock(7.0F, 3.0F, BlockBehaviour.Properties.ofFullCopy(Blocks.AMETHYST_CLUSTER))); + + + public static final DeferredBlock DREAM_SAND = BLOCKS.register("dream_sand", + () -> new DreamSandBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SAND))); + + + public static final DeferredBlock DREAM_SANDSTONE = BLOCKS.register("dream_sandstone", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE))); + + + public static final DeferredBlock CHISELED_DREAM_SANDSTONE = BLOCKS.register("chiseled_dream_sandstone", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.CHISELED_SANDSTONE))); + + + public static final DeferredBlock CUT_DREAM_SANDSTONE = BLOCKS.register("cut_dream_sandstone", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE))); + + + public static final DeferredBlock SMOOTH_DREAM_SANDSTONE = BLOCKS.register("smooth_dream_sandstone", + () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE))); + + + public static final DeferredBlock DREAM_SANDSTONE_STAIRS = BLOCKS.register("dream_sandstone_stairs", + () -> new net.minecraft.world.level.block.StairBlock(DREAM_SANDSTONE.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_STAIRS))); + + + public static final DeferredBlock DREAM_SANDSTONE_SLAB = BLOCKS.register("dream_sandstone_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_SLAB))); + + + public static final DeferredBlock DREAM_SANDSTONE_WALL = BLOCKS.register("dream_sandstone_wall", + () -> new net.minecraft.world.level.block.WallBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE_WALL))); + + + public static final DeferredBlock SMOOTH_DREAM_SANDSTONE_STAIRS = BLOCKS.register("smooth_dream_sandstone_stairs", + () -> new net.minecraft.world.level.block.StairBlock(SMOOTH_DREAM_SANDSTONE.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE_STAIRS))); + + + public static final DeferredBlock SMOOTH_DREAM_SANDSTONE_SLAB = BLOCKS.register("smooth_dream_sandstone_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE_SLAB))); + + + public static final DeferredBlock CUT_DREAM_SANDSTONE_SLAB = BLOCKS.register("cut_dream_sandstone_slab", + () -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE_SLAB))); + + + public static final DeferredHolder, BlockEntityType> ANT_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("ant_nest", + () -> BlockEntityType.Builder.of( + AntNestBlockEntity::new, + RED_ANT_NEST.get(), + BROWN_ANT_NEST.get(), + RAINBOW_ANT_NEST.get() + ).build(null)); + + + public static final DeferredHolder, BlockEntityType> DREAM_CAMPFIRE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("dream_campfire", + () -> BlockEntityType.Builder.of( + DreamCampfireBlockEntity::new, + DREAM_CAMPFIRE.get() + ).build(null)); + + + public static final DeferredHolder, BlockEntityType> WASP_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("wasp_nest", + () -> BlockEntityType.Builder.of( + WaspNestBlockEntity::new, + WASP_NEST.get() + ).build(null)); + + + public static final DeferredHolder, BlockEntityType> HUSHWEED_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("hushweed", + () -> BlockEntityType.Builder.of( + HushweedBlockEntity::new, + HUSHWEED.get() + ).build(null)); + + + public static final DeferredHolder, BlockEntityType> POTENT_NYXITE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("potent_nyxite", + () -> BlockEntityType.Builder.of( + (pos, state) -> new PotentNyxiteBlockEntity(pos, state, AntarchyFabricBlocks::potentNyxiteBlockEntityType), + POTENT_NYXITE.get() + ).build(null)); + + + + private static BlockEntityType antNestBlockEntityType() { + return ANT_NEST_BLOCK_ENTITY.get(); + } + + + + private static BlockEntityType waspNestBlockEntityType() { + return WASP_NEST_BLOCK_ENTITY.get(); + } + + + + private static BlockEntityType potentNyxiteBlockEntityType() { + return POTENT_NYXITE_BLOCK_ENTITY.get(); + } + + + + private static Block smallBloodCrystalBudBlock() { + return SMALL_BLOOD_CRYSTAL_BUD.get(); + } + + + + private static Block mediumBloodCrystalBudBlock() { + return MEDIUM_BLOOD_CRYSTAL_BUD.get(); + } + + + + private static Block largeBloodCrystalBudBlock() { + return LARGE_BLOOD_CRYSTAL_BUD.get(); + } + + + + private static Block bloodCrystalCrystalBlock() { + return BLOOD_CRYSTAL_CRYSTAL.get(); + } + + + + + private static Block createDirtOre(Block copyFrom) { + return new Block(dirtOreProperties()); + } + + + + private static Block createDirtOre(Block copyFrom, int minExperience, int maxExperience) { + return new DropExperienceBlock(UniformInt.of(minExperience, maxExperience), dirtOreProperties()); + } + + + + private static BlockBehaviour.Properties dirtOreProperties() { + return BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT) + .sound(SoundType.ROOTED_DIRT) + .strength(0.65F, 0.8F) + .requiresCorrectToolForDrops(); + } + + + + private static BlockBehaviour.Properties nyxiteProperties() { + return BlockBehaviour.Properties.ofFullCopy(Blocks.NETHERRACK); + } + + + + private static BlockBehaviour.Properties portalProperties() { + return BlockBehaviour.Properties.of() + .strength(-1.0F) + .noCollission() + .noOcclusion() + .lightLevel(state -> 11) + .noLootTable() + .isSuffocating((state, level, pos) -> false) + .isViewBlocking((state, level, pos) -> false); + } + + + + private static Block createOre(Block copyFrom) { + return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); + } + + + + private static Block createOre(Block copyFrom, int minExperience, int maxExperience) { + return new DropExperienceBlock(UniformInt.of(minExperience, maxExperience), BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); + } + + + + private static Block createStorageBlock(Block copyFrom) { + return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); + } + + + + private static Block createHorizontalFacingStorageBlock(Block copyFrom) { + return new SimpleHorizontalFacingBlock(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops()); + } + + + + private static final class SimpleHorizontalFacingBlock extends HorizontalDirectionalBlock { + private static final MapCodec CODEC = simpleCodec(SimpleHorizontalFacingBlock::new); + + private SimpleHorizontalFacingBlock(BlockBehaviour.Properties properties) { + super(properties); + registerDefaultState(stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + @Override + protected MapCodec codec() { + return CODEC; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); + } + + @Override + protected BlockState rotate(BlockState state, Rotation rotation) { + return state.setValue(FACING, rotation.rotate(state.getValue(FACING))); + } + + @Override + protected BlockState mirror(BlockState state, Mirror mirror) { + return state.rotate(mirror.getRotation(state.getValue(FACING))); + } + } + + + + private static Block createRawStorageBlock(Block copyFrom) { + return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom) + .strength(3.5F, 6.0F) + .requiresCorrectToolForDrops()); + } + + + public static void register() { + BLOCKS.register(); + BLOCK_ENTITY_TYPES.register(); + } + +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricCreativeModeTabs.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricCreativeModeTabs.java new file mode 100644 index 00000000..2602b2e7 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricCreativeModeTabs.java @@ -0,0 +1,347 @@ +package com.craisinlord.antarchy.fabric.registry; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.compat.infinity.InfinityCompat; +import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.CreativeTabOrder; +import com.craisinlord.antarchy.content.block.*; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; +import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; +import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; +import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; +import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; +import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; +import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; +import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; +import com.craisinlord.antarchy.fabric.registry.DeferredBlock; +import com.craisinlord.antarchy.fabric.registry.DeferredHolder; +import com.craisinlord.antarchy.fabric.registry.DeferredItem; +import com.craisinlord.antarchy.fabric.registry.DeferredRegister; +import com.craisinlord.antarchy.content.effect.DreadMobEffect; +import com.craisinlord.antarchy.content.effect.GrowthMobEffect; +import com.craisinlord.antarchy.content.effect.InvertedMobEffect; +import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; +import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; +import com.craisinlord.antarchy.content.effect.StinkyMobEffect; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.JumpyBugEntity; +import com.craisinlord.antarchy.content.entity.StinkBugEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; +import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import com.craisinlord.antarchy.content.entity.RollyPollyEntity; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import com.craisinlord.antarchy.content.item.LucidEyeItem; +import com.craisinlord.antarchy.content.item.LucidPearlItem; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; +import com.craisinlord.antarchy.content.entity.WaterBombEntity; +import com.craisinlord.antarchy.content.item.PrimordialArmorItem; +import com.craisinlord.antarchy.content.item.WaterCannonItem; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.OctopusBombEntity; +import com.craisinlord.antarchy.content.entity.MolevoreEntity; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; +import com.craisinlord.antarchy.content.item.BattleAxeItem; +import com.craisinlord.antarchy.content.item.BasiliskDaggerItem; +import com.craisinlord.antarchy.content.item.BigBerthaItem; +import com.craisinlord.antarchy.content.item.AntimetalBlockItem; +import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; +import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; +import com.craisinlord.antarchy.content.item.CorneaEarItem; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.item.MinersDreamItem; +import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; +import com.craisinlord.antarchy.content.item.MogglesItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; +import com.craisinlord.antarchy.content.item.DiamondMinecartItem; +import com.craisinlord.antarchy.content.item.ReverieBottleItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync; +import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; +import com.craisinlord.antarchy.content.item.SizeRayItem; +import com.craisinlord.antarchy.content.item.SquidzookaItem; +import com.craisinlord.antarchy.content.item.SimpleToolTier; +import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; +import com.craisinlord.antarchy.content.item.NightmareArmorItem; +import com.craisinlord.antarchy.content.item.NightmareSwordItem; +import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; +import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; +import com.craisinlord.antarchy.content.item.RainbowSugarItem; +import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import com.craisinlord.antarchy.content.portal.PermanentPortalType; +import java.util.List; +import java.util.ArrayList; +import java.util.Comparator; +import com.mojang.serialization.MapCodec; +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; +import net.minecraft.advancements.critereon.EntitySubPredicate; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.StandingAndWallBlockItem; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.Tiers; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.AmethystClusterBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.DropExperienceBlock; +import net.minecraft.world.level.block.GlowLichenBlock; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.VineBlock; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.levelgen.DensityFunction; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; +import net.minecraft.world.level.levelgen.Heightmap; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; + +public final class AntarchyFabricCreativeModeTabs { + + public static final DeferredRegister CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, Antarchy.MODID); + + + + public static final DeferredHolder ANTARCHY_TAB = CREATIVE_MODE_TABS.register("antarchy", + () -> CreativeModeTab.builder(CreativeModeTab.Row.TOP, 0) + .title(net.minecraft.network.chat.Component.translatable("itemGroup.antarchy.antarchy")) + .icon(() -> new ItemStack(AntarchyFabricItems.GRAVITY_GUN.get())) + .displayItems((parameters, output) -> populateCreativeTab(output)) + .build()); + + + + private static void populateCreativeTab(CreativeModeTab.Output output) { + ArrayList sortedItems = new ArrayList<>(); + for (var holder : AntarchyFabricItems.ITEMS.getEntries()) { + Item item = holder.get(); + if (item != Items.AIR) { + sortedItems.add(item); + } + } + sortedItems.sort(CreativeTabOrder.COMPARATOR); + sortedItems.forEach(item -> { + if (item == AntarchyFabricItems.GLIMMER_BOTTLE.get()) { + addGlimmerBottleVariants(output); + } else { + output.accept(item); + } + }); + addPotionVariants(output); + } + + + + private static void addGlimmerBottleVariants(CreativeModeTab.Output output) { + for (com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant variant : com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.values()) { + output.accept(com.craisinlord.antarchy.content.item.GlimmerBottleItem.create(variant)); + } + } + + + + private static void addPotionVariants(CreativeModeTab.Output output) { + acceptPotionFamily(output, AntarchyFabricMisc.DREAD_POTION); + acceptPotionFamily(output, AntarchyFabricMisc.LONG_DREAD); + acceptPotionFamily(output, AntarchyFabricMisc.INVERSION); + acceptPotionFamily(output, AntarchyFabricMisc.LONG_INVERSION); + acceptPotionFamily(output, AntarchyFabricMisc.STINKY_POTION); + acceptPotionFamily(output, AntarchyFabricMisc.LONG_STINKY); + acceptPotionFamily(output, AntarchyFabricMisc.PARALYSIS); + acceptPotionFamily(output, AntarchyFabricMisc.LONG_PARALYSIS); + acceptPotionFamily(output, AntarchyFabricMisc.HASTE); + acceptPotionFamily(output, AntarchyFabricMisc.STRONG_HASTE); + acceptPotionFamily(output, AntarchyFabricMisc.SHRINKING); + acceptPotionFamily(output, AntarchyFabricMisc.STRONG_SHRINKING); + acceptPotionFamily(output, AntarchyFabricMisc.EXTREME_SHRINKING); + acceptPotionFamily(output, AntarchyFabricMisc.GROWING); + acceptPotionFamily(output, AntarchyFabricMisc.STRONG_GROWING); + acceptPotionFamily(output, AntarchyFabricMisc.EXTREME_GROWING); + } + + + + private static void acceptPotionFamily(CreativeModeTab.Output output, DeferredHolder potion) { + Holder holder = AntarchyFabricContent.potionHolder(potion); + output.accept(PotionContents.createItemStack(Items.POTION, holder)); + output.accept(PotionContents.createItemStack(Items.SPLASH_POTION, holder)); + output.accept(PotionContents.createItemStack(Items.LINGERING_POTION, holder)); + output.accept(PotionContents.createItemStack(Items.TIPPED_ARROW, holder)); + } + + + + private static int creativeTabGroup(Item item) { + return CreativeTabOrder.group(item); + } + + + + private static int creativeTabSubOrder(Item item) { + return CreativeTabOrder.subOrder(item); + } + + + public static void register() { + CREATIVE_MODE_TABS.register(); + } + +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java new file mode 100644 index 00000000..2b01f8c3 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java @@ -0,0 +1,637 @@ +package com.craisinlord.antarchy.fabric.registry; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.compat.infinity.InfinityCompat; +import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.CreativeTabOrder; +import com.craisinlord.antarchy.content.block.*; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; +import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; +import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; +import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; +import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; +import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; +import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; +import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; +import com.craisinlord.antarchy.fabric.registry.DeferredBlock; +import com.craisinlord.antarchy.fabric.registry.DeferredHolder; +import com.craisinlord.antarchy.fabric.registry.DeferredItem; +import com.craisinlord.antarchy.fabric.registry.DeferredRegister; +import com.craisinlord.antarchy.content.effect.DreadMobEffect; +import com.craisinlord.antarchy.content.effect.GrowthMobEffect; +import com.craisinlord.antarchy.content.effect.InvertedMobEffect; +import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; +import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; +import com.craisinlord.antarchy.content.effect.StinkyMobEffect; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.JumpyBugEntity; +import com.craisinlord.antarchy.content.entity.StinkBugEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; +import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import com.craisinlord.antarchy.content.entity.RollyPollyEntity; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import com.craisinlord.antarchy.content.item.LucidEyeItem; +import com.craisinlord.antarchy.content.item.LucidPearlItem; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; +import com.craisinlord.antarchy.content.entity.WaterBombEntity; +import com.craisinlord.antarchy.content.item.PrimordialArmorItem; +import com.craisinlord.antarchy.content.item.WaterCannonItem; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.OctopusBombEntity; +import com.craisinlord.antarchy.content.entity.MolevoreEntity; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; +import com.craisinlord.antarchy.content.item.BattleAxeItem; +import com.craisinlord.antarchy.content.item.BasiliskDaggerItem; +import com.craisinlord.antarchy.content.item.BigBerthaItem; +import com.craisinlord.antarchy.content.item.AntimetalBlockItem; +import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; +import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; +import com.craisinlord.antarchy.content.item.CorneaEarItem; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.item.MinersDreamItem; +import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; +import com.craisinlord.antarchy.content.item.MogglesItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; +import com.craisinlord.antarchy.content.item.DiamondMinecartItem; +import com.craisinlord.antarchy.content.item.ReverieBottleItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync; +import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; +import com.craisinlord.antarchy.content.item.SizeRayItem; +import com.craisinlord.antarchy.content.item.SquidzookaItem; +import com.craisinlord.antarchy.content.item.SimpleToolTier; +import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; +import com.craisinlord.antarchy.content.item.NightmareArmorItem; +import com.craisinlord.antarchy.content.item.NightmareSwordItem; +import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; +import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; +import com.craisinlord.antarchy.content.item.RainbowSugarItem; +import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import com.craisinlord.antarchy.content.portal.PermanentPortalType; +import java.util.List; +import java.util.ArrayList; +import java.util.Comparator; +import com.mojang.serialization.MapCodec; +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; +import net.minecraft.advancements.critereon.EntitySubPredicate; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.StandingAndWallBlockItem; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.Tiers; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.AmethystClusterBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.DropExperienceBlock; +import net.minecraft.world.level.block.GlowLichenBlock; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.VineBlock; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.levelgen.DensityFunction; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; +import net.minecraft.world.level.levelgen.Heightmap; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; + +public final class AntarchyFabricEntities { + + public static final DeferredRegister> ENTITY_TYPES = DeferredRegister.create(Registries.ENTITY_TYPE, Antarchy.MODID); + + + public static final DeferredHolder, EntityType> RED_ANT = ENTITY_TYPES.register("red_ant", + () -> buildAntType(RedAntEntity::new, MobCategory.CREATURE, "red_ant")); + + + public static final DeferredHolder, EntityType> BROWN_ANT = ENTITY_TYPES.register("brown_ant", + () -> buildAntType(BrownAntEntity::new, MobCategory.CREATURE, "brown_ant")); + + + public static final DeferredHolder, EntityType> RAINBOW_ANT = ENTITY_TYPES.register("rainbow_ant", + () -> buildAntType(RainbowAntEntity::new, MobCategory.CREATURE, "rainbow_ant")); + + + public static final DeferredHolder, EntityType> MOLEWORM = ENTITY_TYPES.register("moleworm", + () -> EntityType.Builder.of(MolewormEntity::new, MobCategory.MONSTER) + .sized(0.4F, 0.3F) + .clientTrackingRange(8) + .build("moleworm")); + + + public static final DeferredHolder, EntityType> MANTIS = ENTITY_TYPES.register("mantis", + () -> EntityType.Builder.of(MantisEntity::new, MobCategory.MONSTER) + .sized(3.125F, 2.5F) + .clientTrackingRange(8) + .build("mantis")); + + + public static final DeferredHolder, EntityType> ALPHA_MANTIS = ENTITY_TYPES.register("alpha_mantis", + () -> EntityType.Builder.of(AlphaMantisEntity::new, MobCategory.MONSTER) + .sized(4.25F, 3.35F) + .clientTrackingRange(10) + .build("alpha_mantis")); + + + public static final DeferredHolder, EntityType> OURANWOOD_BOAT_ENTITY = ENTITY_TYPES.register("ouranwood_boat", + () -> EntityType.Builder.of(OuranwoodBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("ouranwood_boat")); + + + public static final DeferredHolder, EntityType> OURANWOOD_CHEST_BOAT_ENTITY = ENTITY_TYPES.register("ouranwood_chest_boat", + () -> EntityType.Builder.of(OuranwoodChestBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("ouranwood_chest_boat")); + + + public static final DeferredHolder, EntityType> PEACH_BOAT_ENTITY = ENTITY_TYPES.register("peach_boat", + () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.PeachBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("peach_boat")); + + + public static final DeferredHolder, EntityType> PEACH_CHEST_BOAT_ENTITY = ENTITY_TYPES.register("peach_chest_boat", + () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.PeachChestBoatEntity::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .updateInterval(10) + .build("peach_chest_boat")); + + + public static final DeferredHolder, EntityType> MOLEVORE = ENTITY_TYPES.register("molevore", + () -> EntityType.Builder.of(MolevoreEntity::new, MobCategory.MONSTER) + .sized(1.95F, 1.1F) + .clientTrackingRange(10) + .build("molevore")); + + + public static final DeferredHolder, EntityType> TRIFFID = ENTITY_TYPES.register("triffid", + () -> EntityType.Builder.of(TriffidEntity::new, MobCategory.MONSTER) + .sized(2.0F, 5.0F) + .clientTrackingRange(10) + .build("triffid")); + + + public static final DeferredHolder, EntityType> BED_BUG = ENTITY_TYPES.register("bed_bug", + () -> EntityType.Builder.of(BedBugEntity::new, MobCategory.CREATURE) + .sized(1.15F, 0.8F) + .clientTrackingRange(8) + .build("bed_bug")); + + + public static final DeferredHolder, EntityType> WASP = ENTITY_TYPES.register("wasp", + () -> EntityType.Builder.of(WaspEntity::new, MobCategory.MONSTER) + .sized(0.8625F, 1.365F) + .clientTrackingRange(8) + .build("wasp")); + + + public static final DeferredHolder, EntityType> BOMBER = ENTITY_TYPES.register("bomber", + () -> EntityType.Builder.of(BomberEntity::new, MobCategory.MONSTER) + .sized(0.55F, 0.75F) + .clientTrackingRange(8) + .build("bomber")); + + + public static final DeferredHolder, EntityType> SHRINK_RAY_PROJECTILE = ENTITY_TYPES.register("shrink_ray_projectile", + () -> EntityType.Builder.of(SizeRayProjectileEntity::createShrink, MobCategory.MISC) + .sized(0.5F, 0.5F) + .clientTrackingRange(8) + .updateInterval(1) + .build("shrink_ray_projectile")); + + + public static final DeferredHolder, EntityType> GROWTH_RAY_PROJECTILE = ENTITY_TYPES.register("growth_ray_projectile", + () -> EntityType.Builder.of(SizeRayProjectileEntity::createGrowth, MobCategory.MISC) + .sized(0.5F, 0.5F) + .clientTrackingRange(8) + .updateInterval(1) + .build("growth_ray_projectile")); + + + public static final DeferredHolder, EntityType> DIAMOND_MINECART = ENTITY_TYPES.register("diamond_minecart", + () -> EntityType.Builder.of((entityType, level) -> new DiamondMinecartEntity(entityType, level, AntarchyFabricItems.diamondMinecartItem()), MobCategory.MISC) + .sized(0.98F, 0.7F) + .clientTrackingRange(8) + .build("diamond_minecart")); + + + + public static final DeferredHolder, EntityType> EASTER_BUNNY = ENTITY_TYPES.register("easter_bunny", + () -> EntityType.Builder.of(EasterBunnyEntity::new, MobCategory.CREATURE) + .sized(0.5F, 1.0F) + .clientTrackingRange(8) + .build("easter_bunny")); + + + public static final DeferredHolder, EntityType> FLYING_SQUIRREL = ENTITY_TYPES.register("flying_squirrel", + () -> EntityType.Builder.of(FlyingSquirrelEntity::new, MobCategory.CREATURE) + .sized(0.6F, 0.7F) + .clientTrackingRange(8) + .build("flying_squirrel")); + + + public static final DeferredHolder, EntityType> CATERPILLAR = ENTITY_TYPES.register("caterpillar", + () -> EntityType.Builder.of(CaterpillarEntity::new, MobCategory.CREATURE) + .sized(0.8775F, 0.585F) + .clientTrackingRange(8) + .build("caterpillar")); + + + public static final DeferredHolder, EntityType> BUTTERFLY = ENTITY_TYPES.register("butterfly", + () -> EntityType.Builder.of(ButterflyEntity::new, MobCategory.AMBIENT) + .sized(1.125F, 1.375F) + .clientTrackingRange(8) + .build("butterfly")); + + + public static final DeferredHolder, EntityType> REVERIE = ENTITY_TYPES.register("reverie", + () -> EntityType.Builder.of(ReverieEntity::new, MobCategory.AMBIENT) + .sized(0.7F, 0.7F) + .clientTrackingRange(8) + .build("reverie")); + + + public static final DeferredHolder, EntityType> BRUTALFLY = ENTITY_TYPES.register("brutalfly", + () -> EntityType.Builder.of(BrutalflyEntity::new, MobCategory.MONSTER) + .sized(2.4F, 2.1F) + .clientTrackingRange(12) + .build("brutalfly")); + + + public static final DeferredHolder, EntityType> APPLE_COW = ENTITY_TYPES.register("apple_cow", + () -> buildCowType(AppleCow::new, "apple_cow")); + + + public static final DeferredHolder, EntityType> GOLDEN_APPLE_COW = ENTITY_TYPES.register("golden_apple_cow", + () -> buildCowType(GoldenAppleCow::new, "golden_apple_cow")); + + + public static final DeferredHolder, EntityType> ENCHANTED_GOLDEN_APPLE_COW = ENTITY_TYPES.register("enchanted_golden_apple_cow", + () -> buildCowType(EnchantedGoldenAppleCow::new, "enchanted_golden_apple_cow")); + + + public static final DeferredHolder, EntityType> DR_TRAYAURUS = ENTITY_TYPES.register("dr_trayaurus", + () -> EntityType.Builder.of(DrTrayaurusEntity::new, MobCategory.MISC) + .sized(0.6F, 1.95F) + .clientTrackingRange(10) + .build("dr_trayaurus")); + + + public static final DeferredHolder, EntityType> CLOUD_SHARK = ENTITY_TYPES.register("cloud_shark", + () -> EntityType.Builder.of(CloudSharkEntity::new, MobCategory.MONSTER) + .sized(2.4F, 0.9F) + .clientTrackingRange(10) + .build("cloud_shark")); + + + public static final DeferredHolder, EntityType> KRAKEN = ENTITY_TYPES.register("kraken", + () -> EntityType.Builder.of(KrakenEntity::new, MobCategory.MONSTER) + .sized(11.4F, 39.0F) + .clientTrackingRange(12) + .build("kraken")); + + + public static final DeferredHolder, EntityType> KRAKEN_PART = ENTITY_TYPES.register("kraken_part", + () -> EntityType.Builder.of( + com.craisinlord.antarchy.fabric.entity.multipart.MultipartPartEntity::new, + MobCategory.MISC + ) + .sized(1.0F, 1.0F) + .clientTrackingRange(12) + .updateInterval(1) + .build("kraken_part")); + + + public static final DeferredHolder, EntityType> MISSILE_SQUID = ENTITY_TYPES.register("missile_squid", + () -> EntityType.Builder.of(MissileSquidEntity::new, MobCategory.MONSTER) + .sized(1.62F, 3.18F) + .clientTrackingRange(10) + .build("missile_squid")); + + + public static final DeferredHolder, EntityType> OCTOPUS_BOMB = ENTITY_TYPES.register("octopus_bomb", + () -> EntityType.Builder.of(OctopusBombEntity::new, MobCategory.MONSTER) + .sized(2.4F, 2.9F) + .clientTrackingRange(10) + .build("octopus_bomb")); + + + public static final DeferredHolder, EntityType> NIGHTMARE = ENTITY_TYPES.register("nightmare", + () -> EntityType.Builder.of(NightmareEntity::new, MobCategory.MONSTER) + .sized(3.2F, 3.8F) + .clientTrackingRange(12) + .build("nightmare")); + + + public static final DeferredHolder, EntityType> LUCID = ENTITY_TYPES.register("lucid", + () -> EntityType.Builder.of(LucidEntity::new, MobCategory.MONSTER) + .sized(2.0F, 2.0F) + .clientTrackingRange(10) + .build("lucid")); + + + public static final DeferredHolder, EntityType> LUCID_BOLT = ENTITY_TYPES.register("lucid_bolt", + () -> EntityType.Builder.of(LucidBoltEntity::new, MobCategory.MISC) + .sized(0.3F, 0.3F) + .clientTrackingRange(8) + .updateInterval(1) + .build("lucid_bolt")); + + + public static final DeferredHolder, EntityType> SCORPION = ENTITY_TYPES.register("scorpion", + () -> EntityType.Builder.of(ScorpionEntity::new, MobCategory.MONSTER) + .sized(1.5F, 1.0F) + .clientTrackingRange(8) + .build("scorpion")); + + + public static final DeferredHolder, EntityType> BASILISK = ENTITY_TYPES.register("basilisk", + () -> EntityType.Builder.of(BasiliskEntity::new, MobCategory.MONSTER) + .sized(3.0F, 3.5F) + .clientTrackingRange(14) + .build("basilisk")); + + + public static final DeferredHolder, EntityType> EMPEROR_SCORPION = ENTITY_TYPES.register("emperor_scorpion", + () -> EntityType.Builder.of(EmperorScorpionEntity::new, MobCategory.MONSTER) + .sized(6.0F, 3.0F) + .clientTrackingRange(12) + .build("emperor_scorpion")); + + + public static final DeferredHolder, EntityType> LUCID_PEARL_PROJECTILE = ENTITY_TYPES.register("lucid_pearl_projectile", + () -> EntityType.Builder.of(LucidEyeProjectileEntity::new, MobCategory.MISC) + .sized(0.25F, 0.25F) + .clientTrackingRange(8) + .updateInterval(1) + .build("lucid_pearl_projectile")); + + + public static final DeferredHolder, EntityType> HUSH_PROJECTILE = ENTITY_TYPES.register("hush_projectile", + () -> EntityType.Builder.of(HushProjectileEntity::new, MobCategory.MISC) + .sized(0.35F, 0.35F) + .clientTrackingRange(8) + .updateInterval(1) + .build("hush_projectile")); + + + public static final DeferredHolder, EntityType> BRUTALFLY_ORB = ENTITY_TYPES.register("brutalfly_orb", + () -> EntityType.Builder.of(BrutalflyOrbEntity::new, MobCategory.MISC) + .sized(0.75F, 0.75F) + .clientTrackingRange(10) + .updateInterval(1) + .build("brutalfly_orb")); + + + public static final DeferredHolder, EntityType> UPWARD_FALLING_BLOCK = ENTITY_TYPES.register("upward_falling_block", + () -> EntityType.Builder.of( + com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity::new, MobCategory.MISC) + .sized(0.98F, 0.98F) + .clientTrackingRange(10) + .updateInterval(1) + .build("upward_falling_block")); + + + public static final DeferredHolder, EntityType> TORETERROR = ENTITY_TYPES.register("toreterror", + () -> EntityType.Builder.of(ToreterrorEntity::new, MobCategory.MONSTER) + .sized(2.0F, 3.0F) + .clientTrackingRange(14) + .build("toreterror")); + + + public static final DeferredHolder, EntityType> WATER_BOMB = ENTITY_TYPES.register("water_bomb", + () -> EntityType.Builder.of(WaterBombEntity::new, MobCategory.MISC) + .sized(0.4F, 0.4F) + .clientTrackingRange(8) + .updateInterval(1) + .build("water_bomb")); + + + + public static final DeferredHolder, EntityType> CHEEP = ENTITY_TYPES.register("cheep", + () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.CheepEntity::new, MobCategory.WATER_AMBIENT) + .sized(1.0F, 1.2F) + .clientTrackingRange(8) + .build("cheep")); + + + + // Dorrie is not part of this update yet. + // public static final DeferredHolder, EntityType> DORRIE = ENTITY_TYPES.register("dorrie", + // () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.DorrieEntity::new, MobCategory.CREATURE) + // .sized(1.6F, 1.4F) + // .clientTrackingRange(10) + // .build("dorrie")); + + + public static final DeferredHolder, EntityType> OURANWOOD_DEER = ENTITY_TYPES.register("ouranwood_deer", + () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity::new, MobCategory.CREATURE) + .sized(0.9F, 1.4F) + .clientTrackingRange(8) + .build("ouranwood_deer")); + + + public static final DeferredHolder, EntityType> GLIMMER = ENTITY_TYPES.register("glimmer", + () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity::new, MobCategory.CREATURE) + .sized(0.9F, 1.4F) + .clientTrackingRange(8) + .build("glimmer")); + + + public static final DeferredHolder, EntityType> ELKA = ENTITY_TYPES.register("elka", + () -> EntityType.Builder.of(com.craisinlord.antarchy.content.entity.ElkaEntity::new, MobCategory.CREATURE) + .sized(2.2F, 3.5F) + .clientTrackingRange(10) + .build("elka")); + + + + private static EntityType buildCowType(EntityType.EntityFactory factory, String name) { + return EntityType.Builder.of(factory, MobCategory.CREATURE) + .sized(0.9F, 1.4F) + .clientTrackingRange(10) + .build(name); + } + + + + private static EntityType buildAntType(EntityType.EntityFactory factory, MobCategory category, String name) { + return EntityType.Builder.of(factory, category) + .sized(0.6375F, 0.2125F) + .clientTrackingRange(8) + .build(name); + } + + + public static void register() { + ENTITY_TYPES.register(); + } + +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java new file mode 100644 index 00000000..44d49620 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntityAttributes.java @@ -0,0 +1,333 @@ +package com.craisinlord.antarchy.fabric.registry; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.compat.infinity.InfinityCompat; +import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.CreativeTabOrder; +import com.craisinlord.antarchy.content.block.*; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; +import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; +import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; +import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; +import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; +import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; +import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; +import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; +import com.craisinlord.antarchy.fabric.registry.DeferredBlock; +import com.craisinlord.antarchy.fabric.registry.DeferredHolder; +import com.craisinlord.antarchy.fabric.registry.DeferredItem; +import com.craisinlord.antarchy.fabric.registry.DeferredRegister; +import com.craisinlord.antarchy.content.effect.DreadMobEffect; +import com.craisinlord.antarchy.content.effect.GrowthMobEffect; +import com.craisinlord.antarchy.content.effect.InvertedMobEffect; +import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; +import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; +import com.craisinlord.antarchy.content.effect.StinkyMobEffect; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.JumpyBugEntity; +import com.craisinlord.antarchy.content.entity.StinkBugEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; +import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import com.craisinlord.antarchy.content.entity.RollyPollyEntity; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import com.craisinlord.antarchy.content.item.LucidEyeItem; +import com.craisinlord.antarchy.content.item.LucidPearlItem; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; +import com.craisinlord.antarchy.content.entity.WaterBombEntity; +import com.craisinlord.antarchy.content.item.PrimordialArmorItem; +import com.craisinlord.antarchy.content.item.WaterCannonItem; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.OctopusBombEntity; +import com.craisinlord.antarchy.content.entity.MolevoreEntity; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; +import com.craisinlord.antarchy.content.item.BattleAxeItem; +import com.craisinlord.antarchy.content.item.BasiliskDaggerItem; +import com.craisinlord.antarchy.content.item.BigBerthaItem; +import com.craisinlord.antarchy.content.item.AntimetalBlockItem; +import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; +import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; +import com.craisinlord.antarchy.content.item.CorneaEarItem; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.item.MinersDreamItem; +import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; +import com.craisinlord.antarchy.content.item.MogglesItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; +import com.craisinlord.antarchy.content.item.DiamondMinecartItem; +import com.craisinlord.antarchy.content.item.ReverieBottleItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync; +import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; +import com.craisinlord.antarchy.content.item.SizeRayItem; +import com.craisinlord.antarchy.content.item.SquidzookaItem; +import com.craisinlord.antarchy.content.item.SimpleToolTier; +import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; +import com.craisinlord.antarchy.content.item.NightmareArmorItem; +import com.craisinlord.antarchy.content.item.NightmareSwordItem; +import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; +import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; +import com.craisinlord.antarchy.content.item.RainbowSugarItem; +import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import com.craisinlord.antarchy.content.portal.PermanentPortalType; +import java.util.List; +import java.util.ArrayList; +import java.util.Comparator; +import com.mojang.serialization.MapCodec; +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; +import net.minecraft.advancements.critereon.EntitySubPredicate; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.StandingAndWallBlockItem; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.Tiers; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.AmethystClusterBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.DropExperienceBlock; +import net.minecraft.world.level.block.GlowLichenBlock; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.VineBlock; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.levelgen.DensityFunction; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; +import net.minecraft.world.level.levelgen.Heightmap; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; + +public final class AntarchyFabricEntityAttributes { + + + private static AttributeSupplier.Builder buildAntAttributes(double health, double speed, double attackDamage) { + return net.minecraft.world.entity.Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, health) + .add(Attributes.MOVEMENT_SPEED, speed) + .add(Attributes.ATTACK_DAMAGE, attackDamage); + } + + + + public static void register() { + FabricDefaultAttributeRegistry.register( + net.minecraft.world.entity.EntityType.PLAYER, + net.minecraft.world.entity.player.Player.createAttributes() + .add(AntarchyFabricMisc.attributeHolder(AntarchyFabricMisc.DOUBLE_DAMAGE_CHANCE)) + .add(AntarchyFabricMisc.attributeHolder(AntarchyFabricMisc.BLOODGLASS_MAX_HEARTS)) + .build() + ); + + AttributeSupplier rabbitAttributes = Rabbit.createAttributes().build(); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.EASTER_BUNNY.get(), rabbitAttributes); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.FLYING_SQUIRREL.get(), FlyingSquirrelEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.CATERPILLAR.get(), CaterpillarEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.BUTTERFLY.get(), ButterflyEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.REVERIE.get(), ReverieEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.BRUTALFLY.get(), BrutalflyEntity.createAttributes().build()); + + AttributeSupplier cowAttributes = Cow.createAttributes().build(); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.APPLE_COW.get(), cowAttributes); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.GOLDEN_APPLE_COW.get(), cowAttributes); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.ENCHANTED_GOLDEN_APPLE_COW.get(), cowAttributes); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.DR_TRAYAURUS.get(), Villager.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.CLOUD_SHARK.get(), CloudSharkEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.KRAKEN.get(), KrakenEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.MISSILE_SQUID.get(), MissileSquidEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.OCTOPUS_BOMB.get(), OctopusBombEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.NIGHTMARE.get(), NightmareEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.BED_BUG.get(), BedBugEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.WASP.get(), WaspEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.BOMBER.get(), BomberEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.MANTIS.get(), MantisEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.ALPHA_MANTIS.get(), AlphaMantisEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.TRIFFID.get(), TriffidEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.LUCID.get(), LucidEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.SCORPION.get(), ScorpionEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.BASILISK.get(), BasiliskEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.EMPEROR_SCORPION.get(), EmperorScorpionEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.TORETERROR.get(), ToreterrorEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.CHEEP.get(), com.craisinlord.antarchy.content.entity.CheepEntity.createAttributes().build()); + // Dorrie is not part of this update yet. + // FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.DORRIE.get(), com.craisinlord.antarchy.content.entity.DorrieEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.OURANWOOD_DEER.get(), com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.GLIMMER.get(), com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.ELKA.get(), com.craisinlord.antarchy.content.entity.ElkaEntity.createAttributes().build()); + + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.RED_ANT.get(), buildAntAttributes( + AntarchySettings.redAntHealth(), + AntarchySettings.redAntMovementSpeed(), + AntarchySettings.redAntAttackDamage() + ).build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.BROWN_ANT.get(), buildAntAttributes( + AntarchySettings.brownAntHealth(), + AntarchySettings.brownAntMovementSpeed(), + AntarchySettings.brownAntAttackDamage() + ).build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.RAINBOW_ANT.get(), buildAntAttributes( + AntarchySettings.rainbowAntHealth(), + AntarchySettings.rainbowAntMovementSpeed(), + AntarchySettings.rainbowAntAttackDamage() + ).build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.MOLEWORM.get(), MolewormEntity.createAttributes().build()); + FabricDefaultAttributeRegistry.register(AntarchyFabricEntities.MOLEVORE.get(), MolevoreEntity.createAttributes().build()); + } + +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java new file mode 100644 index 00000000..73ff588b --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricItems.java @@ -0,0 +1,1492 @@ +package com.craisinlord.antarchy.fabric.registry; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.compat.infinity.InfinityCompat; +import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.CreativeTabOrder; +import com.craisinlord.antarchy.content.block.*; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; +import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; +import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; +import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; +import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; +import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; +import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; +import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; +import com.craisinlord.antarchy.fabric.registry.DeferredBlock; +import com.craisinlord.antarchy.fabric.registry.DeferredHolder; +import com.craisinlord.antarchy.fabric.registry.DeferredItem; +import com.craisinlord.antarchy.fabric.registry.DeferredRegister; +import com.craisinlord.antarchy.content.effect.DreadMobEffect; +import com.craisinlord.antarchy.content.effect.GrowthMobEffect; +import com.craisinlord.antarchy.content.effect.InvertedMobEffect; +import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; +import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; +import com.craisinlord.antarchy.content.effect.StinkyMobEffect; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.JumpyBugEntity; +import com.craisinlord.antarchy.content.entity.StinkBugEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; +import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import com.craisinlord.antarchy.content.entity.RollyPollyEntity; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import com.craisinlord.antarchy.content.item.LucidEyeItem; +import com.craisinlord.antarchy.content.item.LucidPearlItem; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; +import com.craisinlord.antarchy.content.entity.WaterBombEntity; +import com.craisinlord.antarchy.content.item.PrimordialArmorItem; +import com.craisinlord.antarchy.content.item.WaterCannonItem; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.OctopusBombEntity; +import com.craisinlord.antarchy.content.entity.MolevoreEntity; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; +import com.craisinlord.antarchy.content.item.BattleAxeItem; +import com.craisinlord.antarchy.content.item.BasiliskDaggerItem; +import com.craisinlord.antarchy.content.item.BigBerthaItem; +import com.craisinlord.antarchy.content.item.AntimetalBlockItem; +import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; +import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; +import com.craisinlord.antarchy.content.item.CorneaEarItem; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.item.MinersDreamItem; +import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; +import com.craisinlord.antarchy.content.item.MogglesItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; +import com.craisinlord.antarchy.content.item.DiamondMinecartItem; +import com.craisinlord.antarchy.content.item.ReverieBottleItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync; +import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; +import com.craisinlord.antarchy.content.item.SizeRayItem; +import com.craisinlord.antarchy.content.item.SquidzookaItem; +import com.craisinlord.antarchy.content.item.SimpleToolTier; +import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; +import com.craisinlord.antarchy.content.item.NightmareArmorItem; +import com.craisinlord.antarchy.content.item.NightmareSwordItem; +import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; +import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; +import com.craisinlord.antarchy.content.item.RainbowSugarItem; +import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import com.craisinlord.antarchy.content.portal.PermanentPortalType; +import java.util.List; +import java.util.ArrayList; +import java.util.Comparator; +import com.mojang.serialization.MapCodec; +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; +import net.minecraft.advancements.critereon.EntitySubPredicate; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.StandingAndWallBlockItem; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.Tiers; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.AmethystClusterBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.DropExperienceBlock; +import net.minecraft.world.level.block.GlowLichenBlock; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.VineBlock; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.levelgen.DensityFunction; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; +import net.minecraft.world.level.levelgen.Heightmap; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; + +public final class AntarchyFabricItems { + + public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(Antarchy.MODID); + + + private static final Tier ULTIMATE_TIER = new SimpleToolTier( + 3072, + 10.5F, + 0.0F, + Tiers.NETHERITE.getIncorrectBlocksForDrops(), + 25, + AntarchyFabricItems::ultimateRepairIngredient + ); + + + private static final Tier BLOOD_CRYSTAL_KATANA_TIER = new SimpleToolTier( + 1200, + 8.0F, + 0.0F, + Tiers.DIAMOND.getIncorrectBlocksForDrops(), + 18, + AntarchyFabricItems::bloodCrystalRepairIngredient + ); + + + public static final DeferredItem NIGHTMARE_SCALE = ITEMS.registerSimpleItem("nightmare_scale", new Item.Properties().rarity(Rarity.RARE).fireResistant()); + + + public static final DeferredItem PRIMORDIAL_SCUTE = ITEMS.registerSimpleItem("primordial_scute", + new Item.Properties().rarity(Rarity.UNCOMMON)); + + + + public static final DeferredItem DUPLICATOR_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DUPLICATOR_LOG); + + + public static final DeferredItem OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_LOG); + + + public static final DeferredItem OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_WOOD); + + + public static final DeferredItem MOSSY_OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.MOSSY_OURANWOOD_LOG); + + + public static final DeferredItem MOSSY_OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.MOSSY_OURANWOOD_WOOD); + + + public static final DeferredItem STRIPPED_OURANWOOD_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STRIPPED_OURANWOOD_LOG); + + + public static final DeferredItem STRIPPED_OURANWOOD_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STRIPPED_OURANWOOD_WOOD); + + + public static final DeferredItem OURANWOOD_PLANKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_PLANKS); + + + public static final DeferredItem OURANWOOD_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_STAIRS); + + + public static final DeferredItem OURANWOOD_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_SLAB); + + + public static final DeferredItem OURANWOOD_FENCE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_FENCE); + + + public static final DeferredItem OURANWOOD_FENCE_GATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_FENCE_GATE); + + + public static final DeferredItem OURANWOOD_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_DOOR); + + + public static final DeferredItem OURANWOOD_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_TRAPDOOR); + + + public static final DeferredItem OURANWOOD_PRESSURE_PLATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_PRESSURE_PLATE); + + + public static final DeferredItem OURANWOOD_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_BUTTON); + + + public static final DeferredItem OURANWOOD_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_LEAVES); + + + public static final DeferredItem OURANWOOD_ACORN = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.OURANWOOD_ACORN_BLOCK); + + + public static final DeferredItem PEACH_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_LOG); + + + public static final DeferredItem PEACH_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_WOOD); + + + public static final DeferredItem STRIPPED_PEACH_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STRIPPED_PEACH_LOG); + + + public static final DeferredItem STRIPPED_PEACH_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.STRIPPED_PEACH_WOOD); + + + public static final DeferredItem PEACH_PLANKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_PLANKS); + + + public static final DeferredItem PEACH_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_STAIRS); + + + public static final DeferredItem PEACH_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_SLAB); + + + public static final DeferredItem PEACH_FENCE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_FENCE); + + + public static final DeferredItem PEACH_FENCE_GATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_FENCE_GATE); + + + public static final DeferredItem PEACH_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_DOOR); + + + public static final DeferredItem PEACH_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_TRAPDOOR); + + + public static final DeferredItem PEACH_PRESSURE_PLATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_PRESSURE_PLATE); + + + public static final DeferredItem PEACH_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_BUTTON); + + + public static final DeferredItem PEACH_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_LEAVES); + + + public static final DeferredItem PEACH_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PEACH_SAPLING); + + + public static final DeferredItem ORANGE_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ORANGE_MILKWEED); + + + public static final DeferredItem PINK_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PINK_MILKWEED); + + + public static final DeferredItem CAMELLIA_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CAMELLIA); + + + public static final DeferredItem SPIDER_LILY_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SPIDER_LILY); + + + public static final DeferredItem OURANWOOD_SIGN_ITEM = ITEMS.register("ouranwood_sign", + () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyFabricBlocks.OURANWOOD_SIGN.get(), AntarchyFabricBlocks.OURANWOOD_WALL_SIGN.get())); + + + public static final DeferredItem OURANWOOD_HANGING_SIGN_ITEM = ITEMS.register("ouranwood_hanging_sign", + () -> new net.minecraft.world.item.HangingSignItem(AntarchyFabricBlocks.OURANWOOD_HANGING_SIGN.get(), AntarchyFabricBlocks.OURANWOOD_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16))); + + + public static final DeferredItem OURANWOOD_BOAT = ITEMS.register("ouranwood_boat", + () -> new OuranwoodBoatOnlyItem(AntarchyFabricEntities.OURANWOOD_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + + + public static final DeferredItem OURANWOOD_CHEST_BOAT = ITEMS.register("ouranwood_chest_boat", + () -> new OuranwoodChestBoatItem(AntarchyFabricEntities.OURANWOOD_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + + + public static final DeferredItem PEACH_SIGN_ITEM = ITEMS.register("peach_sign", + () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyFabricBlocks.PEACH_SIGN.get(), AntarchyFabricBlocks.PEACH_WALL_SIGN.get())); + + + public static final DeferredItem PEACH_HANGING_SIGN_ITEM = ITEMS.register("peach_hanging_sign", + () -> new net.minecraft.world.item.HangingSignItem(AntarchyFabricBlocks.PEACH_HANGING_SIGN.get(), AntarchyFabricBlocks.PEACH_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16))); + + + public static final DeferredItem PEACH_BOAT = ITEMS.register("peach_boat", + () -> new com.craisinlord.antarchy.content.item.PeachBoatOnlyItem(AntarchyFabricEntities.PEACH_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + + + public static final DeferredItem PEACH_CHEST_BOAT = ITEMS.register("peach_chest_boat", + () -> new com.craisinlord.antarchy.content.item.PeachChestBoatItem(AntarchyFabricEntities.PEACH_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1))); + + + public static final DeferredItem DUPLICATOR_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DUPLICATOR_SAPLING); + + + public static final DeferredItem RED_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.RED_ANT_NEST); + + + public static final DeferredItem BROWN_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROWN_ANT_NEST); + + + public static final DeferredItem RAINBOW_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.RAINBOW_ANT_NEST); + + + public static final DeferredItem URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_ORE); + + + public static final DeferredItem DEEPSLATE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEEPSLATE_URANIUM_ORE); + + + public static final DeferredItem TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_ORE); + + + public static final DeferredItem DEEPSLATE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEEPSLATE_TITANIUM_ORE); + + + public static final DeferredItem URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_BLOCK); + + + public static final DeferredItem TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_BLOCK); + + + public static final DeferredItem RAW_URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.RAW_URANIUM_BLOCK); + + + public static final DeferredItem RAW_TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.RAW_TITANIUM_BLOCK); + + + public static final DeferredItem CUT_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_URANIUM); + + + public static final DeferredItem CUT_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_TITANIUM); + + + public static final DeferredItem CUT_URANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_URANIUM_SLAB); + + + public static final DeferredItem CUT_TITANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_TITANIUM_SLAB); + + + public static final DeferredItem CUT_URANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_URANIUM_STAIRS); + + + public static final DeferredItem CUT_TITANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_TITANIUM_STAIRS); + + + public static final DeferredItem CHISELED_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CHISELED_URANIUM); + + + public static final DeferredItem CHISELED_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CHISELED_TITANIUM); + + + public static final DeferredItem URANIUM_BULB_ITEM = ITEMS.register("uranium_bulb", + () -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(AntarchyFabricBlocks.URANIUM_BULB.get(), new Item.Properties())); + + + public static final DeferredItem TITANIUM_BULB_ITEM = ITEMS.register("titanium_bulb", + () -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(AntarchyFabricBlocks.TITANIUM_BULB.get(), new Item.Properties())); + + + public static final DeferredItem URANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_DOOR); + + + public static final DeferredItem TITANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_DOOR); + + + public static final DeferredItem URANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_TRAPDOOR); + + + public static final DeferredItem TITANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_TRAPDOOR); + + + public static final DeferredItem URANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_BARS); + + + public static final DeferredItem TITANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_BARS); + + + public static final DeferredItem ANTIMETAL_ITEM = ITEMS.register("antimetal", + () -> new AntimetalBlockItem(AntarchyFabricBlocks.ANTIMETAL.get(), new Item.Properties())); + + + public static final DeferredItem POLISHED_ANTIMETAL_ITEM = ITEMS.register("polished_antimetal", + () -> new AntimetalBlockItem(AntarchyFabricBlocks.POLISHED_ANTIMETAL.get(), new Item.Properties())); + + + public static final DeferredItem ANTIMETAL_SCAFFOLDING_ITEM = ITEMS.register("antimetal_scaffolding", + () -> new AntimetalScaffoldingItem(AntarchyFabricBlocks.ANTIMETAL_SCAFFOLDING.get(), new Item.Properties())); + + + public static final DeferredItem SMALL_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SMALL_BLOOD_CRYSTAL_BUD); + + + public static final DeferredItem MEDIUM_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.MEDIUM_BLOOD_CRYSTAL_BUD); + + + public static final DeferredItem LARGE_BLOOD_CRYSTAL_BUD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.LARGE_BLOOD_CRYSTAL_BUD); + + + public static final DeferredItem BUDDING_BLOOD_CRYSTAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BUDDING_BLOOD_CRYSTAL); + + + public static final DeferredItem BLOOD_CRYSTAL_ITEM = ITEMS.register("blood_crystal_block", + () -> new net.minecraft.world.item.BlockItem(AntarchyFabricBlocks.BLOOD_CRYSTAL.get(), new Item.Properties())); + + + public static final DeferredItem BLOOD_CRYSTAL_CRYSTAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BLOOD_CRYSTAL_CRYSTAL); + + + public static final DeferredItem DREAM_SAND_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DREAM_SAND); + + + public static final DeferredItem DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DREAM_SANDSTONE); + + + public static final DeferredItem CHISELED_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CHISELED_DREAM_SANDSTONE); + + + public static final DeferredItem CUT_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_DREAM_SANDSTONE); + + + public static final DeferredItem SMOOTH_DREAM_SANDSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SMOOTH_DREAM_SANDSTONE); + + + public static final DeferredItem DREAM_SANDSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DREAM_SANDSTONE_STAIRS); + + + public static final DeferredItem DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DREAM_SANDSTONE_SLAB); + + + public static final DeferredItem DREAM_SANDSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DREAM_SANDSTONE_WALL); + + + public static final DeferredItem SMOOTH_DREAM_SANDSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SMOOTH_DREAM_SANDSTONE_STAIRS); + + + public static final DeferredItem SMOOTH_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SMOOTH_DREAM_SANDSTONE_SLAB); + + + public static final DeferredItem CUT_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_DREAM_SANDSTONE_SLAB); + + + public static final DeferredItem DUCT_TAPE_ITEM = ITEMS.register("duct_tape", + () -> new DuctTapeBlockItem(AntarchyFabricBlocks.DUCT_TAPE.get(), new Item.Properties().stacksTo(1))); + + + public static final DeferredItem INFESTED_ROOTED_DIRT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.INFESTED_ROOTED_DIRT); + + + public static final DeferredItem INFESTED_COARSE_DIRT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.INFESTED_COARSE_DIRT); + + + public static final DeferredItem NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.NYXITE); + + + public static final DeferredItem POLISHED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.POLISHED_NYXITE); + + + public static final DeferredItem CHISELED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CHISELED_NYXITE); + + + public static final DeferredItem NYXITE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.NYXITE_BRICKS); + + + public static final DeferredItem NYXITE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.NYXITE_STAIRS); + + + public static final DeferredItem NYXITE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.NYXITE_SLAB); + + + public static final DeferredItem NYXITE_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.NYXITE_WALL); + + + public static final DeferredItem POLISHED_NYXITE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.POLISHED_NYXITE_STAIRS); + + + public static final DeferredItem POLISHED_NYXITE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.POLISHED_NYXITE_SLAB); + + + public static final DeferredItem POLISHED_NYXITE_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.POLISHED_NYXITE_WALL); + + + public static final DeferredItem NYXITE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.NYXITE_BRICK_STAIRS); + + + public static final DeferredItem NYXITE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.NYXITE_BRICK_SLAB); + + + public static final DeferredItem NYXITE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.NYXITE_BRICK_WALL); + + + public static final DeferredItem SHELLSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SHELLSTONE); + + + public static final DeferredItem POLISHED_SHELLSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.POLISHED_SHELLSTONE); + + + public static final DeferredItem SHELLSTONE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SHELLSTONE_BRICKS); + + + public static final DeferredItem CHISELED_SHELLSTONE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CHISELED_SHELLSTONE); + + + public static final DeferredItem MOSSY_SHELLSTONE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.MOSSY_SHELLSTONE_BRICKS); + + + public static final DeferredItem CRACKED_SHELLSTONE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CRACKED_SHELLSTONE_BRICKS); + + + public static final DeferredItem MOSSY_SHELLSTONE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.MOSSY_SHELLSTONE_BRICK_STAIRS); + + + public static final DeferredItem MOSSY_SHELLSTONE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.MOSSY_SHELLSTONE_BRICK_SLAB); + + + public static final DeferredItem MOSSY_SHELLSTONE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.MOSSY_SHELLSTONE_BRICK_WALL); + + + public static final DeferredItem SHELLSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SHELLSTONE_STAIRS); + + + public static final DeferredItem SHELLSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SHELLSTONE_SLAB); + + + public static final DeferredItem SHELLSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SHELLSTONE_WALL); + + + public static final DeferredItem POLISHED_SHELLSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.POLISHED_SHELLSTONE_STAIRS); + + + public static final DeferredItem POLISHED_SHELLSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.POLISHED_SHELLSTONE_SLAB); + + + public static final DeferredItem POLISHED_SHELLSTONE_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.POLISHED_SHELLSTONE_WALL); + + + public static final DeferredItem SHELLSTONE_BRICK_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SHELLSTONE_BRICK_STAIRS); + + + public static final DeferredItem SHELLSTONE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SHELLSTONE_BRICK_SLAB); + + + public static final DeferredItem SHELLSTONE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.SHELLSTONE_BRICK_WALL); + + + public static final DeferredItem TRIFFID_GOO_BLOCK_ITEM = ITEMS.register("triffid_goo_block", + () -> new com.craisinlord.antarchy.content.item.TriffidGooBlockItem(AntarchyFabricBlocks.TRIFFID_GOO_BLOCK.get(), new Item.Properties())); + + + public static final DeferredItem PALE_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.PALE_NYXITE); + + + public static final DeferredItem NYXITE_SPIKE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.NYXITE_SPIKE); + + + public static final DeferredItem POTENT_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.POTENT_NYXITE); + + + public static final DeferredItem UMBRAL_MOSS_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.UMBRAL_MOSS_BLOCK); + + + public static final DeferredItem UMBRAL_MOSS_CARPET_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.UMBRAL_MOSS_CARPET); + + + public static final DeferredItem BLUSH_MOSS_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BLUSH_MOSS_BLOCK); + + + public static final DeferredItem BLUSH_MOSS_CARPET_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BLUSH_MOSS_CARPET); + + + public static final DeferredItem DREAM_TORCH_ITEM = ITEMS.register("dream_torch", + () -> new StandingAndWallBlockItem(AntarchyFabricBlocks.DREAM_TORCH.get(), AntarchyFabricBlocks.DREAM_WALL_TORCH.get(), new Item.Properties(), Direction.UP)); + + + public static final DeferredItem DREAM_LANTERN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DREAM_LANTERN); + + + public static final DeferredItem DREAM_CAMPFIRE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DREAM_CAMPFIRE); + + + public static final DeferredItem BED_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BED_BUG_EGG); + + + public static final DeferredItem WASP_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.WASP_NEST); + + + public static final DeferredItem HUSHWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.HUSHWEED); + + + public static final DeferredItem BILE_BUCKET = ITEMS.register("bile_bucket", + () -> new BucketItem(AntarchyFabricMisc.BILE.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); + + + public static final DeferredItem ICHOR_BUCKET = ITEMS.register("ichor_bucket", + () -> new BucketItem(AntarchyFabricMisc.ICHOR.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); + + + public static final DeferredItem ANTIWATER_BUCKET = ITEMS.register("antiwater_bucket", + () -> new BucketItem(AntarchyFabricMisc.ANTIWATER.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); + + + public static final DeferredItem LUMEN_BUCKET = ITEMS.register("lumen_bucket", + () -> new BucketItem(AntarchyFabricMisc.LUMEN.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); + + + public static final DeferredItem LUMEN_FROGLIGHT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.LUMEN_FROGLIGHT); + + + public static final DeferredItem ROSEATE_FROGLIGHT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.ROSEATE_FROGLIGHT); + + + public static final DeferredItem CLOUD_BUCKET = ITEMS.register("cloud_bucket", + () -> new com.craisinlord.antarchy.content.item.CloudBucketItem(AntarchyFabricBlocks.CLOUD_BLOCK.get(), new Item.Properties().craftRemainder(Items.BUCKET))); + + + public static final DeferredItem BLOOD_CRYSTAL_SHARD = ITEMS.register("blood_crystal_shard", + () -> new com.craisinlord.antarchy.content.item.BloodCrystalShardItem(new Item.Properties())); + + + public static final DeferredItem BLOOD_CRYSTAL_APPLE = ITEMS.register("blood_crystal_apple", + () -> new BloodCrystalAppleItem(new Item.Properties() + .rarity(Rarity.RARE) + .food(new net.minecraft.world.food.FoodProperties.Builder() + .nutrition(4) + .saturationModifier(1.2f) + .effect(new MobEffectInstance(net.minecraft.world.effect.MobEffects.REGENERATION, 100, 1), 1.0f) + .alwaysEdible() + .build()))); + + + public static final DeferredItem BLOOD_CRYSTAL_HELMET = ITEMS.register("blood_crystal_helmet", + () -> new BloodCrystalArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.BLOOD_CRYSTAL_ARMOR_MATERIAL.get()), ArmorItem.Type.HELMET, new Item.Properties().rarity(Rarity.RARE))); + + + public static final DeferredItem BLOOD_CRYSTAL_CHESTPLATE = ITEMS.register("blood_crystal_chestplate", + () -> new BloodCrystalArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.BLOOD_CRYSTAL_ARMOR_MATERIAL.get()), ArmorItem.Type.CHESTPLATE, new Item.Properties().rarity(Rarity.RARE))); + + + public static final DeferredItem BLOOD_CRYSTAL_LEGGINGS = ITEMS.register("blood_crystal_leggings", + () -> new BloodCrystalArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.BLOOD_CRYSTAL_ARMOR_MATERIAL.get()), ArmorItem.Type.LEGGINGS, new Item.Properties().rarity(Rarity.RARE))); + + + public static final DeferredItem BLOOD_CRYSTAL_BOOTS = ITEMS.register("blood_crystal_boots", + () -> new BloodCrystalArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.BLOOD_CRYSTAL_ARMOR_MATERIAL.get()), ArmorItem.Type.BOOTS, new Item.Properties().rarity(Rarity.RARE))); + + + public static final DeferredItem BLOOD_CRYSTAL_KATANA = ITEMS.register("blood_crystal_katana", + () -> new BloodCrystalKatanaItem( + BLOOD_CRYSTAL_KATANA_TIER, + new Item.Properties().stacksTo(1).durability(1200).rarity(Rarity.RARE), + AntarchySettings.bloodCrystalKatanaAttackDamage(), + -2.2F + )); + + + public static final DeferredItem MANTIS_CLAW = ITEMS.registerSimpleItem("mantis_claw", new Item.Properties().rarity(Rarity.UNCOMMON)); + + + public static final DeferredItem KING_SCALE = ITEMS.register("king_scale", + () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); + + + public static final DeferredItem QUEEN_SCALE = ITEMS.register("queen_scale", + () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); + + + public static final DeferredItem STINK_BUG_ITEM = ITEMS.register("stink_bug", + () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON))); + + + public static final DeferredItem JUMPY_BUG_LEG = ITEMS.register("jumpy_bug_leg", + () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.UNCOMMON))); + + + public static final DeferredItem JUMPY_BOOTS = ITEMS.register("jumpy_boots", + () -> new com.craisinlord.antarchy.content.item.JumpyBootsItem( + net.minecraft.core.Holder.direct(AntarchyFabricMisc.JUMPY_BOOTS_ARMOR_MATERIAL.get()), + new Item.Properties().stacksTo(1).rarity(Rarity.UNCOMMON).fireResistant().durability(ArmorItem.Type.BOOTS.getDurability(37)) + )); + + + public static final DeferredItem BRUTALFLY_WING = ITEMS.registerSimpleItem("brutalfly_wing", new Item.Properties().rarity(Rarity.UNCOMMON)); + + + public static final DeferredItem BRUTALFLY_ELYTRA = ITEMS.register("brutalfly_elytra", + () -> new BrutalflyElytraItem(new Item.Properties().rarity(Rarity.UNCOMMON).durability(480))); + + + public static final DeferredItem CORNEA_EAR = ITEMS.register("cornea_ear", + () -> new CorneaEarItem(new Item.Properties() + .rarity(Rarity.UNCOMMON) + .food(new FoodProperties.Builder() + .nutrition(2) + .saturationModifier(0.4F) + .build()))); + + + public static final DeferredItem CORN = ITEMS.register("corn", + () -> new Item(new Item.Properties() + .food(new FoodProperties.Builder() + .nutrition(3) + .saturationModifier(0.6F) + .build()))); + + + public static final DeferredItem CORN_SEEDS = ITEMS.register("corn_seeds", + () -> new net.minecraft.world.item.ItemNameBlockItem(AntarchyFabricBlocks.CORN_CROP.get(), new Item.Properties())); + + + public static final DeferredItem RAW_VENISON = ITEMS.register("raw_venison", + () -> new Item(new Item.Properties() + .food(new FoodProperties.Builder() + .nutrition(2) + .saturationModifier(0.3F) + .build()))); + + + public static final DeferredItem COOKED_VENISON = ITEMS.register("cooked_venison", + () -> new Item(new Item.Properties() + .food(new FoodProperties.Builder() + .nutrition(6) + .saturationModifier(0.8F) + .build()))); + + + public static final DeferredItem PEACH = ITEMS.register("peach", + () -> new com.craisinlord.antarchy.content.item.PeachItem()); + + + public static final DeferredItem PEACH_PIE = ITEMS.register("peach_pie", + () -> new Item(new Item.Properties() + .stacksTo(64) + .food(new FoodProperties.Builder() + .nutrition(8) + .saturationModifier(0.3F) + .build()))); + + + public static final DeferredItem CORNBREAD = ITEMS.register("cornbread", + () -> new Item(new Item.Properties() + .stacksTo(64) + .food(new FoodProperties.Builder() + .nutrition(8) + .saturationModifier(0.9F) + .build()))); + + + public static final DeferredItem POPCORN = ITEMS.register("popcorn", + () -> new Item(new Item.Properties() + .stacksTo(64) + .food(new FoodProperties.Builder() + .nutrition(1) + .saturationModifier(0.1F) + .build()))); + + + public static final DeferredItem RAW_CORNDOG = ITEMS.register("raw_corndog", + () -> new Item(new Item.Properties() + .stacksTo(64) + .food(new FoodProperties.Builder() + .nutrition(8) + .saturationModifier(0.7F) + .build()))); + + + public static final DeferredItem COOKED_CORNDOG = ITEMS.register("cooked_corndog", + () -> new Item(new Item.Properties() + .stacksTo(64) + .food(new FoodProperties.Builder() + .nutrition(14) + .saturationModifier(1.1F) + .build()))); + + + public static final DeferredItem HIGH_FRUCTOSE_CORN_SYRUP = ITEMS.register("high_fructose_corn_syrup", + () -> new com.craisinlord.antarchy.content.item.HighFructoseCornSyrupItem(new Item.Properties() + .stacksTo(16) + .food(new FoodProperties.Builder() + .nutrition(0) + .saturationModifier(0.0F) + .alwaysEdible() + .build()))); + + + public static final DeferredItem ROOT_BEER = ITEMS.register("root_beer", + () -> new com.craisinlord.antarchy.content.item.RootBeerItem(new Item.Properties() + .stacksTo(16) + .food(new FoodProperties.Builder() + .nutrition(4) + .saturationModifier(0.4F) + .effect(new MobEffectInstance(MobEffects.REGENERATION, 100, 0), 1.0F) + .alwaysEdible() + .build()))); + + + public static final DeferredItem TRIFFID_GOO = ITEMS.registerSimpleItem("triffid_goo", + new Item.Properties().rarity(Rarity.UNCOMMON)); + + + public static final DeferredItem VORTEX_EYE = ITEMS.register("vortex_eye", + () -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE))); + + + public static final DeferredItem RAW_URANIUM_SCRAP = ITEMS.registerSimpleItem("raw_uranium_scrap", new Item.Properties().rarity(Rarity.UNCOMMON)); + + + public static final DeferredItem RAW_TITANIUM_SCRAP = ITEMS.registerSimpleItem("raw_titanium_scrap", new Item.Properties().rarity(Rarity.UNCOMMON)); + + + public static final DeferredItem RAW_URANIUM = ITEMS.registerSimpleItem("raw_uranium", new Item.Properties().rarity(Rarity.UNCOMMON)); + + + public static final DeferredItem RAW_TITANIUM = ITEMS.registerSimpleItem("raw_titanium", new Item.Properties().rarity(Rarity.UNCOMMON)); + + + public static final DeferredItem MUD_PIE = ITEMS.register("mud_pie", + () -> new Item(new Item.Properties() + .food(new FoodProperties.Builder() + .nutrition(10) + .saturationModifier(0.9F) + .effect(new MobEffectInstance(MobEffects.CONFUSION, 200), 1.0F) + .build()))); + + + public static final DeferredItem RAINBOW_SUGAR = ITEMS.register("rainbow_sugar", + () -> new RainbowSugarItem(new Item.Properties() + .rarity(Rarity.UNCOMMON) + .food(new FoodProperties.Builder().nutrition(1).saturationModifier(0.0F).alwaysEdible().build()))); + + + public static final DeferredItem URANIUM_NUGGET = ITEMS.registerSimpleItem("uranium_nugget", new Item.Properties().rarity(Rarity.UNCOMMON)); + + + public static final DeferredItem TITANIUM_NUGGET = ITEMS.registerSimpleItem("titanium_nugget", new Item.Properties().rarity(Rarity.UNCOMMON)); + + + public static final DeferredItem URANIUM_INGOT = ITEMS.registerSimpleItem("uranium_ingot", new Item.Properties().rarity(Rarity.UNCOMMON).fireResistant()); + + + public static final DeferredItem TITANIUM_INGOT = ITEMS.registerSimpleItem("titanium_ingot", new Item.Properties().rarity(Rarity.UNCOMMON).fireResistant()); + + + public static final DeferredItem MOLEVORE_NOSE = ITEMS.registerSimpleItem("molevore_nose", new Item.Properties().rarity(Rarity.RARE)); + + + public static final DeferredItem MOLEWORM_ITEM = ITEMS.register("moleworm", + () -> new Item(new Item.Properties() + .food(new FoodProperties.Builder() + .nutrition(1) + .saturationModifier(0.0F) + .effect(new MobEffectInstance(MobEffects.HUNGER, 600), 0.8F) + .build()))); + + + public static final DeferredItem CLOUD_SHARK_FIN = ITEMS.registerSimpleItem("cloud_shark_fin", new Item.Properties().rarity(Rarity.UNCOMMON)); + + + public static final DeferredItem CLOUD_SHARK_FIN_SOUP = ITEMS.register("cloud_shark_fin_soup", + () -> new CloudSharkFinSoupItem(new Item.Properties() + .stacksTo(1) + .craftRemainder(Items.BOWL) + .food(new FoodProperties.Builder() + .nutrition(10) + .saturationModifier(0.8F) + .effect(new MobEffectInstance(MobEffects.DAMAGE_BOOST, 600, 0), 1.0F) + .effect(new MobEffectInstance(MobEffects.SLOW_FALLING, 600, 0), 1.0F) + .build()))); + + + public static final DeferredItem KRAKEN_TOOTH = ITEMS.register("kraken_tooth", + () -> new Item(new Item.Properties().rarity(net.minecraft.world.item.Rarity.RARE))); + + + public static final DeferredItem BASILISK_FANG = ITEMS.registerSimpleItem("basilisk_fang", new Item.Properties().rarity(Rarity.RARE)); + + + public static final DeferredItem BASILISK_DAGGER = ITEMS.register("basilisk_dagger", + () -> new BasiliskDaggerItem(Tiers.IRON, new Item.Properties().rarity(Rarity.RARE), 4, -1.8F)); + + + public static final DeferredItem EMPEROR_SCORPION_STINGER = ITEMS.registerSimpleItem("emperor_scorpion_stinger", new Item.Properties().rarity(Rarity.RARE)); + + + public static final DeferredItem SCORPION_WHIP = ITEMS.register("scorpion_whip", + () -> new ScorpionWhipItem(Tiers.IRON, new Item.Properties().rarity(Rarity.RARE).durability(384))); + + + public static final DeferredItem MOGGLES = ITEMS.register("moggles", + () -> new MogglesItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.MOGGLES_ARMOR_MATERIAL.get()), new Item.Properties().rarity(Rarity.RARE).stacksTo(1))); + + + public static final DeferredItem FALLEN_KING_CROWN = ITEMS.register("fallen_king_crown", + () -> new com.craisinlord.antarchy.content.item.FallenKingCrownItem( + net.minecraft.core.Holder.direct(AntarchyFabricMisc.FALLEN_KING_CROWN_ARMOR_MATERIAL.get()), + new Item.Properties().rarity(Rarity.RARE) + )); + + + public static final DeferredItem ULTIMATE_HELMET = ITEMS.register("ultimate_helmet", + () -> new UltimateArmorItem( + net.minecraft.core.Holder.direct(AntarchyFabricMisc.ULTIMATE_ARMOR_MATERIAL.get()), + ArmorItem.Type.HELMET, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.HELMET.getDurability(41)) + )); + + + public static final DeferredItem ULTIMATE_CHESTPLATE = ITEMS.register("ultimate_chestplate", + () -> new UltimateArmorItem( + net.minecraft.core.Holder.direct(AntarchyFabricMisc.ULTIMATE_ARMOR_MATERIAL.get()), + ArmorItem.Type.CHESTPLATE, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.CHESTPLATE.getDurability(41)) + )); + + + public static final DeferredItem ULTIMATE_LEGGINGS = ITEMS.register("ultimate_leggings", + () -> new UltimateArmorItem( + net.minecraft.core.Holder.direct(AntarchyFabricMisc.ULTIMATE_ARMOR_MATERIAL.get()), + ArmorItem.Type.LEGGINGS, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.LEGGINGS.getDurability(41)) + )); + + + public static final DeferredItem ULTIMATE_BOOTS = ITEMS.register("ultimate_boots", + () -> new UltimateArmorItem( + net.minecraft.core.Holder.direct(AntarchyFabricMisc.ULTIMATE_ARMOR_MATERIAL.get()), + ArmorItem.Type.BOOTS, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.BOOTS.getDurability(41)) + )); + + + public static final DeferredItem ULTIMATE_SWORD = ITEMS.register("ultimate_sword", + () -> new UltimateSwordItem( + ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimateSwordAttackDamage, + -2.4F + )); + + + public static final DeferredItem ULTIMATE_PICKAXE = ITEMS.register("ultimate_pickaxe", + () -> new UltimatePickaxeItem( + ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimatePickaxeAttackDamage, + -2.8F + )); + + + public static final DeferredItem ULTIMATE_AXE = ITEMS.register("ultimate_axe", + () -> new UltimateAxeItem( + ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimateAxeAttackDamage, + -3.0F + )); + + + public static final DeferredItem ULTIMATE_SHOVEL = ITEMS.register("ultimate_shovel", + () -> new UtlimateShovelItem( + ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimateShovelAttackDamage, + -3.0F + )); + + + public static final DeferredItem ULTIMATE_HOE = ITEMS.register("ultimate_hoe", + () -> new UltimateHoeItem( + ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + AntarchySettings::ultimateHoeAttackDamage, + 0.0F + )); + + + public static final DeferredItem ULTIMATE_BOW = ITEMS.register("ultimate_bow", + () -> new UltimateBowItem(new Item.Properties().stacksTo(1).durability(768).rarity(Rarity.EPIC).fireResistant())); + + + public static final DeferredItem ULTIMATE_CROSSBOW = ITEMS.register("ultimate_crossbow", + () -> new UltimateCrossbowItem(new Item.Properties().stacksTo(1).durability(1024).rarity(Rarity.EPIC).fireResistant())); + + + public static final DeferredItem NIGHTMARE_HELMET = ITEMS.register("nightmare_helmet", + () -> new NightmareArmorItem( + net.minecraft.core.Holder.direct(AntarchyFabricMisc.NIGHTMARE_ARMOR_MATERIAL.get()), + ArmorItem.Type.HELMET, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.HELMET.getDurability(41)) + )); + + + public static final DeferredItem NIGHTMARE_CHESTPLATE = ITEMS.register("nightmare_chestplate", + () -> new NightmareArmorItem( + net.minecraft.core.Holder.direct(AntarchyFabricMisc.NIGHTMARE_ARMOR_MATERIAL.get()), + ArmorItem.Type.CHESTPLATE, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.CHESTPLATE.getDurability(41)) + )); + + + public static final DeferredItem NIGHTMARE_LEGGINGS = ITEMS.register("nightmare_leggings", + () -> new NightmareArmorItem( + net.minecraft.core.Holder.direct(AntarchyFabricMisc.NIGHTMARE_ARMOR_MATERIAL.get()), + ArmorItem.Type.LEGGINGS, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.LEGGINGS.getDurability(41)) + )); + + + public static final DeferredItem NIGHTMARE_BOOTS = ITEMS.register("nightmare_boots", + () -> new NightmareArmorItem( + net.minecraft.core.Holder.direct(AntarchyFabricMisc.NIGHTMARE_ARMOR_MATERIAL.get()), + ArmorItem.Type.BOOTS, + new Item.Properties() + .rarity(Rarity.EPIC) + .fireResistant() + .durability(ArmorItem.Type.BOOTS.getDurability(41)) + )); + + + public static final DeferredItem NIGHTMARE_SWORD = ITEMS.register("nightmare_sword", + () -> new NightmareSwordItem( + ULTIMATE_TIER, + new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant(), + -2.4F + )); + + + public static final DeferredItem SHRINK_RAY = ITEMS.register("shrink_ray", + () -> new SizeRayItem( + new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant(), + AntarchyFabricEntities.SHRINK_RAY_PROJECTILE, + SizeRayProjectileEntity.SizeRayType.SHRINK, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/shrink_ray.geo.json"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/models/item/shrink_ray.png"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/shrink_ray.animation.json"), + "shrink_ray_active" + )); + + + public static final DeferredItem GROWTH_RAY = ITEMS.register("growth_ray", + () -> new SizeRayItem( + new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant(), + AntarchyFabricEntities.GROWTH_RAY_PROJECTILE, + SizeRayProjectileEntity.SizeRayType.GROWTH, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/growth_ray.geo.json"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/models/item/growth_ray.png"), + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/growth_ray.animation.json"), + "growth_ray_active" + )); + + + public static final DeferredItem GRAVITY_GUN = ITEMS.register("gravity_gun", + () -> new GravityGunItem(new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant())); + + + // Temporarily disabled: keeping the code but not registering the item for now. + // public static final DeferredItem MINERS_DREAM = ITEMS.register("miners_dream", + // () -> new MinersDreamItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); + + + public static final DeferredItem SQUIDZOOKA = ITEMS.register("squidzooka", + () -> new SquidzookaItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.RARE))); + + + public static final DeferredItem BATTLE_AXE = ITEMS.register("battle_axe", + () -> new BattleAxeItem( + Tiers.NETHERITE, + new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant(), + AntarchySettings::battleAxeAttackDamage, + -3.1F + )); + + + public static final DeferredItem DIAMOND_MINECART_ITEM = ITEMS.register("diamond_minecart", + () -> new DiamondMinecartItem(AntarchyFabricEntities.DIAMOND_MINECART, new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); + + + public static final DeferredItem REVERIE_BOTTLE = ITEMS.register("reverie_bottle", + () -> new ReverieBottleItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); + + + public static final DeferredItem BIG_BERTHA_BLADE = ITEMS.registerSimpleItem( + "big_bertha_blade", + new Item.Properties().rarity(Rarity.EPIC).fireResistant() + ); + + + public static final DeferredItem BIG_BERTHA_HANDLE = ITEMS.registerSimpleItem( + "big_bertha_handle", + new Item.Properties().rarity(Rarity.EPIC).fireResistant() + ); + + + public static final DeferredItem BIG_BERTHA_HILT = ITEMS.registerSimpleItem( + "big_bertha_hilt", + new Item.Properties().rarity(Rarity.EPIC).fireResistant() + ); + + + public static final DeferredItem BIG_BERTHA = ITEMS.register("big_bertha", + () -> new BigBerthaItem( + Tiers.NETHERITE, + new Item.Properties() + .stacksTo(1) + .rarity(Rarity.EPIC) + .fireResistant() + )); + + + + public static final DeferredItem EASTER_BUNNY_SPAWN_EGG = ITEMS.register("easter_bunny_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.EASTER_BUNNY, 0xFFF2B2, 0xFF85B5, new Item.Properties())); + + + public static final DeferredItem FLYING_SQUIRREL_SPAWN_EGG = ITEMS.register("flying_squirrel_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.FLYING_SQUIRREL, 0x7D6649, 0xDCC59C, new Item.Properties())); + + + public static final DeferredItem CATERPILLAR_SPAWN_EGG = ITEMS.register("caterpillar_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.CATERPILLAR, 0xA8D96A, 0xF4E04D, new Item.Properties())); + + + public static final DeferredItem BUTTERFLY_SPAWN_EGG = ITEMS.register("butterfly_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.BUTTERFLY, 0x7A4A1E, 0xFF7A00, new Item.Properties())); + + + public static final DeferredItem REVERIE_SPAWN_EGG = ITEMS.register("reverie_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.REVERIE, 0xF2F2F2, 0xBFC3C7, new Item.Properties())); + + + public static final DeferredItem BRUTALFLY_SPAWN_EGG = ITEMS.register("brutalfly_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.BRUTALFLY, 0x4A2214, 0xFF8A1D, new Item.Properties().rarity(Rarity.EPIC))); + + + public static final DeferredItem RED_ANT_SPAWN_EGG = ITEMS.register("red_ant_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.RED_ANT, 0xA31818, 0x2B0909, new Item.Properties())); + + + public static final DeferredItem BROWN_ANT_SPAWN_EGG = ITEMS.register("brown_ant_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.BROWN_ANT, 0x6A4320, 0x26160A, new Item.Properties())); + + + public static final DeferredItem RAINBOW_ANT_SPAWN_EGG = ITEMS.register("rainbow_ant_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.RAINBOW_ANT, 0x56D4F0, 0xF66DBB, new Item.Properties())); + + + public static final DeferredItem MOLEWORM_SPAWN_EGG = ITEMS.register("moleworm_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.MOLEWORM, 0xB8B8B8, 0x8A623A, new Item.Properties())); + + + public static final DeferredItem MANTIS_SPAWN_EGG = ITEMS.register("mantis_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.MANTIS, 0xF8F8F2, 0x63B44A, new Item.Properties())); + + + public static final DeferredItem ALPHA_MANTIS_SPAWN_EGG = ITEMS.register("alpha_mantis_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.ALPHA_MANTIS, 0x8FDD6C, 0x2F5D22, new Item.Properties())); + + + public static final DeferredItem MOLEVORE_SPAWN_EGG = ITEMS.register("molevore_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.MOLEVORE, 0x4A4A4A, 0x6B4A2B, new Item.Properties().rarity(Rarity.UNCOMMON))); + + + public static final DeferredItem TRIFFID_SPAWN_EGG = ITEMS.register("triffid_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.TRIFFID, 0x4C8F3A, 0xFF2FB3, new Item.Properties().rarity(Rarity.UNCOMMON))); + + + public static final DeferredItem APPLE_COW_SPAWN_EGG = ITEMS.register("apple_cow_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.APPLE_COW, 0xFF1A1A, 0x32FF32, new Item.Properties())); + + + public static final DeferredItem GOLDEN_APPLE_COW_SPAWN_EGG = ITEMS.register("golden_apple_cow_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.GOLDEN_APPLE_COW, 0xFFE14A, 0x32FF32, new Item.Properties())); + + + public static final DeferredItem ENCHANTED_GOLDEN_APPLE_COW_SPAWN_EGG = ITEMS.register("enchanted_golden_apple_cow_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.ENCHANTED_GOLDEN_APPLE_COW, 0x7040B6, 0xFFE14A, new Item.Properties())); + + + public static final DeferredItem DR_TRAYAURUS_SPAWN_EGG = ITEMS.register("dr_trayaurus_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.DR_TRAYAURUS, 0xB7A27B, 0x4A3D29, new Item.Properties())); + + + public static final DeferredItem WASP_SPAWN_EGG = ITEMS.register("wasp_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.WASP, 0x111111, 0xF1D800, new Item.Properties())); + + + public static final DeferredItem BOMBER_SPAWN_EGG = ITEMS.register("bomber_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.BOMBER, 0x7A7A7A, 0xB32020, new Item.Properties())); + + + public static final DeferredItem CLOUD_SHARK_SPAWN_EGG = ITEMS.register("cloud_shark_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.CLOUD_SHARK, 0xDDEAF4, 0x7F96A8, new Item.Properties())); + + + public static final DeferredItem KRAKEN_SPAWN_EGG = ITEMS.register("kraken_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.KRAKEN, 0x163C53, 0x4F8E99, new Item.Properties().rarity(Rarity.EPIC))); + + + public static final DeferredItem MISSILE_SQUID_SPAWN_EGG = ITEMS.register("missile_squid_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.MISSILE_SQUID, 0xD88FA7, 0x8D5269, new Item.Properties().rarity(Rarity.UNCOMMON))); + + + public static final DeferredItem OCTOPUS_BOMB_SPAWN_EGG = ITEMS.register("octopus_bomb_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.OCTOPUS_BOMB, 0xC882C8, 0x5C1A7A, new Item.Properties().rarity(Rarity.UNCOMMON))); + + + public static final DeferredItem NIGHTMARE_SPAWN_EGG = ITEMS.register("nightmare_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.NIGHTMARE, 0x22121C, 0xB51B2D, new Item.Properties().rarity(Rarity.RARE))); + + + public static final DeferredItem BED_BUG_SPAWN_EGG = ITEMS.register("bed_bug_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.BED_BUG, 0x3B2218, 0x611111, new Item.Properties())); + + + public static final DeferredItem LUCID_SPAWN_EGG = ITEMS.register("lucid_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.LUCID, 0xE53935, 0xF4D03F, new Item.Properties().rarity(Rarity.RARE))); + + + public static final DeferredItem SCORPION_SPAWN_EGG = ITEMS.register("scorpion_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.SCORPION, 0xA8D8FF, 0xE04B5A, new Item.Properties())); + + + public static final DeferredItem BASILISK_SPAWN_EGG = ITEMS.register("basilisk_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.BASILISK, 0x4A7C40, 0xD4A040, new Item.Properties())); + + + public static final DeferredItem EMPEROR_SCORPION_SPAWN_EGG = ITEMS.register("emperor_scorpion_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.EMPEROR_SCORPION, 0x3A3242, 0xD8CDB4, new Item.Properties())); + + + public static final DeferredItem LUCID_EYE = ITEMS.register("lucid_eye", + () -> new LucidEyeItem(new Item.Properties().stacksTo(16).rarity(Rarity.UNCOMMON))); + + + public static final DeferredItem LUCID_PEARL = ITEMS.register("lucid_pearl", + () -> new LucidPearlItem( + new Item.Properties().stacksTo(16).rarity(Rarity.UNCOMMON), + AntarchyFabricEntities.LUCID_PEARL_PROJECTILE + )); + + + public static final DeferredItem WATER_CANNON = ITEMS.register("water_cannon", + () -> new WaterCannonItem(new Item.Properties().stacksTo(1).durability(192).rarity(Rarity.RARE))); + + + public static final DeferredItem PRIMORDIAL_HELMET = ITEMS.register("primordial_helmet", + () -> new PrimordialArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.PRIMORDIAL_ARMOR_MATERIAL.get()), ArmorItem.Type.HELMET, + new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant().durability(ArmorItem.Type.HELMET.getDurability(37)))); + + + public static final DeferredItem PRIMORDIAL_CHESTPLATE = ITEMS.register("primordial_chestplate", + () -> new PrimordialArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.PRIMORDIAL_ARMOR_MATERIAL.get()), ArmorItem.Type.CHESTPLATE, + new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant().durability(ArmorItem.Type.CHESTPLATE.getDurability(37)))); + + + public static final DeferredItem PRIMORDIAL_LEGGINGS = ITEMS.register("primordial_leggings", + () -> new PrimordialArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.PRIMORDIAL_ARMOR_MATERIAL.get()), ArmorItem.Type.LEGGINGS, + new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant().durability(ArmorItem.Type.LEGGINGS.getDurability(37)))); + + + public static final DeferredItem PRIMORDIAL_BOOTS = ITEMS.register("primordial_boots", + () -> new PrimordialArmorItem(net.minecraft.core.Holder.direct(AntarchyFabricMisc.PRIMORDIAL_ARMOR_MATERIAL.get()), ArmorItem.Type.BOOTS, + new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant().durability(ArmorItem.Type.BOOTS.getDurability(37)))); + + + public static final DeferredItem TORETERROR_SPAWN_EGG = ITEMS.register("toreterror_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.TORETERROR, 0x90EE90, 0x5C4033, new Item.Properties().rarity(Rarity.EPIC))); + + + public static final DeferredItem CHEEP_SPAWN_EGG = ITEMS.register("cheep_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.CHEEP, 0xFF00AA, 0x00FF44, new Item.Properties())); + + + // Dorrie is not part of this update yet. + // public static final DeferredItem DORRIE_SPAWN_EGG = ITEMS.register("dorrie_spawn_egg", + // () -> new DeferredSpawnEggItem(AntarchyFabricEntities.DORRIE, 0x6F8CFF, 0xD2F2FF, new Item.Properties())); + + + public static final DeferredItem OURANWOOD_DEER_SPAWN_EGG = ITEMS.register("ouranwood_deer_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.OURANWOOD_DEER, 0x8A6D4B, 0xE8D9B5, new Item.Properties())); + + + public static final DeferredItem GLIMMER_SPAWN_EGG = ITEMS.register("glimmer_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.GLIMMER, 0x7DFFFF, 0x2AC7D0, new Item.Properties())); + + + public static final DeferredItem ELKA_SPAWN_EGG = ITEMS.register("elka_spawn_egg", + () -> new DeferredSpawnEggItem(AntarchyFabricEntities.ELKA, 0x6B2FA0, 0xFFFFFF, new Item.Properties())); + + + public static final DeferredItem SPIRIT_APPLE = ITEMS.register("spirit_apple", + () -> new com.craisinlord.antarchy.content.item.SpiritAppleItem(new Item.Properties() + .food(new FoodProperties.Builder() + .nutrition(4) + .saturationModifier(0.3F) + .build()))); + + + public static final DeferredItem GLIMMER_BOTTLE = ITEMS.register("glimmer_bottle", + com.craisinlord.antarchy.content.item.GlimmerBottleItem::new); + + + + public static Item cloudBucketItem() { + return CLOUD_BUCKET.get(); + } + + + + public static Item diamondMinecartItem() { + return DIAMOND_MINECART_ITEM.get(); + } + + + + public static Ingredient bloodCrystalRepairIngredient() { + return Ingredient.of(BuiltInRegistries.ITEM.getOptional(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "blood_crystal_shard")) + .orElse(Items.AIR)); + } + + + + public static Ingredient ultimateRepairIngredient() { + return Ingredient.of(TITANIUM_INGOT.get()); + } + + + public static void register() { + ITEMS.register(); + } + +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java new file mode 100644 index 00000000..733835db --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java @@ -0,0 +1,994 @@ +package com.craisinlord.antarchy.fabric.registry; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.compat.infinity.InfinityCompat; +import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.CreativeTabOrder; +import com.craisinlord.antarchy.content.block.*; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; +import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; +import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; +import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; +import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; +import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; +import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; +import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; +import com.craisinlord.antarchy.fabric.registry.DeferredBlock; +import com.craisinlord.antarchy.fabric.registry.DeferredHolder; +import com.craisinlord.antarchy.fabric.registry.DeferredItem; +import com.craisinlord.antarchy.fabric.registry.DeferredRegister; +import com.craisinlord.antarchy.content.effect.DreadMobEffect; +import com.craisinlord.antarchy.content.effect.GrowthMobEffect; +import com.craisinlord.antarchy.content.effect.InvertedMobEffect; +import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; +import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; +import com.craisinlord.antarchy.content.effect.StinkyMobEffect; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.JumpyBugEntity; +import com.craisinlord.antarchy.content.entity.StinkBugEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; +import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import com.craisinlord.antarchy.content.entity.RollyPollyEntity; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import com.craisinlord.antarchy.content.item.LucidEyeItem; +import com.craisinlord.antarchy.content.item.LucidPearlItem; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; +import com.craisinlord.antarchy.content.entity.WaterBombEntity; +import com.craisinlord.antarchy.content.item.PrimordialArmorItem; +import com.craisinlord.antarchy.content.item.WaterCannonItem; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.OctopusBombEntity; +import com.craisinlord.antarchy.content.entity.MolevoreEntity; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; +import com.craisinlord.antarchy.content.item.BattleAxeItem; +import com.craisinlord.antarchy.content.item.BasiliskDaggerItem; +import com.craisinlord.antarchy.content.item.BigBerthaItem; +import com.craisinlord.antarchy.content.item.AntimetalBlockItem; +import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; +import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; +import com.craisinlord.antarchy.content.item.CorneaEarItem; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.item.MinersDreamItem; +import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; +import com.craisinlord.antarchy.content.item.MogglesItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; +import com.craisinlord.antarchy.content.item.DiamondMinecartItem; +import com.craisinlord.antarchy.content.item.ReverieBottleItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync; +import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; +import com.craisinlord.antarchy.content.item.SizeRayItem; +import com.craisinlord.antarchy.content.item.SquidzookaItem; +import com.craisinlord.antarchy.content.item.SimpleToolTier; +import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; +import com.craisinlord.antarchy.content.item.NightmareArmorItem; +import com.craisinlord.antarchy.content.item.NightmareSwordItem; +import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; +import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; +import com.craisinlord.antarchy.content.item.RainbowSugarItem; +import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenSpireFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import com.craisinlord.antarchy.content.portal.PermanentPortalType; +import java.util.List; +import java.util.ArrayList; +import java.util.Comparator; +import com.mojang.serialization.MapCodec; +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; +import net.minecraft.advancements.critereon.EntitySubPredicate; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.StandingAndWallBlockItem; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.Tiers; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.AmethystClusterBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.DropExperienceBlock; +import net.minecraft.world.level.block.GlowLichenBlock; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.VineBlock; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.levelgen.DensityFunction; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; +import net.minecraft.world.level.levelgen.Heightmap; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; + +public final class AntarchyFabricMisc { + + public static final DeferredRegister ARMOR_MATERIALS = DeferredRegister.create(Registries.ARMOR_MATERIAL, Antarchy.MODID); + + + public static final DeferredRegister> PARTICLE_TYPES = DeferredRegister.create(Registries.PARTICLE_TYPE, Antarchy.MODID); + + + public static final DeferredRegister> FEATURES = DeferredRegister.create(Registries.FEATURE, Antarchy.MODID); + + + public static final DeferredRegister> BIOME_SOURCES = DeferredRegister.create(Registries.BIOME_SOURCE, Antarchy.MODID); + + + public static final DeferredRegister> DENSITY_FUNCTION_TYPES = DeferredRegister.create(Registries.DENSITY_FUNCTION_TYPE, Antarchy.MODID); + + + public static final DeferredRegister> ENTITY_SUB_PREDICATES = DeferredRegister.create(Registries.ENTITY_SUB_PREDICATE_TYPE, Antarchy.MODID); + + + public static final DeferredRegister ATTRIBUTES = DeferredRegister.create(Registries.ATTRIBUTE, Antarchy.MODID); + + + private static final TagKey BYPASSES_BLOODGLASS = + TagKey.create(net.minecraft.core.registries.Registries.DAMAGE_TYPE, ResourceLocation.fromNamespaceAndPath("antarchy", "bypasses_bloodglass")); + + + public static final DeferredHolder DOUBLE_DAMAGE_CHANCE = ATTRIBUTES.register( + "double_damage_chance", + () -> new net.minecraft.world.entity.ai.attributes.RangedAttribute("attribute.antarchy.double_damage_chance", 0.0, 0.0, 1.0).setSyncable(true) + ); + + + public static final DeferredRegister MOB_EFFECTS = DeferredRegister.create(Registries.MOB_EFFECT, Antarchy.MODID); + + + public static final DeferredRegister POTIONS = DeferredRegister.create(Registries.POTION, Antarchy.MODID); + + + public static final DeferredRegister FLUIDS = DeferredRegister.create(Registries.FLUID, Antarchy.MODID); + + + public static final DeferredRegister> MENUS = DeferredRegister.create(Registries.MENU, Antarchy.MODID); + + + public static final DeferredHolder, net.minecraft.world.inventory.MenuType> DORRIE_INVENTORY_MENU = + MENUS.register("dorrie_inventory", () -> new net.minecraft.world.inventory.MenuType<>(com.craisinlord.antarchy.content.menu.DorrieInventoryMenu::new, FeatureFlags.DEFAULT_FLAGS)); + + + public static final DeferredRegister> DATA_COMPONENT_TYPES = + DeferredRegister.create(Registries.DATA_COMPONENT_TYPE, Antarchy.MODID); + + + public static final DeferredRegister> RECIPE_SERIALIZERS = + DeferredRegister.create(Registries.RECIPE_SERIALIZER, Antarchy.MODID); + + + public static final DeferredHolder, net.minecraft.core.component.DataComponentType> GLIMMER_VARIANT = + DATA_COMPONENT_TYPES.register("glimmer_variant", + () -> net.minecraft.core.component.DataComponentType.builder() + .persistent(com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.CODEC) + .networkSynchronized(com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.STREAM_CODEC) + .build()); + + + public static final DeferredHolder, net.minecraft.core.component.DataComponentType> AMERICAN = + DATA_COMPONENT_TYPES.register("american", + () -> net.minecraft.core.component.DataComponentType.builder() + .persistent(net.minecraft.util.Unit.CODEC) + .networkSynchronized(net.minecraft.network.codec.StreamCodec.unit(net.minecraft.util.Unit.INSTANCE)) + .build()); + + + public static final DeferredHolder, net.minecraft.world.item.crafting.RecipeSerializer> AMERICANIZE_SERIALIZER = + RECIPE_SERIALIZERS.register("americanize", () -> com.craisinlord.antarchy.content.AmericanizeRecipe.SERIALIZER); + + + public static final DeferredHolder ULTIMATE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("ultimate", + () -> new ArmorMaterial( + createUltimateArmorDefense(), + 10, + SoundEvents.ARMOR_EQUIP_DIAMOND, + AntarchyFabricItems::ultimateRepairIngredient, + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "ultimate_armor"))), + 2.0F, + (float) AntarchySettings.ultimateArmorKnockbackResistance() + )); + + + public static final DeferredHolder NIGHTMARE_ARMOR_MATERIAL = ARMOR_MATERIALS.register("nightmare", + () -> new ArmorMaterial( + createNightmareArmorDefense(), + 10, + SoundEvents.ARMOR_EQUIP_NETHERITE, + () -> Ingredient.of(AntarchyFabricItems.NIGHTMARE_SCALE.get()), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "nightmare_armor"))), + 3.0F, + (float) AntarchySettings.nightmareArmorKnockbackResistance() + )); + + + public static final DeferredHolder PRIMORDIAL_ARMOR_MATERIAL = ARMOR_MATERIALS.register("primordial", + () -> new ArmorMaterial( + createPrimordialArmorDefense(), + 15, + SoundEvents.ARMOR_EQUIP_NETHERITE, + () -> Ingredient.of(AntarchyFabricItems.PRIMORDIAL_SCUTE.get()), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "primordial"))), + 3.0F, + 0.1F + )); + + + public static final DeferredHolder BLOOD_CRYSTAL_ARMOR_MATERIAL = ARMOR_MATERIALS.register("blood_crystal", + () -> new ArmorMaterial( + createBloodCrystalArmorDefense(), + 30, + SoundEvents.ARMOR_EQUIP_DIAMOND, + AntarchyFabricItems::bloodCrystalRepairIngredient, + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "blood_crystal"))), + 0.0F, + 0.0F + )); + + + public static final DeferredHolder MOGGLES_ARMOR_MATERIAL = ARMOR_MATERIALS.register("moggles", + () -> new ArmorMaterial( + createMogglesArmorDefense(), + 12, + SoundEvents.ARMOR_EQUIP_GOLD, + () -> Ingredient.of(Items.GOLD_INGOT), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "moggles"))), + 0.0F, + 0.0F + )); + + + public static final DeferredHolder FALLEN_KING_CROWN_ARMOR_MATERIAL = ARMOR_MATERIALS.register("fallen_king_crown", + () -> new ArmorMaterial( + createFallenKingCrownDefense(), + 25, + SoundEvents.ARMOR_EQUIP_GOLD, + () -> Ingredient.of(Items.GOLD_INGOT), + List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "fallen_king_crown"))), + 0.0F, + 0.0F + )); + + + public static final DeferredHolder, SimpleParticleType> DREAM_FIRE_FLAME = PARTICLE_TYPES.register("dream_fire_flame", + () -> simpleParticleType()); + + + public static final DeferredHolder, SimpleParticleType> STINKY_GAS = PARTICLE_TYPES.register("stinky_gas", + () -> simpleParticleType()); + + + public static final DeferredHolder, SimpleParticleType> STINKY_FLY = PARTICLE_TYPES.register("stinky_fly", + () -> simpleParticleType()); + + + public static final DeferredHolder, SimpleParticleType> PEACH_LEAVES_PARTICLE = PARTICLE_TYPES.register("peach_leaves_particle", + () -> simpleParticleType()); + + + public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS = PARTICLE_TYPES.register("hypnotic_gas", + () -> simpleParticleType()); + + + public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_CLOUD = PARTICLE_TYPES.register("hypnotic_gas_cloud", + () -> simpleParticleType()); + + + public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_DOWN = PARTICLE_TYPES.register("hypnotic_gas_down", + () -> simpleParticleType()); + + + public static final DeferredHolder, SimpleParticleType> HYPNOTIC_GAS_CLOUD_DOWN = PARTICLE_TYPES.register("hypnotic_gas_cloud_down", + () -> simpleParticleType()); + + + public static final DeferredHolder, SimpleParticleType> FIREFLY = PARTICLE_TYPES.register("firefly", + () -> simpleParticleType()); + + + public static final DeferredHolder, SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash", + () -> simpleParticleType()); + + + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", + () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); + + + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_PLUME = PARTICLE_TYPES.register("inverted_geyser_plume", + () -> particleType(InvertedGeyserParticleOptions::codec, InvertedGeyserParticleOptions::streamCodec)); + + + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_POOF = PARTICLE_TYPES.register("inverted_geyser_poof", + () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); + + + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_ERUPTION = PARTICLE_TYPES.register("inverted_geyser_eruption", + () -> particleType(InvertedGeyserParticleOptions::codec, InvertedGeyserParticleOptions::streamCodec)); + + + public static final DeferredHolder DREAD = MOB_EFFECTS.register("dread", DreadMobEffect::new); + + + public static final DeferredHolder PARALYZED = MOB_EFFECTS.register("paralyzed", ParalyzedMobEffect::new); + + + public static final DeferredHolder INVERTED = MOB_EFFECTS.register("inverted", InvertedMobEffect::new); + + + public static final DeferredHolder STINKY = MOB_EFFECTS.register("stinky", StinkyMobEffect::new); + + + public static final DeferredHolder BLOODGLASS_WARD = MOB_EFFECTS.register("bloodglass_ward", com.craisinlord.antarchy.content.effect.BloodglassWardEffect::new); + + + public static final DeferredHolder BLOODGLASS_MAX_HEARTS = ATTRIBUTES.register( + "bloodglass_max_hearts", + () -> new net.minecraft.world.entity.ai.attributes.RangedAttribute("attribute.antarchy.bloodglass_max_hearts", 0.0, 0.0, 8.0).setSyncable(true) + ); + + + public static final DeferredHolder DREAD_POTION = POTIONS.register("dread", + () -> new Potion(new MobEffectInstance(mobEffectHolder(DREAD), 600))); + + + public static final DeferredHolder LONG_DREAD = POTIONS.register("long_dread", + () -> new Potion("dread", new MobEffectInstance(mobEffectHolder(DREAD), 2400))); + + + public static final DeferredHolder INVERSION = POTIONS.register("inversion", + () -> new Potion(new MobEffectInstance(mobEffectHolder(INVERTED), 600))); + + + public static final DeferredHolder LONG_INVERSION = POTIONS.register("long_inversion", + () -> new Potion("inversion", new MobEffectInstance(mobEffectHolder(INVERTED), 2400))); + + + public static final DeferredHolder STINKY_POTION = POTIONS.register("stinky", + () -> new Potion(new MobEffectInstance(mobEffectHolder(STINKY), 1200))); + + + public static final DeferredHolder LONG_STINKY = POTIONS.register("long_stinky", + () -> new Potion("stinky", new MobEffectInstance(mobEffectHolder(STINKY), 2400))); + + + public static final DeferredHolder SHRINKING_EFFECT = MOB_EFFECTS.register("shrinking", ShrinkMobEffect::new); + + + public static final DeferredHolder GROWTH_EFFECT = MOB_EFFECTS.register("growth", GrowthMobEffect::new); + + + public static final DeferredHolder PARALYSIS = POTIONS.register("paralysis", + () -> new Potion(new MobEffectInstance(mobEffectHolder(PARALYZED), 200))); + + + public static final DeferredHolder LONG_PARALYSIS = POTIONS.register("long_paralysis", + () -> new Potion("paralysis", new MobEffectInstance(mobEffectHolder(PARALYZED), 400))); + + + public static final DeferredHolder HASTE = POTIONS.register("haste", + () -> new Potion(new MobEffectInstance(MobEffects.DIG_SPEED, 1200, 0))); + + + public static final DeferredHolder STRONG_HASTE = POTIONS.register("strong_haste", + () -> new Potion("haste", new MobEffectInstance(MobEffects.DIG_SPEED, 600, 1))); + + + public static final DeferredHolder SHRINKING = POTIONS.register("shrinking", + () -> new Potion(new MobEffectInstance(mobEffectHolder(SHRINKING_EFFECT), 1200, 0))); + + + public static final DeferredHolder STRONG_SHRINKING = POTIONS.register("strong_shrinking", + () -> new Potion("shrinking", new MobEffectInstance(mobEffectHolder(SHRINKING_EFFECT), 900, 1))); + + + public static final DeferredHolder EXTREME_SHRINKING = POTIONS.register("extreme_shrinking", + () -> new Potion("shrinking", new MobEffectInstance(mobEffectHolder(SHRINKING_EFFECT), 600, 2))); + + + public static final DeferredHolder GROWING = POTIONS.register("growing", + () -> new Potion(new MobEffectInstance(mobEffectHolder(GROWTH_EFFECT), 1200, 0))); + + + public static final DeferredHolder STRONG_GROWING = POTIONS.register("strong_growing", + () -> new Potion("growing", new MobEffectInstance(mobEffectHolder(GROWTH_EFFECT), 900, 1))); + + + public static final DeferredHolder EXTREME_GROWING = POTIONS.register("extreme_growing", + () -> new Potion("growing", new MobEffectInstance(mobEffectHolder(GROWTH_EFFECT), 600, 2))); + + + public static final DeferredHolder BILE = FLUIDS.register("bile", + () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Source( + () -> AntarchyFabricContent.lookupFlowingFluid("bile"), + () -> AntarchyFabricContent.lookupFlowingFluid("flowing_bile"), + () -> AntarchyFabricContent.lookupItem("bile_bucket"), + "bile", + 4, + 1, + 5 + )); + + + public static final DeferredHolder FLOWING_BILE = FLUIDS.register("flowing_bile", + () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Flowing( + () -> AntarchyFabricContent.lookupFlowingFluid("bile"), + () -> AntarchyFabricContent.lookupFlowingFluid("flowing_bile"), + () -> AntarchyFabricContent.lookupItem("bile_bucket"), + "bile", + 4, + 1, + 5 + )); + + + + public static final DeferredHolder ICHOR = FLUIDS.register("ichor", + () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Source( + () -> AntarchyFabricContent.lookupFlowingFluid("ichor"), + () -> AntarchyFabricContent.lookupFlowingFluid("flowing_ichor"), + () -> AntarchyFabricContent.lookupItem("ichor_bucket"), + "ichor", + 4, + 1, + 5 + )); + + + public static final DeferredHolder FLOWING_ICHOR = FLUIDS.register("flowing_ichor", + () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Flowing( + () -> AntarchyFabricContent.lookupFlowingFluid("ichor"), + () -> AntarchyFabricContent.lookupFlowingFluid("flowing_ichor"), + () -> AntarchyFabricContent.lookupItem("ichor_bucket"), + "ichor", + 4, + 1, + 5 + )); + + + + public static final DeferredHolder ANTIWATER = FLUIDS.register("antiwater", + AntiwaterFluid.Source::new); + + + public static final DeferredHolder FLOWING_ANTIWATER = FLUIDS.register("flowing_antiwater", + AntiwaterFluid.Flowing::new); + + + public static final DeferredHolder LUMEN = FLUIDS.register("lumen", + () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Source( + () -> AntarchyFabricContent.lookupFlowingFluid("lumen"), + () -> AntarchyFabricContent.lookupFlowingFluid("flowing_lumen"), + () -> AntarchyFabricContent.lookupItem("lumen_bucket"), + "lumen", + 4, + 1, + 5 + )); + + + public static final DeferredHolder FLOWING_LUMEN = FLUIDS.register("flowing_lumen", + () -> new com.craisinlord.antarchy.fabric.content.fluid.SimpleFluid.Flowing( + () -> AntarchyFabricContent.lookupFlowingFluid("lumen"), + () -> AntarchyFabricContent.lookupFlowingFluid("flowing_lumen"), + () -> AntarchyFabricContent.lookupItem("lumen_bucket"), + "lumen", + 4, + 1, + 5 + )); + + + public static final DeferredHolder, RedAntNestFeature> RED_ANT_NEST_FEATURE = FEATURES.register("red_ant_nest", + () -> new RedAntNestFeature(SimpleBlockConfiguration.CODEC)); + + + public static final DeferredHolder, BrownAntNestFeature> BROWN_ANT_NEST_FEATURE = FEATURES.register("brown_ant_nest", + () -> new BrownAntNestFeature(SimpleBlockConfiguration.CODEC)); + + + public static final DeferredHolder, RainbowAntNestFeature> RAINBOW_ANT_NEST_FEATURE = FEATURES.register("rainbow_ant_nest", + () -> new RainbowAntNestFeature(SimpleBlockConfiguration.CODEC)); + + + public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_LARGE_TREE = FEATURES.register("ouranwood_large_tree", + () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); + + + public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_YOUNG_TREE = FEATURES.register("ouranwood_young_tree", + () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); + + + public static final DeferredHolder, OuranwoodTreeFeature> OURANWOOD_MEDIUM_TREE = FEATURES.register("ouranwood_medium_tree", + () -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC)); + + + public static final DeferredHolder, OuranwoodCocoonTreeFeature> OURANWOOD_COCOON_TREE = FEATURES.register("ouranwood_cocoon_tree", + () -> new OuranwoodCocoonTreeFeature(OuranwoodTreeConfiguration.CODEC)); + + + public static final DeferredHolder, PeachTreeFeature> PEACH_TREE_FEATURE = FEATURES.register("peach_tree", + () -> new PeachTreeFeature(PeachTreeConfiguration.CODEC)); + + + public static final DeferredHolder, PeachTreeFeature> PEACH_LARGE_TREE_FEATURE = FEATURES.register("peach_large_tree", + () -> new PeachTreeFeature(PeachTreeConfiguration.CODEC)); + + + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_FOREST_FLORA = FEATURES.register("elythia_forest_flora", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FOREST)); + + + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_MEADOW_FLORA = FEATURES.register("elythia_meadow_flora", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.MEADOW)); + + + public static final DeferredHolder, ElythiaFloraFeature> PEACH_FOREST_FLORA = FEATURES.register("peach_forest_flora", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.PEACH_FOREST)); + + + public static final DeferredHolder, ElythiaFloraFeature> FLOWER_FOREST_MILKWEED = FEATURES.register("flower_forest_milkweed", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FLOWER_FOREST_MILKWEED)); + + + public static final DeferredHolder, CornPatchFeature> CORN_PATCH = FEATURES.register("corn_patch", + () -> new CornPatchFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_BUTTERFLY_FIELDS_FLORA = FEATURES.register("butterfly_fields_flora", + () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.BUTTERFLY_FIELDS)); + + + public static final DeferredHolder, ElythiaSurfaceCoverFeature> ELYTHIA_SURFACE_COVER = FEATURES.register("elythia_surface_cover", + () -> new ElythiaSurfaceCoverFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, ElythiaUndergroundFeature> ELYTHIA_UNDERGROUND = FEATURES.register("elythia_underground", + () -> new ElythiaUndergroundFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, BrutalflyCocoonFeature> BRUTALFLY_COCOON = FEATURES.register("brutalfly_cocoon", + () -> new BrutalflyCocoonFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, MolewormTunnelsFeature> ELYTHIA_MOLEWORM_TUNNELS = FEATURES.register("elythia_moleworm_tunnels", + () -> new MolewormTunnelsFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, MolewormCaveEntranceFeature> ELYTHIA_MOLEWORM_CAVE_ENTRANCES = FEATURES.register("elythia_moleworm_cave_entrances", + () -> new MolewormCaveEntranceFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, MolewormWarrensFeature> ELYTHIA_MOLEWORM_WARRENS = FEATURES.register("elythia_moleworm_warrens", + () -> new MolewormWarrensFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, MolewormSurfaceMoundsFeature> ELYTHIA_MOLEWORM_SURFACE_MOUNDS = FEATURES.register("elythia_moleworm_surface_mounds", + () -> new MolewormSurfaceMoundsFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, TriffidPatchFeature> TRIFFID_PATCH = FEATURES.register("triffid_patch", + () -> new TriffidPatchFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, MapCodec> ELYTHIA_BIOME_SOURCE = BIOME_SOURCES.register("elythia_biome_source", + () -> ElythiaBiomeSource.CODEC); + + + public static final DeferredHolder, MapCodec> ELYTHIA_RIVER_CARVE = DENSITY_FUNCTION_TYPES.register("elythia_river_carve", + () -> ElythiaRiverCarveFunction.CODEC); + + + public static final DeferredHolder, ElythiaPondFeature> ELYTHIA_POND = FEATURES.register("elythia_pond", + () -> new ElythiaPondFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, LumenPoolFeature> LUMEN_POOL = FEATURES.register("lumen_pools", + () -> new LumenPoolFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, LumenLilyPadFeature> LUMEN_LILY_PADS = FEATURES.register("lumen_lily_pads", + () -> new LumenLilyPadFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, LumenStreamFeature> LUMEN_STREAM = FEATURES.register("lumen_streams", + () -> new LumenStreamFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, LumenSpireFeature> LUMEN_SPIRE = FEATURES.register("lumen_spires", + () -> new LumenSpireFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, ElythiaTuffBoulderFeature> ELYTHIA_TUFF_BOULDER = FEATURES.register("elythia_tuff_boulder", + () -> new ElythiaTuffBoulderFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, ElythiaLargeTuffBoulderFeature> ELYTHIA_LARGE_TUFF_BOULDER = FEATURES.register("elythia_large_tuff_boulder", + () -> new ElythiaLargeTuffBoulderFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, PeachForestMossyBoulderFeature> PEACH_FOREST_MOSSY_BOULDER = FEATURES.register("peach_forest_mossy_boulder", + () -> new PeachForestMossyBoulderFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, PeachForestPondFeature> PEACH_FOREST_POND = FEATURES.register("peach_forest_pond", + () -> new PeachForestPondFeature(PeachForestPondConfiguration.CODEC)); + + + public static final DeferredHolder, ThoraxisFissureFeature> THORAXIS_FISSURE = FEATURES.register("thoraxis_fissure", + () -> new ThoraxisFissureFeature(ThoraxisFissureConfiguration.CODEC)); + + + public static final DeferredHolder, ThoraxisRibColumnsFeature> THORAXIS_RIB_COLUMNS = FEATURES.register("thoraxis_rib_columns", + () -> new ThoraxisRibColumnsFeature(ThoraxisRibColumnsConfiguration.CODEC)); + + + public static final DeferredHolder, ThoraxisSpikeFeature> THORAXIS_SPIKE = FEATURES.register("thoraxis_spike", + () -> new ThoraxisSpikeFeature(ThoraxisSpikeConfiguration.CODEC)); + + + public static final DeferredHolder, NyxiteSpikeFeature> NYXITE_SPIKES = FEATURES.register("nyxite_spikes", + () -> new NyxiteSpikeFeature(NyxiteSpikeConfiguration.CODEC)); + + + public static final DeferredHolder, AntiwaterSpringsFeature> ANTIWATER_SPRINGS = FEATURES.register("antiwater_springs", + () -> new AntiwaterSpringsFeature(AntiwaterSpringsConfiguration.CODEC)); + + + public static final DeferredHolder, PotentNyxiteFeature> POTENT_NYXITE_FEATURE = FEATURES.register("potent_nyxite", + () -> new PotentNyxiteFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, ThoraxisBloodCrystalFeature> THORAXIS_BLOOD_CRYSTAL_SPIRES = FEATURES.register("thoraxis_blood_crystal_spires", + () -> new ThoraxisBloodCrystalFeature(ThoraxisBloodCrystalConfiguration.CODEC)); + + + public static final DeferredHolder, CloudSeaCalciteFeature> CLOUD_SEA_CALCITE_BANKS = FEATURES.register("cloud_sea_calcite_banks", + () -> new CloudSeaCalciteFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, BedBugNestFeature> BED_BUG_NEST = FEATURES.register("bed_bug_nest", + () -> new BedBugNestFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, BedBugSurfaceClusterFeature> BED_BUG_SURFACE_CLUSTER = FEATURES.register("bed_bug_surface_cluster", + () -> new BedBugSurfaceClusterFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, ThoraxisAntiwaterPoolFeature> THORAXIS_ANTIWATER_POOL = FEATURES.register("thoraxis_antiwater_pool", + () -> new ThoraxisAntiwaterPoolFeature(ThoraxisAntiwaterPoolConfiguration.CODEC)); + + + public static final DeferredHolder, LucidAntiwaterPoolFeature> LUCID_ANTIWATER_POOL = FEATURES.register("lucid_antiwater_pool", + () -> new LucidAntiwaterPoolFeature(ThoraxisAntiwaterPoolConfiguration.CODEC)); + + + public static final DeferredHolder, ThoraxisDuneFeature> THORAXIS_DUNE = FEATURES.register("thoraxis_dune", + () -> new ThoraxisDuneFeature(ThoraxisDuneConfiguration.CODEC)); + + + public static final DeferredHolder, CoralSpikeFeature> ELYTHIA_CORAL_SPIKE = FEATURES.register("elythia_coral_spike", + () -> new CoralSpikeFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, com.craisinlord.antarchy.content.worldgen.elythia.FallenOuranwoodFeature> FALLEN_OURANWOOD_TREE = FEATURES.register("fallen_ouranwood_tree", + () -> new com.craisinlord.antarchy.content.worldgen.elythia.FallenOuranwoodFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, com.craisinlord.antarchy.content.worldgen.elythia.FungalMushroomFeature> FUNGAL_MUSHROOM = FEATURES.register("fungal_mushroom", + () -> new com.craisinlord.antarchy.content.worldgen.elythia.FungalMushroomFeature(NoneFeatureConfiguration.CODEC)); + + + public static final DeferredHolder, MapCodec> THORAXIS_BIOME_SOURCE = BIOME_SOURCES.register("thoraxis_biome_source", + () -> ThoraxisBiomeSource.CODEC); + + + public static final DeferredHolder JUMPY_BOOTS_ARMOR_MATERIAL = ARMOR_MATERIALS.register("jumpy_boots", + () -> new ArmorMaterial( + createJumpyBootsDefense(), + 15, + net.minecraft.sounds.SoundEvents.ARMOR_EQUIP_NETHERITE, + () -> Ingredient.of(net.minecraft.world.item.Items.NETHERITE_BOOTS), + java.util.List.of(new ArmorMaterial.Layer(net.minecraft.resources.ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "jumpy_boots"))), + 3.0F, + 0.1F + )); + + + + public static Holder mobEffectHolder(DeferredHolder effect) { + return BuiltInRegistries.MOB_EFFECT.wrapAsHolder(effect.get()); + } + + + + public static Holder attributeHolder(DeferredHolder attribute) { + return BuiltInRegistries.ATTRIBUTE.wrapAsHolder(attribute.get()); + } + + + + private static Holder armorMaterialHolder(DeferredHolder material) { + return BuiltInRegistries.ARMOR_MATERIAL.wrapAsHolder(material.get()); + } + + + + private static java.util.EnumMap createUltimateArmorDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 6); + defense.put(ArmorItem.Type.LEGGINGS, 12); + defense.put(ArmorItem.Type.CHESTPLATE, 16); + defense.put(ArmorItem.Type.HELMET, 6); + defense.put(ArmorItem.Type.BODY, 16); + return defense; + } + + + + private static java.util.EnumMap createNightmareArmorDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 4); + defense.put(ArmorItem.Type.LEGGINGS, 9); + defense.put(ArmorItem.Type.CHESTPLATE, 11); + defense.put(ArmorItem.Type.HELMET, 4); + defense.put(ArmorItem.Type.BODY, 11); + return defense; + } + + + + private static java.util.EnumMap createJumpyBootsDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 3); + defense.put(ArmorItem.Type.LEGGINGS, 0); + defense.put(ArmorItem.Type.CHESTPLATE, 0); + defense.put(ArmorItem.Type.HELMET, 0); + defense.put(ArmorItem.Type.BODY, 0); + return defense; + } + + + + private static java.util.EnumMap createBloodCrystalArmorDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 2); + defense.put(ArmorItem.Type.LEGGINGS, 5); + defense.put(ArmorItem.Type.CHESTPLATE, 6); + defense.put(ArmorItem.Type.HELMET, 2); + defense.put(ArmorItem.Type.BODY, 6); + return defense; + } + + + + private static java.util.EnumMap createMogglesArmorDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 0); + defense.put(ArmorItem.Type.LEGGINGS, 0); + defense.put(ArmorItem.Type.CHESTPLATE, 0); + defense.put(ArmorItem.Type.HELMET, 2); + defense.put(ArmorItem.Type.BODY, 2); + return defense; + } + + + + private static java.util.EnumMap createPrimordialArmorDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 3); + defense.put(ArmorItem.Type.LEGGINGS, 6); + defense.put(ArmorItem.Type.CHESTPLATE, 8); + defense.put(ArmorItem.Type.HELMET, 3); + defense.put(ArmorItem.Type.BODY, 8); + return defense; + } + + + + private static java.util.EnumMap createFallenKingCrownDefense() { + java.util.EnumMap defense = new java.util.EnumMap<>(ArmorItem.Type.class); + defense.put(ArmorItem.Type.BOOTS, 0); + defense.put(ArmorItem.Type.LEGGINGS, 0); + defense.put(ArmorItem.Type.CHESTPLATE, 0); + defense.put(ArmorItem.Type.HELMET, 2); + defense.put(ArmorItem.Type.BODY, 2); + return defense; + } + + + + private static SimpleParticleType simpleParticleType() { + return new SimpleParticleType(true) { + }; + } + + + + private static ParticleType particleType( + java.util.function.Function, com.mojang.serialization.MapCodec> codecFactory, + java.util.function.Function, net.minecraft.network.codec.StreamCodec> streamCodecFactory + ) { + return new ParticleType<>(false) { + @Override + public com.mojang.serialization.MapCodec codec() { + return codecFactory.apply(this); + } + + @Override + public net.minecraft.network.codec.StreamCodec streamCodec() { + return streamCodecFactory.apply(this); + } + }; + } + + + public static void register() { + ARMOR_MATERIALS.register(); + FLUIDS.register(); + ATTRIBUTES.register(); + PARTICLE_TYPES.register(); + FEATURES.register(); + BIOME_SOURCES.register(); + DENSITY_FUNCTION_TYPES.register(); + ENTITY_SUB_PREDICATES.register(); + MOB_EFFECTS.register(); + POTIONS.register(); + MENUS.register(); + DATA_COMPONENT_TYPES.register(); + RECIPE_SERIALIZERS.register(); + } + +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java new file mode 100644 index 00000000..1da468b2 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java @@ -0,0 +1,682 @@ +package com.craisinlord.antarchy.fabric.registry; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.compat.infinity.InfinityCompat; +import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.CreativeTabOrder; +import com.craisinlord.antarchy.content.block.*; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; +import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; +import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; +import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; +import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; +import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; +import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; +import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; +import com.craisinlord.antarchy.fabric.registry.DeferredBlock; +import com.craisinlord.antarchy.fabric.registry.DeferredHolder; +import com.craisinlord.antarchy.fabric.registry.DeferredItem; +import com.craisinlord.antarchy.fabric.registry.DeferredRegister; +import com.craisinlord.antarchy.content.effect.DreadMobEffect; +import com.craisinlord.antarchy.content.effect.GrowthMobEffect; +import com.craisinlord.antarchy.content.effect.InvertedMobEffect; +import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; +import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; +import com.craisinlord.antarchy.content.effect.StinkyMobEffect; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.JumpyBugEntity; +import com.craisinlord.antarchy.content.entity.StinkBugEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; +import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import com.craisinlord.antarchy.content.entity.RollyPollyEntity; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import com.craisinlord.antarchy.content.item.LucidEyeItem; +import com.craisinlord.antarchy.content.item.LucidPearlItem; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; +import com.craisinlord.antarchy.content.entity.WaterBombEntity; +import com.craisinlord.antarchy.content.item.PrimordialArmorItem; +import com.craisinlord.antarchy.content.item.WaterCannonItem; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.OctopusBombEntity; +import com.craisinlord.antarchy.content.entity.MolevoreEntity; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; +import com.craisinlord.antarchy.content.item.BattleAxeItem; +import com.craisinlord.antarchy.content.item.BasiliskDaggerItem; +import com.craisinlord.antarchy.content.item.BigBerthaItem; +import com.craisinlord.antarchy.content.item.AntimetalBlockItem; +import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; +import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; +import com.craisinlord.antarchy.content.item.CorneaEarItem; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.item.MinersDreamItem; +import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; +import com.craisinlord.antarchy.content.item.MogglesItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; +import com.craisinlord.antarchy.content.item.DiamondMinecartItem; +import com.craisinlord.antarchy.content.item.ReverieBottleItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync; +import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; +import com.craisinlord.antarchy.content.item.SizeRayItem; +import com.craisinlord.antarchy.content.item.SquidzookaItem; +import com.craisinlord.antarchy.content.item.SimpleToolTier; +import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; +import com.craisinlord.antarchy.content.item.NightmareArmorItem; +import com.craisinlord.antarchy.content.item.NightmareSwordItem; +import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; +import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; +import com.craisinlord.antarchy.content.item.RainbowSugarItem; +import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import com.craisinlord.antarchy.content.portal.PermanentPortalType; +import java.util.List; +import java.util.ArrayList; +import java.util.Comparator; +import com.mojang.serialization.MapCodec; +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; +import net.minecraft.advancements.critereon.EntitySubPredicate; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.StandingAndWallBlockItem; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.Tiers; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.AmethystClusterBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.DropExperienceBlock; +import net.minecraft.world.level.block.GlowLichenBlock; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.VineBlock; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.levelgen.DensityFunction; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; +import net.minecraft.world.level.levelgen.Heightmap; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; + +public final class AntarchyFabricSounds { + + public static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(Registries.SOUND_EVENT, Antarchy.MODID); + + + public static final DeferredHolder SQUIDZOOKA_FIRE = registerSoundEvent("squidzooka_fire"); + + + public static final DeferredHolder SHRINK_RAY_SOUND = registerSoundEvent("shrink_ray"); + + + public static final DeferredHolder GROWTH_RAY_SOUND = registerSoundEvent("growth_ray"); + + + public static final DeferredHolder SIZE_RAY_CHARGE = registerSoundEvent("size_ray_charge"); + + + public static final DeferredHolder ANT_AMBIENT = registerSoundEvent("ant_ambient"); + + + public static final DeferredHolder ANT_IDLE = registerSoundEvent("ant_idle"); + + + public static final DeferredHolder ANT_HURT = registerSoundEvent("ant_hurt"); + + + public static final DeferredHolder ANT_BITE = registerSoundEvent("ant_bite"); + + + public static final DeferredHolder ANT_GATHER = registerSoundEvent("ant_gather"); + + + public static final DeferredHolder ANT_NEST = registerSoundEvent("ant_nest"); + + + public static final DeferredHolder CLOUD_SHARK_BITE = registerSoundEvent("cloud_shark_bite"); + + + public static final DeferredHolder CLOUD_SHARK_IDLE = registerSoundEvent("cloud_shark_idle"); + + + public static final DeferredHolder CLOUD_SHARK_HURT = registerSoundEvent("cloud_shark_hurt"); + + + public static final DeferredHolder CLOUD_SHARK_DEATH = registerSoundEvent("cloud_shark_death"); + + + public static final DeferredHolder CLOUD_SHARK_FLY = registerSoundEvent("cloud_shark_fly"); + + + public static final DeferredHolder CATERPILLAR_IDLE = registerSoundEvent("caterpillar_idle"); + + + public static final DeferredHolder CATERPILLAR_HURT = registerSoundEvent("caterpillar_hurt"); + + + public static final DeferredHolder CATERPILLAR_CRAWL = registerSoundEvent("caterpillar_crawl"); + + + public static final DeferredHolder BUTTERFLY_HURT = registerSoundEvent("butterfly_hurt"); + + + public static final DeferredHolder BRUTALFLY_IDLE = registerSoundEvent("brutalfly_idle"); + + + public static final DeferredHolder BRUTALFLY_DEATH = registerSoundEvent("brutalfly_death"); + + + public static final DeferredHolder ELYTHIA_FIREFLY_AMBIENT = registerSoundEvent("ambient.elythia.firefly"); + + + public static final DeferredHolder MISSILE_SQUID_AMBIENT = registerSoundEvent("missile_squid_ambient"); + + + public static final DeferredHolder MISSILE_SQUID_HURT = registerSoundEvent("missile_squid_hurt"); + + + public static final DeferredHolder MISSILE_SQUID_DEATH = registerSoundEvent("missile_squid_death"); + + + public static final DeferredHolder MISSILE_SQUID_ATTACK = registerSoundEvent("missile_squid_attack"); + + + public static final DeferredHolder KRAKEN_FLYING_LOOP = registerSoundEvent("kraken_flying_loop"); + + + public static final DeferredHolder KRAKEN_FLYING_SIDEWAYS_LOOP = registerSoundEvent("kraken_flying_sideways_loop"); + + + public static final DeferredHolder KRAKEN_ATTACK = registerSoundEvent("kraken_attack"); + + + public static final DeferredHolder KRAKEN_SPIN = registerSoundEvent("kraken_spin"); + + + public static final DeferredHolder KRAKEN_ROAR = registerSoundEvent("kraken_roar"); + + + public static final DeferredHolder KRAKEN_SUMMON = registerSoundEvent("kraken_summon"); + + + public static final DeferredHolder KRAKEN_HURT = registerSoundEvent("kraken_hurt"); + + + public static final DeferredHolder KRAKEN_DEATH = registerSoundEvent("kraken_death"); + + + public static final DeferredHolder BASILISK_IDLE_LOOP = registerSoundEvent("basilisk_idle_loop"); + + + public static final DeferredHolder BASILISK_SLITHER_LOOP = registerSoundEvent("basilisk_slither_loop"); + + + public static final DeferredHolder BASILISK_BITE = registerSoundEvent("basilisk_bite"); + + + public static final DeferredHolder BASILISK_HISS = registerSoundEvent("basilisk_hiss"); + + + public static final DeferredHolder BASILISK_HURT = registerSoundEvent("basilisk_hurt"); + + + public static final DeferredHolder BASILISK_DEATH = registerSoundEvent("basilisk_death"); + + + public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_AMBIENT = registerSoundEvent("thoraxis_nightmare_wastes_ambient"); + + + public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_ADDITIONS = registerSoundEvent("thoraxis_nightmare_wastes_additions"); + + + public static final DeferredHolder THORAXIS_NIGHTMARE_WASTES_MOOD = registerSoundEvent("thoraxis_nightmare_wastes_mood"); + + + public static final DeferredHolder THORAXIS_DREAM_DUNES_AMBIENT = registerSoundEvent("thoraxis_dream_dunes_ambient"); + + + public static final DeferredHolder THORAXIS_DREAM_DUNES_ADDITIONS = registerSoundEvent("thoraxis_dream_dunes_additions"); + + + public static final DeferredHolder THORAXIS_DREAM_DUNES_MOOD = registerSoundEvent("thoraxis_dream_dunes_mood"); + + + public static final DeferredHolder THORAXIS_LUCID_POOLS_AMBIENT = registerSoundEvent("thoraxis_lucid_pools_ambient"); + + + public static final DeferredHolder THORAXIS_LUCID_POOLS_ADDITIONS = registerSoundEvent("thoraxis_lucid_pools_additions"); + + + public static final DeferredHolder THORAXIS_LUCID_POOLS_MOOD = registerSoundEvent("thoraxis_lucid_pools_mood"); + + + public static final DeferredHolder LUCID_AMBIENT = registerSoundEvent("lucid_ambient"); + + + public static final DeferredHolder LUCID_FLYING = registerSoundEvent("lucid_flying"); + + + public static final DeferredHolder LUCID_ATTACK = registerSoundEvent("lucid_attack"); + + + public static final DeferredHolder LUCID_BOLT_SOUND = registerSoundEvent("lucid_bolt"); + + + public static final DeferredHolder LUCID_HURT = registerSoundEvent("lucid_hurt"); + + + public static final DeferredHolder LUCID_DEATH = registerSoundEvent("lucid_death"); + + + public static final DeferredHolder REVERIE_IDLE = registerSoundEvent("reverie_idle"); + + + public static final DeferredHolder REVERIE_HURT = registerSoundEvent("reverie_hurt"); + + + public static final DeferredHolder REVERIE_WORRY = registerSoundEvent("reverie_worry"); + + + public static final DeferredHolder REVERIE_SAVE = registerSoundEvent("reverie_save"); + + + public static final DeferredHolder REVERIE_JOIN_PLAYER = registerSoundEvent("reverie_join_player"); + + + public static final DeferredHolder REVERIE_ALERT = registerSoundEvent("reverie_alert"); + + + public static final DeferredHolder FLYING_SQUIRREL_IDLE = registerSoundEvent("flying_squirrel_idle"); + + + public static final DeferredHolder FLYING_SQUIRREL_BEG = registerSoundEvent("flying_squirrel_beg"); + + + public static final DeferredHolder FLYING_SQUIRREL_NUT = registerSoundEvent("flying_squirrel_nut"); + + + public static final DeferredHolder FLYING_SQUIRREL_GLIDE_LOOP = registerSoundEvent("flying_squirrel_glide_loop"); + + + public static final DeferredHolder FLYING_SQUIRREL_HURT = registerSoundEvent("flying_squirrel_hurt"); + + + public static final DeferredHolder FLYING_SQUIRREL_DEATH = registerSoundEvent("flying_squirrel_death"); + + + public static final DeferredHolder NIGHTMARE_IDLE = registerSoundEvent("nightmare_idle"); + + + public static final DeferredHolder NIGHTMARE_HURT = registerSoundEvent("nightmare_hurt"); + + + public static final DeferredHolder NIGHTMARE_ROAR = registerSoundEvent("nightmare_roar"); + + + public static final DeferredHolder NIGHTMARE_DEATH = registerSoundEvent("nightmare_death"); + + + public static final DeferredHolder NIGHTMARE_BITE = registerSoundEvent("nightmare_bite"); + + + public static final DeferredHolder NIGHTMARE_FLAP = registerSoundEvent("nightmare_flap"); + + + public static final DeferredHolder TRIFFID_ATTACK = registerSoundEvent("triffid_attack"); + + + public static final DeferredHolder TRIFFID_GRAB = registerSoundEvent("triffid_grab"); + + + public static final DeferredHolder TRIFFID_HURT = registerSoundEvent("triffid_hurt"); + + + public static final DeferredHolder TRIFFID_DEATH = registerSoundEvent("triffid_death"); + + + public static final DeferredHolder TRIFFID_HISS = registerSoundEvent("triffid_hiss"); + + + public static final DeferredHolder TRIFFID_GROWL = registerSoundEvent("triffid_growl"); + + + public static final DeferredHolder MANTIS_AMBIENT = registerSoundEvent("mantis_ambient"); + + + public static final DeferredHolder MANTIS_HURT = registerSoundEvent("mantis_hurt"); + + + public static final DeferredHolder MANTIS_ATTACK = registerSoundEvent("mantis_attack"); + + + public static final DeferredHolder MANTIS_FLY_LOOP = registerSoundEvent("mantis_fly_loop"); + + + public static final DeferredHolder GRAVITY_GUN_PICKUP = registerSoundEvent("gravity_gun_pickup"); + + + public static final DeferredHolder GRAVITY_GUN_DROP = registerSoundEvent("gravity_gun_drop"); + + + public static final DeferredHolder GRAVITY_GUN_HOLD_LOOP = registerSoundEvent("gravity_gun_hold_loop"); + + + public static final DeferredHolder GRAVITY_GUN_LAUNCH = registerSoundEvent("gravity_gun_launch"); + + + public static final DeferredHolder GRAVITY_GUN_DRYFIRE = registerSoundEvent("gravity_gun_dryfire"); + + + public static final DeferredHolder BED_BUG_AMBIENT = registerSoundEvent("bed_bug_ambient"); + + + public static final DeferredHolder BED_BUG_HURT = registerSoundEvent("bed_bug_hurt"); + + + public static final DeferredHolder BED_BUG_ATTACK = registerSoundEvent("bed_bug_attack"); + + + public static final DeferredHolder WASP_IDLE = registerSoundEvent("wasp_idle"); + + + public static final DeferredHolder WASP_HURT = registerSoundEvent("wasp_hurt"); + + + public static final DeferredHolder WASP_ATTACK = registerSoundEvent("wasp_attack"); + + + public static final DeferredHolder WASP_DEATH = registerSoundEvent("wasp_death"); + + + public static final DeferredHolder SCORPION_AMBIENT = registerSoundEvent("scorpion_ambient"); + + + public static final DeferredHolder SCORPION_HURT = registerSoundEvent("scorpion_hurt"); + + + public static final DeferredHolder SCORPION_ATTACK = registerSoundEvent("scorpion_attack"); + + + public static final DeferredHolder EMPEROR_SCORPION_AMBIENT = registerSoundEvent("emperor_scorpion_ambient"); + + + public static final DeferredHolder EMPEROR_SCORPION_HURT = registerSoundEvent("emperor_scorpion_hurt"); + + + public static final DeferredHolder EMPEROR_SCORPION_ATTACK = registerSoundEvent("emperor_scorpion_attack"); + + + public static final DeferredHolder EMPEROR_SCORPION_ROAR = registerSoundEvent("emperor_scorpion_roar"); + + + public static final DeferredHolder MOLEWORM_AMBIENT = registerSoundEvent("moleworm_ambient"); + + + public static final DeferredHolder MOLEWORM_HURT = registerSoundEvent("moleworm_hurt"); + + + public static final DeferredHolder MOLEWORM_ATTACK = registerSoundEvent("moleworm_attack"); + + + public static final DeferredHolder MOLEWORM_DIG = registerSoundEvent("moleworm_dig"); + + + public static final DeferredHolder MOLEVORE_AMBIENT = registerSoundEvent("molevore_ambient"); + + + public static final DeferredHolder MOLEVORE_HURT = registerSoundEvent("molevore_hurt"); + + + public static final DeferredHolder MOLEVORE_ATTACK = registerSoundEvent("molevore_attack"); + + + public static final DeferredHolder MOLEVORE_DIG = registerSoundEvent("molevore_dig"); + + + public static final DeferredHolder BOMBER_WALK = registerSoundEvent("bomber_walk"); + + + public static final DeferredHolder BOMBER_KNOCK = registerSoundEvent("bomber_knock"); + + + public static final DeferredHolder BOMBER_EXPLODE = registerSoundEvent("bomber_explode"); + + + public static final DeferredHolder TORETERROR_IDLE = registerSoundEvent("toreterror_idle"); + + + public static final DeferredHolder TORETERROR_HURT = registerSoundEvent("toreterror_hurt"); + + + public static final DeferredHolder TORETERROR_DEATH = registerSoundEvent("toreterror_death"); + + + public static final DeferredHolder TORETERROR_BOMBER_FIRE = registerSoundEvent("toreterror_bomber_fire"); + + + public static final DeferredHolder TORETERROR_SPIN = registerSoundEvent("toreterror_spin"); + + + public static final DeferredHolder TORETERROR_RICOCHET = registerSoundEvent("toreterror_ricochet"); + + + public static final DeferredHolder WATER_CANNON_FIRE = registerSoundEvent("water_cannon_fire"); + + + public static final DeferredHolder TORETERROR_JUMP_UP = registerSoundEvent("toreterror_jump_up"); + + + public static final DeferredHolder TORETERROR_JUMP_LAND = registerSoundEvent("toreterror_jump_land"); + + + public static final DeferredHolder STINKY_FLY_SOUND = registerSoundEvent("stinky_fly"); + + + public static final DeferredHolder CREEPING_HORROR_GROWL = registerSoundEvent("creeping_horror_growl"); + + + public static final DeferredHolder CREEPING_HORROR_HURT = registerSoundEvent("creeping_horror_hurt"); + + + public static final DeferredHolder CREEPING_HORROR_BITE = registerSoundEvent("creeping_horror_bite"); + + + public static final DeferredHolder LURKING_TERROR_SNARL = registerSoundEvent("lurking_terror_snarl"); + + + public static final DeferredHolder LURKING_TERROR_HURT = registerSoundEvent("lurking_terror_hurt"); + + + public static final DeferredHolder LURKING_TERROR_BITE = registerSoundEvent("lurking_terror_bite"); + + + public static final DeferredHolder LURKING_TERROR_FLY_LOOP = registerSoundEvent("lurking_terror_fly_loop"); + + + public static final DeferredHolder DUCT_TAPE_USE = registerSoundEvent("duct_tape_use"); + + + public static final DeferredHolder POTENT_NYXITE_HYPNOTIC_GAS = registerSoundEvent("potent_nyxite_hypnotic_gas"); + + + public static final DeferredHolder POTENT_NYXITE_GEYSER_ERUPTION_START = registerSoundEvent("potent_nyxite_geyser_eruption_start"); + + + public static final DeferredHolder POTENT_NYXITE_GEYSER_ERUPTION_ACTIVE = registerSoundEvent("potent_nyxite_geyser_eruption_active"); + + + public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_START = registerSoundEvent("potent_nyxite_geyser_continuous_start"); + + + public static final DeferredHolder POTENT_NYXITE_GEYSER_CONTINUOUS_ACTIVE = registerSoundEvent("potent_nyxite_geyser_continuous_active"); + + + + + private static DeferredHolder registerSoundEvent(String path) { + return SOUND_EVENTS.register(path, + () -> SoundEvent.createVariableRangeEvent(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, path))); + } + + + public static void register() { + SOUND_EVENTS.register(); + } + +} diff --git a/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java new file mode 100644 index 00000000..9a1c4d32 --- /dev/null +++ b/fabric/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java @@ -0,0 +1,294 @@ +package com.craisinlord.antarchy.fabric.registry; + +import com.craisinlord.antarchy.Antarchy; +import com.craisinlord.antarchy.compat.infinity.InfinityCompat; +import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion; +import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.AntarchyObjects; +import com.craisinlord.antarchy.content.CreativeTabOrder; +import com.craisinlord.antarchy.content.block.*; +import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem; +import com.craisinlord.antarchy.content.item.BloodCrystalAppleItem; +import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem; +import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; +import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; +import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; +import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; +import com.craisinlord.antarchy.content.fluid.BileLiquidBlock; +import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock; +import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature; +import com.craisinlord.antarchy.content.worldgen.ants.TermiteNestFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileCystFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynBileVeinFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynCreepvineFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynWallAmberMossFeature; +import com.craisinlord.antarchy.content.worldgen.overworld.CornPatchFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.AntiwaterSpringsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.NyxiteSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.PotentNyxiteFeature; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterFluid; +import com.craisinlord.antarchy.fabric.content.fluid.AntiwaterLiquidBlock; +import com.craisinlord.antarchy.fabric.item.DeferredSpawnEggItem; +import com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking; +import com.craisinlord.antarchy.fabric.registry.DeferredBlock; +import com.craisinlord.antarchy.fabric.registry.DeferredHolder; +import com.craisinlord.antarchy.fabric.registry.DeferredItem; +import com.craisinlord.antarchy.fabric.registry.DeferredRegister; +import com.craisinlord.antarchy.content.effect.DreadMobEffect; +import com.craisinlord.antarchy.content.effect.GrowthMobEffect; +import com.craisinlord.antarchy.content.effect.InvertedMobEffect; +import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; +import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; +import com.craisinlord.antarchy.content.effect.StinkyMobEffect; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.AppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.EnchantedGoldenAppleCow; +import com.craisinlord.antarchy.content.entity.AppleCowEntityVariants.GoldenAppleCow; +import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity; +import com.craisinlord.antarchy.content.entity.BedBugEntity; +import com.craisinlord.antarchy.content.entity.ButterflyEntity; +import com.craisinlord.antarchy.content.entity.CaterpillarEntity; +import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity; +import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; +import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; +import com.craisinlord.antarchy.content.entity.EasterBunnyEntity; +import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; +import com.craisinlord.antarchy.content.entity.ReverieEntity; +import com.craisinlord.antarchy.content.entity.MissileSquidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity; +import com.craisinlord.antarchy.content.entity.HushProjectileEntity; +import com.craisinlord.antarchy.content.entity.JumpyBugEntity; +import com.craisinlord.antarchy.content.entity.StinkBugEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; +import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; +import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; +import com.craisinlord.antarchy.content.entity.MantisEntity; +import com.craisinlord.antarchy.content.entity.RollyPollyEntity; +import com.craisinlord.antarchy.content.entity.basilisk.BasiliskEntity; +import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity; +import com.craisinlord.antarchy.content.entity.ScorpionEntity; +import com.craisinlord.antarchy.content.item.LucidEyeItem; +import com.craisinlord.antarchy.content.item.LucidPearlItem; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; +import com.craisinlord.antarchy.content.entity.ToreterrorEntity; +import com.craisinlord.antarchy.content.entity.WaterBombEntity; +import com.craisinlord.antarchy.content.item.PrimordialArmorItem; +import com.craisinlord.antarchy.content.item.WaterCannonItem; +import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; +import com.craisinlord.antarchy.content.entity.OctopusBombEntity; +import com.craisinlord.antarchy.content.entity.MolevoreEntity; +import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.craisinlord.antarchy.content.entity.BomberEntity; +import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity; +import com.craisinlord.antarchy.content.entity.TriffidEntity; +import com.craisinlord.antarchy.content.entity.WaspEntity; +import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; +import com.craisinlord.antarchy.content.entity.ant.BrownAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RainbowAntEntity; +import com.craisinlord.antarchy.content.entity.ant.RedAntEntity; +import com.craisinlord.antarchy.content.item.BattleAxeItem; +import com.craisinlord.antarchy.content.item.BasiliskDaggerItem; +import com.craisinlord.antarchy.content.item.BigBerthaItem; +import com.craisinlord.antarchy.content.item.AntimetalBlockItem; +import com.craisinlord.antarchy.fabric.item.AntimetalScaffoldingItem; +import com.craisinlord.antarchy.content.item.CloudSharkFinSoupItem; +import com.craisinlord.antarchy.content.item.CorneaEarItem; +import com.craisinlord.antarchy.content.item.GravityGunItem; +import com.craisinlord.antarchy.content.item.MinersDreamItem; +import com.craisinlord.antarchy.content.item.DuctTapeBlockItem; +import com.craisinlord.antarchy.content.item.BrutalflyElytraItem; +import com.craisinlord.antarchy.content.item.MobComingSoonTooltipItem; +import com.craisinlord.antarchy.content.item.MogglesItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateAxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateHoeItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimatePickaxeItem; +import com.craisinlord.antarchy.content.item.ultimate.UtlimateShovelItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateSwordItem; +import com.craisinlord.antarchy.content.item.DiamondMinecartItem; +import com.craisinlord.antarchy.content.item.ReverieBottleItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipItem; +import com.craisinlord.antarchy.content.item.ScorpionWhipTetherSync; +import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync; +import com.craisinlord.antarchy.content.item.SizeRayItem; +import com.craisinlord.antarchy.content.item.SquidzookaItem; +import com.craisinlord.antarchy.content.item.SimpleToolTier; +import com.craisinlord.antarchy.content.item.ultimate.UltimateArmorItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateBowItem; +import com.craisinlord.antarchy.content.item.ultimate.UltimateCrossbowItem; +import com.craisinlord.antarchy.content.item.NightmareArmorItem; +import com.craisinlord.antarchy.content.item.NightmareSwordItem; +import com.craisinlord.antarchy.content.item.OuranwoodBoatOnlyItem; +import com.craisinlord.antarchy.content.item.OuranwoodChestBoatItem; +import com.craisinlord.antarchy.content.item.RainbowSugarItem; +import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaFloraFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaLargeTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestMossyBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachForestPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaPondFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaSurfaceCoverFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaTuffBoulderFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaUndergroundFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormCaveEntranceFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormSurfaceMoundsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.BrutalflyCocoonFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenPoolFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenLilyPadFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.LumenStreamFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormTunnelsFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.MolewormWarrensFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodCocoonTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeConfiguration; +import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeFeature; +import com.craisinlord.antarchy.content.worldgen.elythia.TriffidPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.CavarynEggPatchFeature; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.cavaryn.ChitenSpikeFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugNestFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.BedBugSurfaceClusterFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.CloudSeaCalciteFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.LucidAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBiomeSource; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisDuneFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisFissureFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisBloodCrystalFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisAntiwaterPoolFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisRibColumnsFeature; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeConfiguration; +import com.craisinlord.antarchy.content.worldgen.thoraxis.ThoraxisSpikeFeature; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions; +import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions; +import com.craisinlord.antarchy.content.portal.PermanentPortalType; +import java.util.List; +import java.util.ArrayList; +import java.util.Comparator; +import com.mojang.serialization.MapCodec; +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; +import net.minecraft.advancements.critereon.EntitySubPredicate; +import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cow; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.SpawnPlacementTypes; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.BucketItem; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.StandingAndWallBlockItem; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.Tiers; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.AmethystClusterBlock; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.DropExperienceBlock; +import net.minecraft.world.level.block.GlowLichenBlock; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.LiquidBlock; +import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.VineBlock; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.levelgen.DensityFunction; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; +import net.minecraft.world.level.levelgen.Heightmap; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import com.craisinlord.antarchy.fabric.AntarchyFabricContent; + +public final class AntarchyFabricSpawnPlacements { + + + public static void register() { + SpawnPlacements.register(AntarchyFabricEntities.FLYING_SQUIRREL.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING, FlyingSquirrelEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.CATERPILLAR.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CaterpillarEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.BUTTERFLY.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ButterflyEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.REVERIE.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ReverieEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.BRUTALFLY.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Monster::checkMonsterSpawnRules); + SpawnPlacements.register(AntarchyFabricEntities.APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules); + SpawnPlacements.register(AntarchyFabricEntities.GOLDEN_APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules); + SpawnPlacements.register(AntarchyFabricEntities.ENCHANTED_GOLDEN_APPLE_COW.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Cow::checkAnimalSpawnRules); + SpawnPlacements.register(AntarchyFabricEntities.CLOUD_SHARK.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, CloudSharkEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.WASP.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, WaspEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.BOMBER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BomberEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.KRAKEN.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, KrakenEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.MISSILE_SQUID.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MissileSquidEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.OCTOPUS_BOMB.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, OctopusBombEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.CHEEP.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.AbstractFish::checkSurfaceWaterAnimalSpawnRules); + // Dorrie is not part of this update yet. + // SpawnPlacements.register(AntarchyFabricEntities.DORRIE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules); + SpawnPlacements.register(AntarchyFabricEntities.OURANWOOD_DEER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules); + SpawnPlacements.register(AntarchyFabricEntities.GLIMMER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity::checkGlimmerSpawnRules); + SpawnPlacements.register(AntarchyFabricEntities.ELKA.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules); + SpawnPlacements.register(AntarchyFabricEntities.NIGHTMARE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, NightmareEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.MOLEWORM.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolewormEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.MANTIS.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MantisEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.ALPHA_MANTIS.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, AlphaMantisEntity::checkAlphaMantisSpawnRules); + SpawnPlacements.register(AntarchyFabricEntities.MOLEVORE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolevoreEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.BED_BUG.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BedBugEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.LUCID.get(), SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, LucidEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ScorpionEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.BASILISK.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BasiliskEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.EMPEROR_SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EmperorScorpionEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.TORETERROR.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, ToreterrorEntity::canSpawn); + } + +} diff --git a/fabric/src/main/resources/data/minecraft/tags/fluid/water.json b/fabric/src/main/resources/data/minecraft/tags/fluid/water.json index 60ad5ea5..eef10539 100644 --- a/fabric/src/main/resources/data/minecraft/tags/fluid/water.json +++ b/fabric/src/main/resources/data/minecraft/tags/fluid/water.json @@ -3,6 +3,8 @@ "antarchy:ichor", "antarchy:flowing_ichor", "antarchy:lumen", - "antarchy:flowing_lumen" + "antarchy:flowing_lumen", + "antarchy:bile", + "antarchy:flowing_bile" ] } diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java index 12b7006a..b854ee91 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java @@ -219,7 +219,7 @@ public class AntarchyNeoforge { (java.util.function.Supplier) AntarchyNeoforgeEntites.BOMBER, (java.util.function.Supplier) AntarchyNeoforgeEntites.BED_BUG, AntarchyNeoforgeEntites.CHEEP, - AntarchyNeoforgeEntites.DORRIE, + () -> { throw new IllegalStateException("Dorrie is not part of this update yet."); }, () -> AntarchyNeoforgeBlocks.DUPLICATOR_LOG.get(), () -> AntarchyNeoforgeBlocks.DUPLICATOR_SAPLING.get(), () -> AntarchyNeoforgeBlocks.DUCT_TAPE.get(), @@ -312,7 +312,8 @@ public class AntarchyNeoforge { AntarchyObjects.setLumenBlock(() -> AntarchyNeoforgeBlocks.LUMEN_BLOCK.get()); AntarchyObjects.setLumenFroglight(() -> AntarchyNeoforgeBlocks.LUMEN_FROGLIGHT.get()); AntarchyObjects.setPeachLeavesParticle(() -> AntarchyNeoforgeMisc.PEACH_LEAVES_PARTICLE.get()); - AntarchyObjects.setDorrieInventoryMenu(AntarchyNeoforgeMisc.DORRIE_INVENTORY_MENU); + // Dorrie is not part of this update yet. + // AntarchyObjects.setDorrieInventoryMenu(AntarchyNeoforgeMisc.DORRIE_INVENTORY_MENU); } private static boolean isModLoaded(String modId) { diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java index a63e4433..51617eae 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java @@ -130,7 +130,8 @@ public final class AntarchyNeoForgeClient { event.registerEntityRenderer(AntarchyNeoforgeEntites.TORETERROR.get(), ToreterrorRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.WATER_BOMB.get(), WaterBombRenderer::new); event.registerEntityRenderer(AntarchyNeoforgeEntites.CHEEP.get(), context -> withParalyzedGeoLayer(new com.craisinlord.antarchy.content.client.renderer.CheepRenderer(context))); - event.registerEntityRenderer(AntarchyNeoforgeEntites.DORRIE.get(), context -> new com.craisinlord.antarchy.content.client.renderer.DorrieRenderer(context)); + // Dorrie is not part of this update yet. + // event.registerEntityRenderer(AntarchyNeoforgeEntites.DORRIE.get(), context -> new com.craisinlord.antarchy.content.client.renderer.DorrieRenderer(context)); event.registerEntityRenderer(AntarchyNeoforgeEntites.OURANWOOD_DEER.get(), context -> new com.craisinlord.antarchy.content.client.renderer.OuranwoodDeerRenderer(context)); event.registerEntityRenderer(AntarchyNeoforgeEntites.GLIMMER.get(), context -> withParalyzedGeoLayer(new com.craisinlord.antarchy.content.client.renderer.glimmer.GlimmerRenderer(context))); event.registerEntityRenderer(AntarchyNeoforgeEntites.ELKA.get(), context -> new com.craisinlord.antarchy.content.client.renderer.ElkaRenderer(context)); @@ -202,7 +203,8 @@ public final class AntarchyNeoForgeClient { event.register( (state, level, pos, tintIndex) -> level != null && pos != null ? BiomeColors.getAverageGrassColor(level, pos) - : net.minecraft.world.level.GrassColor.getDefaultColor() + : net.minecraft.world.level.GrassColor.getDefaultColor(), + AntarchyNeoforgeBlocks.SPIDER_LILY.get() ); } @@ -213,7 +215,8 @@ public final class AntarchyNeoForgeClient { AntarchyNeoforgeItems.OURANWOOD_LEAVES_ITEM.get() ); event.register( - (stack, tintIndex) -> net.minecraft.world.level.GrassColor.getDefaultColor() + (stack, tintIndex) -> tintIndex == 0 ? net.minecraft.world.level.GrassColor.getDefaultColor() : -1, + AntarchyNeoforgeItems.SPIDER_LILY_ITEM.get() ); event.register(new DynamicFluidContainerModel.Colors(), AntarchyNeoforgeItems.ICHOR_BUCKET.get()); event.register(new DynamicFluidContainerModel.Colors(), AntarchyNeoforgeItems.LUMEN_BUCKET.get()); @@ -488,6 +491,8 @@ public final class AntarchyNeoForgeClient { ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DUPLICATOR_SAPLING.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ORANGE_MILKWEED.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.PINK_MILKWEED.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CAMELLIA.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.SPIDER_LILY.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.HUSHWEED.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CORNEA_STALK.get(), RenderType.cutout()); ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CORN_CROP.get(), RenderType.cutout()); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java index 7aa76c0b..3dc0fd81 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java @@ -462,15 +462,19 @@ public final class AntarchyNeoForgeEvents { if (player.level().isClientSide()) return; BloodglassAccess access = (BloodglassAccess) player; - int shieldCount = Math.min( + int targetCap = Math.min( event.getEffectInstance().getAmplifier() + 1, Math.max(0, AntarchySettings.bloodCrystalHardMaxShields() - access.antarchy$getArmorShieldsActive() - access.antarchy$getArmorShieldLostCount()) ); - access.antarchy$setAppleShieldsActive(shieldCount); - access.antarchy$setAppleShieldLostCount(0); - access.antarchy$setAppleRechargeTimer(0); - syncBloodglass((ServerPlayer) player); + int currentCap = access.antarchy$getAppleShieldsActive() + access.antarchy$getAppleShieldLostCount(); + // Only grant newly-added capacity (e.g. first application, or a higher amplifier). + // A mere duration refresh of an already-active ward must not reset shields that are + // already lost, nor restart their recharge timer. + if (targetCap > currentCap) { + access.antarchy$setAppleShieldsActive(access.antarchy$getAppleShieldsActive() + (targetCap - currentCap)); + syncBloodglass((ServerPlayer) player); + } } private static void clearAppleShields(Player player) { diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java index 6b591295..0fc8d5e2 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java @@ -85,6 +85,10 @@ public final class AntarchyNeoforgeBlocks { () -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); public static final DeferredBlock PINK_MILKWEED = BLOCKS.register("pink_milkweed", () -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); + public static final DeferredBlock CAMELLIA = BLOCKS.register("camellia", + () -> new com.craisinlord.antarchy.content.block.CamelliaBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY))); + public static final DeferredBlock SPIDER_LILY = BLOCKS.register("spider_lily", + () -> new com.craisinlord.antarchy.content.block.SpiderLilyBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POPPY))); public static final DeferredBlock OURANWOOD_SIGN = BLOCKS.register("ouranwood_sign", () -> new StandingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN))); public static final DeferredBlock OURANWOOD_WALL_SIGN = BLOCKS.register("ouranwood_wall_sign", diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java index e3514bee..70dad670 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeCreativeModeTabs.java @@ -35,18 +35,18 @@ public class AntarchyNeoforgeCreativeModeTabs { java.util.ArrayList sortedItems = new java.util.ArrayList<>(); for (var holder : AntarchyNeoforgeItems.ITEMS.getEntries()) { Item item = holder.get(); - if (item != Items.AIR && item != AntarchyNeoforgeItems.GLIMMER_BOTTLE.get()) sortedItems.add(item); + if (item != Items.AIR) sortedItems.add(item); } sortedItems.sort(CreativeTabOrder.COMPARATOR); - int n = sortedItems.size(); - for (int i = Math.max(0, n - 20); i < n; i++) { - Item it = sortedItems.get(i); - } - for (com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant variant : com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.values()) { - event.accept(com.craisinlord.antarchy.content.item.GlimmerBottleItem.create(variant)); - } - - sortedItems.forEach(event::accept); + sortedItems.forEach(item -> { + if (item == AntarchyNeoforgeItems.GLIMMER_BOTTLE.get()) { + for (com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant variant : com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.values()) { + event.accept(com.craisinlord.antarchy.content.item.GlimmerBottleItem.create(variant)); + } + } else { + event.accept(item); + } + }); } if (event.getTabKey() == CreativeModeTabs.SPAWN_EGGS) { @@ -81,7 +81,8 @@ public class AntarchyNeoforgeCreativeModeTabs { event.accept(AntarchyNeoforgeItems.BASILISK_SPAWN_EGG.get()); event.accept(AntarchyNeoforgeItems.EMPEROR_SCORPION_SPAWN_EGG.get()); event.accept(AntarchyNeoforgeItems.TORETERROR_SPAWN_EGG.get()); - event.accept(AntarchyNeoforgeItems.DORRIE_SPAWN_EGG.get()); + // Dorrie is not part of this update yet. + // event.accept(AntarchyNeoforgeItems.DORRIE_SPAWN_EGG.get()); event.accept(AntarchyNeoforgeItems.OURANWOOD_DEER_SPAWN_EGG.get()); event.accept(AntarchyNeoforgeItems.GLIMMER_SPAWN_EGG.get()); event.accept(AntarchyNeoforgeItems.ELKA_SPAWN_EGG.get()); @@ -97,6 +98,8 @@ public class AntarchyNeoforgeCreativeModeTabs { event.accept(AntarchyNeoforgeItems.DUPLICATOR_SAPLING_ITEM.get()); event.accept(AntarchyNeoforgeItems.ORANGE_MILKWEED_ITEM.get()); event.accept(AntarchyNeoforgeItems.PINK_MILKWEED_ITEM.get()); + event.accept(AntarchyNeoforgeItems.CAMELLIA_ITEM.get()); + event.accept(AntarchyNeoforgeItems.SPIDER_LILY_ITEM.get()); event.accept(AntarchyNeoforgeItems.HUSHWEED_ITEM.get()); event.accept(AntarchyNeoforgeItems.INFESTED_ROOTED_DIRT_ITEM.get()); event.accept(AntarchyNeoforgeItems.INFESTED_COARSE_DIRT_ITEM.get()); @@ -165,8 +168,13 @@ public class AntarchyNeoforgeCreativeModeTabs { event.accept(AntarchyNeoforgeItems.CORN.get()); event.accept(AntarchyNeoforgeItems.HIGH_FRUCTOSE_CORN_SYRUP.get()); event.accept(AntarchyNeoforgeItems.PEACH.get()); + event.accept(AntarchyNeoforgeItems.PEACH_PIE.get()); + event.accept(AntarchyNeoforgeItems.CORNBREAD.get()); + event.accept(AntarchyNeoforgeItems.POPCORN.get()); event.accept(AntarchyNeoforgeItems.RAW_CORNDOG.get()); event.accept(AntarchyNeoforgeItems.COOKED_CORNDOG.get()); + event.accept(AntarchyNeoforgeItems.RAW_VENISON.get()); + event.accept(AntarchyNeoforgeItems.COOKED_VENISON.get()); event.accept(AntarchyNeoforgeItems.ROOT_BEER.get()); event.accept(AntarchyNeoforgeItems.RAINBOW_SUGAR.get()); event.accept(AntarchyNeoforgeItems.BIG_BERTHA_BLADE.get()); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java index 0fbef14c..7630daa7 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntites.java @@ -299,11 +299,12 @@ public final class AntarchyNeoforgeEntites { .sized(1.0F, 1.2F) .clientTrackingRange(8) .build("cheep")); - public static final DeferredHolder, EntityType> DORRIE = ENTITY_TYPES.register("dorrie", - () -> EntityType.Builder.of(DorrieEntity::new, MobCategory.CREATURE) - .sized(1.6F, 1.4F) - .clientTrackingRange(10) - .build("dorrie")); + // Dorrie is not part of this update yet. + // public static final DeferredHolder, EntityType> DORRIE = ENTITY_TYPES.register("dorrie", + // () -> EntityType.Builder.of(DorrieEntity::new, MobCategory.CREATURE) + // .sized(1.6F, 1.4F) + // .clientTrackingRange(10) + // .build("dorrie")); public static final DeferredHolder, EntityType> OURANWOOD_DEER = ENTITY_TYPES.register("ouranwood_deer", () -> EntityType.Builder.of(OuranwoodDeerEntity::new, MobCategory.CREATURE) .sized(0.9F, 1.4F) diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java index 0fc3ca9f..a56d950b 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeEntityAttributes.java @@ -73,7 +73,8 @@ public class AntarchyNeoforgeEntityAttributes { event.put(AntarchyNeoforgeEntites.MOLEWORM.get(), MolewormEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.MOLEVORE.get(), MolevoreEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.CHEEP.get(), com.craisinlord.antarchy.content.entity.CheepEntity.createAttributes().build()); - event.put(AntarchyNeoforgeEntites.DORRIE.get(), com.craisinlord.antarchy.content.entity.DorrieEntity.createAttributes().build()); + // Dorrie is not part of this update yet. + // event.put(AntarchyNeoforgeEntites.DORRIE.get(), com.craisinlord.antarchy.content.entity.DorrieEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.OURANWOOD_DEER.get(), com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.GLIMMER.get(), com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity.createAttributes().build()); event.put(AntarchyNeoforgeEntites.ELKA.get(), ElkaEntity.createAttributes().build()); diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java index 7647b884..bdee968a 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeItems.java @@ -176,6 +176,8 @@ public final class AntarchyNeoforgeItems { // public static final DeferredItem OURANWOOD_VINE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_VINE); public static final DeferredItem ORANGE_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ORANGE_MILKWEED); public static final DeferredItem PINK_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PINK_MILKWEED); + public static final DeferredItem CAMELLIA_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CAMELLIA); + public static final DeferredItem SPIDER_LILY_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SPIDER_LILY); public static final DeferredItem OURANWOOD_SIGN_ITEM = ITEMS.register("ouranwood_sign", () -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyNeoforgeBlocks.OURANWOOD_SIGN.get(), AntarchyNeoforgeBlocks.OURANWOOD_WALL_SIGN.get())); public static final DeferredItem OURANWOOD_HANGING_SIGN_ITEM = ITEMS.register("ouranwood_hanging_sign", @@ -378,6 +380,27 @@ public final class AntarchyNeoforgeItems { .build()))); public static final DeferredItem PEACH = ITEMS.register("peach", () -> new PeachItem()); + public static final DeferredItem PEACH_PIE = ITEMS.register("peach_pie", + () -> new Item(new Item.Properties() + .stacksTo(64) + .food(new FoodProperties.Builder() + .nutrition(8) + .saturationModifier(0.3F) + .build()))); + public static final DeferredItem CORNBREAD = ITEMS.register("cornbread", + () -> new Item(new Item.Properties() + .stacksTo(64) + .food(new FoodProperties.Builder() + .nutrition(8) + .saturationModifier(0.9F) + .build()))); + public static final DeferredItem POPCORN = ITEMS.register("popcorn", + () -> new Item(new Item.Properties() + .stacksTo(64) + .food(new FoodProperties.Builder() + .nutrition(1) + .saturationModifier(0.1F) + .build()))); public static final DeferredItem RAW_CORNDOG = ITEMS.register("raw_corndog", () -> new Item(new Item.Properties() .stacksTo(64) @@ -539,8 +562,9 @@ public final class AntarchyNeoforgeItems { )); public static final DeferredItem GRAVITY_GUN = ITEMS.register("gravity_gun", () -> new GravityGunItem(new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant())); - public static final DeferredItem MINERS_DREAM = ITEMS.register("miners_dream", - () -> new MinersDreamItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); + // Temporarily disabled: keeping the code but not registering the item for now. + // public static final DeferredItem MINERS_DREAM = ITEMS.register("miners_dream", + // () -> new MinersDreamItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE))); public static final DeferredItem SQUIDZOOKA = ITEMS.register("squidzooka", () -> new SquidzookaItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.RARE))); public static final DeferredItem BATTLE_AXE = ITEMS.register("battle_axe", @@ -564,8 +588,9 @@ public final class AntarchyNeoforgeItems { // Spawn eggs public static final DeferredItem EASTER_BUNNY_SPAWN_EGG = ITEMS.register("easter_bunny_spawn_egg", () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.EASTER_BUNNY, 0xFFF2B2, 0xFF85B5, new Item.Properties())); - public static final DeferredItem DORRIE_SPAWN_EGG = ITEMS.register("dorrie_spawn_egg", - () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.DORRIE, 0x6F8CFF, 0xD2F2FF, new Item.Properties())); + // Dorrie is not part of this update yet. + // public static final DeferredItem DORRIE_SPAWN_EGG = ITEMS.register("dorrie_spawn_egg", + // () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.DORRIE, 0x6F8CFF, 0xD2F2FF, new Item.Properties())); public static final DeferredItem OURANWOOD_DEER_SPAWN_EGG = ITEMS.register("ouranwood_deer_spawn_egg", () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.OURANWOOD_DEER, 0x8A6D4B, 0xE8D9B5, new Item.Properties())); public static final DeferredItem GLIMMER_SPAWN_EGG = ITEMS.register("glimmer_spawn_egg", diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java index 1cc6e0db..c43600f6 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java @@ -241,8 +241,6 @@ public final class AntarchyNeoforgeMisc { () -> new CornPatchFeature(NoneFeatureConfiguration.CODEC)); public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_BUTTERFLY_FIELDS_FLORA = FEATURES.register("butterfly_fields_flora", () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.BUTTERFLY_FIELDS)); - public static final DeferredHolder, ElythiaFloraFeature> ELYTHIA_TORCHFLOWER_FIELDS_FLORA = FEATURES.register("elythia_torchflower_fields_flora", - () -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.TORCHFLOWER_FIELDS)); public static final DeferredHolder, ElythiaSurfaceCoverFeature> ELYTHIA_SURFACE_COVER = FEATURES.register("elythia_surface_cover", () -> new ElythiaSurfaceCoverFeature(NoneFeatureConfiguration.CODEC)); public static final DeferredHolder, ElythiaUndergroundFeature> ELYTHIA_UNDERGROUND = FEATURES.register("elythia_underground", @@ -267,6 +265,8 @@ public final class AntarchyNeoforgeMisc { () -> new LumenLilyPadFeature(NoneFeatureConfiguration.CODEC)); public static final DeferredHolder, LumenStreamFeature> LUMEN_STREAM = FEATURES.register("lumen_streams", () -> new LumenStreamFeature(NoneFeatureConfiguration.CODEC)); + public static final DeferredHolder, LumenSpireFeature> LUMEN_SPIRE = FEATURES.register("lumen_spires", + () -> new LumenSpireFeature(NoneFeatureConfiguration.CODEC)); public static final DeferredHolder, ElythiaTuffBoulderFeature> ELYTHIA_TUFF_BOULDER = FEATURES.register("elythia_tuff_boulder", () -> new ElythiaTuffBoulderFeature(NoneFeatureConfiguration.CODEC)); public static final DeferredHolder, ElythiaLargeTuffBoulderFeature> ELYTHIA_LARGE_TUFF_BOULDER = FEATURES.register("elythia_large_tuff_boulder", diff --git a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSpawnPlacements.java b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSpawnPlacements.java index e79e8067..3be87c86 100644 --- a/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSpawnPlacements.java +++ b/neoforge/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSpawnPlacements.java @@ -48,9 +48,10 @@ public class AntarchyNeoforgeSpawnPlacements { event.register(AntarchyNeoforgeEntites.BASILISK.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BasiliskEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); event.register(AntarchyNeoforgeEntites.EMPEROR_SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EmperorScorpionEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); event.register(AntarchyNeoforgeEntites.CHEEP.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, AbstractFish::checkSurfaceWaterAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); - event.register(AntarchyNeoforgeEntites.DORRIE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); + // Dorrie is not part of this update yet. + // event.register(AntarchyNeoforgeEntites.DORRIE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); event.register(AntarchyNeoforgeEntites.OURANWOOD_DEER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); - event.register(AntarchyNeoforgeEntites.GLIMMER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.GLIMMER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity::checkGlimmerSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); event.register(AntarchyNeoforgeEntites.ELKA.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); } }