fixed NML crash

jerry fixes
made drinking milk reset size ray
fixed logspam for setblock far away
fixed fabric brutalfly charge bar
fixed blood crystal hearts being on top of chat overlay
fixed glimmers immune to kill and damage commands
fixed ult crossbow player data corruption rarely happening
made nyxite spikes broken facing up fall upward and UpwardFallingBlockEntity
fixed incorrect map colors for blocks
fixed common rarity for uranium and titanium blocks
This commit is contained in:
craisinlord committed 2026-07-21 02:03:34 -05:00
1 parent 1858369f74
commit d5fd81f1c3
78 files changed
+897 -235

No files matched your search

@@ -83,7 +83,7 @@ public final class AntarchySettings {
private static double bigBerthaBasiliskCooldownSeconds = 7.0D;
private static double bigBerthaLucidInvertedDurationSeconds = 3.0D;
private static double bigBerthaLucidInvertedDamageBonusPercent = 25.0D;
private static double potentNyxiteInvertedDurationSeconds = 2.0D;
private static double potentNyxiteInvertedDurationSeconds = 60.0D;
private static int ultimateToolEnchantability = 25;
private static int ultimateArmorEnchantability = 10;
private static int ultimateBowEnchantability = 20;
@@ -134,6 +134,7 @@ public final class AntarchySoundEvents {
public static Supplier<SoundEvent> STINKY_FLY = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> STINK_BUG_FART = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> STINK_BUG_IDLE = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> CAVARYN_HEARTBEAT = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> ROLLY_POLLY_IDLE = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> CREEPING_HORROR_GROWL = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> CREEPING_HORROR_HURT = (Supplier<SoundEvent>) UNBOUND;
@@ -289,6 +290,7 @@ public final class AntarchySoundEvents {
Supplier<SoundEvent> stinkyFly,
Supplier<SoundEvent> stinkBugFart,
Supplier<SoundEvent> stinkBugIdle,
Supplier<SoundEvent> cavarynHeartbeat,
Supplier<SoundEvent> rollyPollyIdle,
Supplier<SoundEvent> creepingHorrorGrowl,
Supplier<SoundEvent> creepingHorrorHurt,
@@ -440,6 +442,7 @@ public final class AntarchySoundEvents {
STINKY_FLY = stinkyFly;
STINK_BUG_FART = stinkBugFart;
STINK_BUG_IDLE = stinkBugIdle;
CAVARYN_HEARTBEAT = cavarynHeartbeat;
ROLLY_POLLY_IDLE = rollyPollyIdle;
CREEPING_HORROR_GROWL = creepingHorrorGrowl;
CREEPING_HORROR_HURT = creepingHorrorHurt;
@@ -13,6 +13,8 @@ import net.minecraft.util.RandomSource;
import net.minecraft.util.StringRepresentable;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.ItemInteractionResult;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
@@ -31,6 +33,7 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.level.block.state.properties.EnumProperty;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec2;
import net.minecraft.world.phys.Vec3;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.jetbrains.annotations.Nullable;
@@ -44,6 +47,9 @@ public final class GiantLilyPadBlock extends Block implements BonemealableBlock
private static final VoxelShape SHAPE = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 0.5D, 16.0D);
private static final ThreadLocal<Boolean> REMOVING_STRUCTURE = ThreadLocal.withInitial(() -> false);
private static final Map<TilePosition, Vec2> OFFSETS = createOffsets();
private static final double BOUNCE_FACTOR = 0.35D;
private static final double FORWARD_BOOST_MULTIPLIER = 1.05D;
private static final double MAX_BOOSTED_HORIZONTAL_SPEED = 0.6D;
public GiantLilyPadBlock(BlockBehaviour.Properties properties) {
super(properties);
@@ -148,6 +154,34 @@ public final class GiantLilyPadBlock extends Block implements BonemealableBlock
return ItemInteractionResult.CONSUME;
}
@Override
public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) {
super.stepOn(level, pos, state, entity);
if (!level.isClientSide) {
Vec3 movement = entity.getDeltaMovement();
double horizontalSpeed = movement.horizontalDistance();
if (horizontalSpeed > 0.02D && horizontalSpeed < MAX_BOOSTED_HORIZONTAL_SPEED) {
double boosted = Math.min(horizontalSpeed * FORWARD_BOOST_MULTIPLIER, MAX_BOOSTED_HORIZONTAL_SPEED);
double scale = boosted / horizontalSpeed;
entity.setDeltaMovement(movement.x * scale, movement.y, movement.z * scale);
}
}
}
@Override
public void updateEntityAfterFallOn(BlockGetter level, Entity entity) {
if (entity.isSuppressingBounce()) {
super.updateEntityAfterFallOn(level, entity);
return;
}
Vec3 movement = entity.getDeltaMovement();
if (movement.y < 0.0D) {
double bounce = entity instanceof LivingEntity ? BOUNCE_FACTOR : BOUNCE_FACTOR * 0.7D;
entity.setDeltaMovement(movement.x, -movement.y * bounce, movement.z);
}
}
@Override
public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) {
if (!state.getValue(HAS_LOTUS) || random.nextInt(10) != 0) {
@@ -32,7 +32,7 @@ public class JerryEggBlock extends Block {
public static final BooleanProperty ROTATED = BooleanProperty.create("rotated");
private static final ResourceLocation JERRY_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "jerry");
private static final int HATCH_CHECK_INTERVAL = 1200;
private static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 0.0D, 15.0D, 16.0D, 16.0D);
private static final VoxelShape SHAPE = Block.box(1.5D, 0.0D, 1.5D, 14.5D, 16.0D, 14.5D);
public JerryEggBlock(BlockBehaviour.Properties properties) {
super(properties);
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.block;
import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity;
import com.mojang.serialization.MapCodec;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
@@ -11,7 +12,6 @@ import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.PointedDripstoneBlock;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
@@ -119,8 +119,7 @@ public class NyxiteSpikeBlock extends PointedDripstoneBlock {
BlockPos.MutableBlockPos cursor = pos.mutable();
while (isNyxiteSpikeWithDirection(level.getBlockState(cursor), Direction.UP)) {
BlockState spikeState = level.getBlockState(cursor);
dropResources(spikeState, level, cursor);
level.removeBlock(cursor, false);
UpwardFallingBlockEntity.fallUp(level, cursor, spikeState);
cursor.move(Direction.UP);
}
}
@@ -1,11 +1,13 @@
package com.craisinlord.antarchy.content.client;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.AntarchySoundEvents;
import net.minecraft.client.Minecraft;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.core.registries.Registries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3;
@@ -15,14 +17,18 @@ public final class HordeClientState {
Registries.DIMENSION,
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "cavaryn")
);
private static final int STALE_SYNC_TICKS = 20 * 15;
private static float targetIntensity;
private static float intensity;
private static int heartbeatDelayTicks;
private static int ticksSinceSync;
private HordeClientState() {
}
public static void update(float syncedIntensity) {
targetIntensity = Mth.clamp(syncedIntensity, 0.0F, 1.0F);
ticksSinceSync = 0;
}
public static float intensity() {
@@ -31,15 +37,21 @@ public final class HordeClientState {
public static void tick() {
Minecraft minecraft = Minecraft.getInstance();
if (minecraft.level == null || minecraft.player == null || !minecraft.level.dimension().equals(CAVARYN)) {
targetIntensity = 0.0F;
if (minecraft.level == null || minecraft.player == null || !minecraft.level.dimension().equals(CAVARYN) || !minecraft.player.isAlive()) {
reset();
}
intensity += (targetIntensity - intensity) * 0.08F;
if (intensity < 0.01F) {
if (minecraft.level == null || minecraft.player == null || minecraft.isPaused()) {
return;
}
if (minecraft.level == null || minecraft.player == null || minecraft.isPaused()) {
if (minecraft.level.dimension().equals(CAVARYN)) {
if (++ticksSinceSync >= STALE_SYNC_TICKS) {
targetIntensity = 0.0F;
}
tickHeartbeat(minecraft);
}
if (intensity < 0.01F) {
return;
}
@@ -52,4 +64,34 @@ public final class HordeClientState {
minecraft.level.addParticle(ParticleTypes.MYCELIUM, x, y, z, 0.0D, 0.015D + intensity * 0.025D, 0.0D);
}
}
private static void reset() {
targetIntensity = 0.0F;
intensity = 0.0F;
heartbeatDelayTicks = 0;
ticksSinceSync = 0;
}
private static void tickHeartbeat(Minecraft minecraft) {
if (heartbeatDelayTicks > 0) {
heartbeatDelayTicks--;
return;
}
float soundIntensity = Mth.clamp(intensity, 0.0F, 1.0F);
float scaledIntensity = soundIntensity * soundIntensity;
float volume = 0.08F + scaledIntensity * 1.42F;
float pitch = 0.85F + soundIntensity * 0.45F;
heartbeatDelayTicks = Mth.clamp((int) (150.0F - scaledIntensity * 132.0F), 18, 150);
minecraft.level.playLocalSound(
minecraft.player.getX(),
minecraft.player.getY(),
minecraft.player.getZ(),
AntarchySoundEvents.CAVARYN_HEARTBEAT.get(),
SoundSource.AMBIENT,
volume,
pitch,
false
);
}
}
@@ -17,9 +17,6 @@ public class JerryRenderer extends GeoEntityRenderer<JerryEntity> {
@Override
public RenderType getRenderType(JerryEntity animatable, ResourceLocation texture, @Nullable MultiBufferSource bufferSource, float partialTick) {
JerryEntity.Stage stage = animatable.getStage();
return stage == JerryEntity.Stage.INFANT || stage == JerryEntity.Stage.MATURE
? RenderType.entityTranslucent(texture)
: RenderType.entityCutoutNoCull(texture);
return RenderType.entityTranslucent(texture);
}
}
@@ -1,11 +1,15 @@
package com.craisinlord.antarchy.content.entity;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.horde.CavarynHordeManager;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.network.syncher.SynchedEntityData;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.util.ByIdMap;
import net.minecraft.util.Mth;
import net.minecraft.util.StringRepresentable;
@@ -71,6 +75,8 @@ public class JerryEntity extends Monster implements GeoEntity {
private int stageAgeTicks;
private int attachDamageTicks;
private int attackCooldownTicks;
private int alphaDiveCooldownTicks;
private boolean attachedToTarget;
public JerryEntity(EntityType<? extends JerryEntity> entityType, Level level) {
super(entityType, level);
@@ -145,6 +151,9 @@ public class JerryEntity extends Monster implements GeoEntity {
if (this.attackCooldownTicks > 0) {
this.attackCooldownTicks--;
}
if (this.alphaDiveCooldownTicks > 0) {
this.alphaDiveCooldownTicks--;
}
Stage stage = this.getStage();
if (stage == Stage.INFANT || stage == Stage.MATURE) {
@@ -156,20 +165,43 @@ public class JerryEntity extends Monster implements GeoEntity {
private void tickGrowth() {
Stage stage = this.getStage();
if (stage == Stage.ALPHA || stage == Stage.GAMMA) {
if (stage == Stage.GAMMA) {
return;
}
this.stageAgeTicks++;
this.stageAgeTicks += this.growthTickAmount();
if (this.stageAgeTicks < GROWTH_TICKS) {
return;
}
this.stageAgeTicks = 0;
this.setStage(stage == Stage.INFANT ? Stage.MATURE : (this.random.nextBoolean() ? Stage.ALPHA : Stage.GAMMA));
this.setStage(switch (stage) {
case INFANT -> Stage.MATURE;
case MATURE -> Stage.ALPHA;
case ALPHA -> Stage.GAMMA;
case GAMMA -> Stage.GAMMA;
});
}
private int growthTickAmount() {
if (!(this.level() instanceof ServerLevel serverLevel)) {
return 1;
}
int hordeLevel = 0;
for (ServerPlayer player : serverLevel.players()) {
if (player.isSpectator() || player.distanceToSqr(this) > 96.0D * 96.0D) {
continue;
}
hordeLevel = Math.max(hordeLevel, CavarynHordeManager.getHordeLevel(player));
}
float intensity = Mth.clamp(hordeLevel / (float) CavarynHordeManager.maxHordeLevel(), 0.0F, 1.0F);
return 1 + Math.round(intensity * intensity * 99.0F);
}
private void tickAttachedForm(Stage stage) {
LivingEntity target = this.getTarget();
if (target == null || !target.isAlive()) {
this.attachedToTarget = false;
this.drift();
return;
}
@@ -182,13 +214,18 @@ public class JerryEntity extends Monster implements GeoEntity {
this.setDeltaMovement(this.getDeltaMovement().scale(0.55D).add(motion));
}
if (distance < 1.15D) {
this.attachedToTarget = true;
this.setPos(targetPos.x, targetPos.y, targetPos.z);
this.setDeltaMovement(Vec3.ZERO);
if (++this.attachDamageTicks >= ATTACH_DAMAGE_INTERVAL) {
this.attachDamageTicks = 0;
Vec3 targetMotion = target.getDeltaMovement();
target.hurt(this.damageSources().mobAttack(this), (float) stage.attackDamage());
target.setDeltaMovement(targetMotion);
target.hurtMarked = true;
}
} else {
this.attachedToTarget = false;
this.attachDamageTicks = 0;
}
}
@@ -201,14 +238,27 @@ public class JerryEntity extends Monster implements GeoEntity {
}
Stage stage = this.getStage();
Vec3 targetPos = target.getEyePosition().add(0.0D, -0.35D, 0.0D);
Vec3 targetPos = target.getEyePosition();
Vec3 hoverPos = targetPos.add(0.0D, 5.0D, 0.0D);
Vec3 toHover = hoverPos.subtract(this.position());
Vec3 toTarget = targetPos.subtract(this.position());
double distance = toTarget.length();
double hoverDistance = toHover.length();
double targetDistance = toTarget.length();
double horizontalDistance = this.position().subtract(targetPos).horizontalDistance();
this.faceTarget(target);
if (distance > 0.01D) {
this.setDeltaMovement(this.getDeltaMovement().scale(0.65D).add(toTarget.normalize().scale(0.22D)));
if (this.alphaDiveCooldownTicks > 0) {
this.setDeltaMovement(this.getDeltaMovement().scale(0.8D).add(toTarget.normalize().scale(0.28D)).add(0.0D, -0.08D, 0.0D));
} else if (hoverDistance > 0.01D) {
Vec3 desiredMotion = toHover.normalize().scale(0.20D);
this.setDeltaMovement(this.getDeltaMovement().scale(0.72D).add(desiredMotion));
}
if (distance < 2.1D && this.attackCooldownTicks <= 0) {
if (this.alphaDiveCooldownTicks <= 0 && targetDistance < 9.0D && horizontalDistance < 7.0D) {
this.alphaDiveCooldownTicks = 30;
this.setDeltaMovement(this.getDeltaMovement().add(0.0D, -0.55D, 0.0D).add(toTarget.normalize().scale(0.42D)));
}
if (targetDistance < 2.3D && this.attackCooldownTicks <= 0) {
this.faceTarget(target);
this.attackCooldownTicks = 24;
this.entityData.set(ATTACK_ANIM_TICKS, ATTACK_ANIM_DURATION);
@@ -252,9 +302,23 @@ public class JerryEntity extends Monster implements GeoEntity {
@Override
public InteractionResult mobInteract(Player player, InteractionHand hand) {
ItemStack stack = player.getItemInHand(hand);
if (this.isAdultStage() && stack.getItem() instanceof SpawnEggItem spawnEggItem && spawnEggItem.getType(stack) == this.getType()) {
if (stack.is(BuiltInRegistries.ITEM.get(ResourceLocation.fromNamespaceAndPath(com.craisinlord.antarchy.Antarchy.MODID, "jerry_nucleus")))) {
if (!this.level().isClientSide) {
Stage nextStage = this.nextGrowthStage();
if (nextStage != this.getStage()) {
this.setStage(nextStage);
this.stageAgeTicks = 0;
if (!player.getAbilities().instabuild) {
stack.shrink(1);
}
}
}
return InteractionResult.sidedSuccess(this.level().isClientSide);
}
if (stack.getItem() instanceof SpawnEggItem spawnEggItem && spawnEggItem.getType(stack) == this.getType()) {
if (this.level() instanceof ServerLevel serverLevel && this.getType().create(serverLevel) instanceof JerryEntity infant) {
infant.setStage(Stage.INFANT);
infant.setStage(this.isAdultStage() ? Stage.INFANT : this.randomAdultStage());
infant.moveTo(this.getX(), this.getY(), this.getZ(), this.random.nextFloat() * 360.0F, 0.0F);
infant.finalizeSpawn(serverLevel, serverLevel.getCurrentDifficultyAt(infant.blockPosition()), MobSpawnType.MOB_SUMMONED, null);
serverLevel.addFreshEntity(infant);
@@ -304,6 +368,24 @@ public class JerryEntity extends Monster implements GeoEntity {
return false;
}
@Override
public boolean isPushable() {
return !this.isAttachedYoungStage() && super.isPushable();
}
@Override
public void push(Entity entity) {
if (this.isAttachedYoungStage()) {
return;
}
super.push(entity);
}
@Override
public boolean canBeCollidedWith() {
return !this.isAttachedYoungStage() && super.canBeCollidedWith();
}
@Override
protected void checkFallDamage(double y, boolean onGround, BlockState state, net.minecraft.core.BlockPos pos) {
}
@@ -354,6 +436,24 @@ public class JerryEntity extends Monster implements GeoEntity {
return stage == Stage.ALPHA || stage == Stage.GAMMA;
}
private Stage nextGrowthStage() {
return switch (this.getStage()) {
case INFANT -> Stage.MATURE;
case MATURE -> Stage.ALPHA;
case ALPHA -> Stage.GAMMA;
case GAMMA -> Stage.GAMMA;
};
}
private Stage randomAdultStage() {
return this.random.nextBoolean() ? Stage.ALPHA : Stage.GAMMA;
}
private boolean isAttachedYoungStage() {
Stage stage = this.getStage();
return this.attachedToTarget && (stage == Stage.INFANT || stage == Stage.MATURE);
}
private class GammaMeleeGoal extends MeleeAttackGoal {
GammaMeleeGoal() {
super(JerryEntity.this, 1.35D, false);
@@ -21,7 +21,6 @@ import java.util.function.Supplier;
public class UpwardFallingBlockEntity extends Entity {
/** Set by the platform registration before any block tick fires. */
public static Supplier<EntityType<UpwardFallingBlockEntity>> TYPE;
private static final EntityDataAccessor<BlockState> DATA_BLOCK_STATE =
@@ -124,7 +124,7 @@ public class WaterBombEntity extends ThrowableProjectile {
level.removeBlock(hitPos, false);
} else if (level.isEmptyBlock(hitPos) && level.getBlockState(hitPos.below()).isSolid()) {
level.setBlock(hitPos, Blocks.WATER.defaultBlockState().setValue(LiquidBlock.LEVEL, 1), 3);
level.scheduleTick(hitPos, Fluids.WATER, 2);
level.scheduleTick(hitPos, Fluids.FLOWING_WATER, 2);
}
}
this.discard();
@@ -22,6 +22,8 @@ import net.minecraft.world.DifficultyInstance;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.damagesource.DamageTypes;
import net.minecraft.tags.DamageTypeTags;
import net.minecraft.world.entity.AgeableMob;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityDimensions;
@@ -132,7 +134,7 @@ public class GlimmerEntity extends TamableAnimal implements GeoEntity {
@Override
public boolean isInvulnerableTo(DamageSource damageSource) {
return true;
return !damageSource.is(DamageTypeTags.BYPASSES_INVULNERABILITY) && !damageSource.is(DamageTypes.GENERIC);
}
@Override
@@ -113,7 +113,7 @@ public final class CavarynHordeDefinitions {
for (int i = 0; i < count; i++) {
EntityType<?> type = entry.randomType(random);
if (type != null) {
choices.add(new SpawnChoice(type, entry.trackCompletion, entry.heavyArrivalEffect));
choices.add(new SpawnChoice(type, entry.trackCompletion, entry.heavyArrivalEffect, entry.jerryStage));
}
}
}
@@ -137,7 +137,7 @@ public final class CavarynHordeDefinitions {
}
}
public record SpawnChoice(EntityType<?> type, boolean trackCompletion, boolean heavyArrivalEffect) {
public record SpawnChoice(EntityType<?> type, boolean trackCompletion, boolean heavyArrivalEffect, String jerryStage) {
}
private static final class Entry {
@@ -153,10 +153,11 @@ public final class CavarynHordeDefinitions {
private final boolean warning;
private final boolean trackCompletion;
private final boolean heavyArrivalEffect;
private final String jerryStage;
private Entry(TagKey<EntityType<?>> entityTag, int weight, int baseCount, int highAttentionBaseCount, int perPlayerCount,
int perPlayers, int perPlayersCount, int minCount, int maxCount, boolean warning,
boolean trackCompletion, boolean heavyArrivalEffect) {
boolean trackCompletion, boolean heavyArrivalEffect, String jerryStage) {
this.entityTag = entityTag;
this.weight = Math.max(1, weight);
this.baseCount = baseCount;
@@ -169,6 +170,7 @@ public final class CavarynHordeDefinitions {
this.warning = warning;
this.trackCompletion = trackCompletion;
this.heavyArrivalEffect = heavyArrivalEffect;
this.jerryStage = jerryStage;
}
private static Entry fromJson(JsonObject json) {
@@ -191,7 +193,8 @@ public final class CavarynHordeDefinitions {
getInt(json, "max_count", Integer.MAX_VALUE),
getBoolean(json, "warning", false),
getBoolean(json, "track_completion", false),
getBoolean(json, "heavy_arrival_effect", false)
getBoolean(json, "heavy_arrival_effect", false),
getString(json, "jerry_stage", "")
);
}
@@ -3,6 +3,7 @@ package com.craisinlord.antarchy.content.horde;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.AntarchyTags;
import com.craisinlord.antarchy.content.entity.JerryEntity;
import com.craisinlord.antarchy.content.network.HerculesBeetleImpactShakeSync;
import com.craisinlord.antarchy.content.network.HordeIntensitySync;
import java.util.ArrayList;
@@ -38,6 +39,7 @@ import net.minecraft.world.entity.monster.Enemy;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.ServerLevelAccessor;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.saveddata.SavedData;
import net.minecraft.world.phys.AABB;
@@ -48,6 +50,10 @@ public final class CavarynHordeManager {
Registries.DIMENSION,
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "cavaryn")
);
private static final ResourceKey<Biome> BIOWART_CAVES = ResourceKey.create(
Registries.BIOME,
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "biowart_caves")
);
private static final ResourceLocation DORMANT_HORDE = hordeId("dormant");
private static final ResourceLocation AWAKENING_HORDE = hordeId("awakening");
private static final ResourceLocation WAVE_ONE_HORDE = hordeId("wave_1");
@@ -58,6 +64,10 @@ public final class CavarynHordeManager {
private static final int GROUP_RADIUS_BLOCKS = 128;
private static final int ATTENTION_THRESHOLD = 100;
private static final int HOSTILE_KILL_ATTENTION = 4;
private static final int MOB_KILL_ATTENTION = 3;
private static final int EGG_OR_NEST_BREAK_ATTENTION = 5;
private static final int BLOCK_BREAK_ATTENTION = 1;
private static final int STALE_ATTENTION_PRUNE_TICKS = 20 * 60 * 20;
private static final int PLAYER_CHECK_INTERVAL = 20;
private static final int AREA_ATTENTION_INTERVAL = 20 * 45;
@@ -105,7 +115,7 @@ public final class CavarynHordeManager {
if (isPlayerInActiveEncounter(level, player)) {
return;
}
addAttention(level, player, killed instanceof Enemy || killed.getType().getCategory() == MobCategory.MONSTER ? 18 : 8);
addAttention(level, player, scaleActionAttention(level, killed instanceof Enemy || killed.getType().getCategory() == MobCategory.MONSTER ? HOSTILE_KILL_ATTENTION : MOB_KILL_ATTENTION));
}
public static void recordBlockBreak(ServerPlayer player, BlockState brokenState, BlockPos pos) {
@@ -115,7 +125,7 @@ public final class CavarynHordeManager {
if (!isHordeBiome(level, pos) || isPlayerInActiveEncounter(level, player)) {
return;
}
addAttention(level, player, isEggOrNest(brokenState) ? 22 : 2);
addAttention(level, player, scaleActionAttention(level, isEggOrNest(brokenState) ? EGG_OR_NEST_BREAK_ATTENTION : BLOCK_BREAK_ATTENTION));
}
public static boolean isHordeBiome(ServerLevelAccessor level, BlockPos pos) {
@@ -207,7 +217,7 @@ public final class CavarynHordeManager {
if (encounter == null) {
tickDormantPressure(level, data, player, attention, currentArea, gameTime);
}
HordeIntensitySync.send(player, encounter != null ? encounter.intensity(gameTime) : attention.attention / (float) ATTENTION_THRESHOLD);
HordeIntensitySync.send(player, attention.attention / (float) ATTENTION_THRESHOLD);
}
for (Map.Entry<UUID, PlayerAttention> entry : data.players.entrySet()) {
@@ -272,7 +282,7 @@ public final class CavarynHordeManager {
return;
}
CavarynHordeDefinitions.Definition definition = CavarynHordeDefinitions.get(level, DORMANT_HORDE);
CavarynHordeDefinitions.Definition definition = CavarynHordeDefinitions.get(level, hordeForPosition(level, player.blockPosition(), DORMANT_HORDE));
int existing = countNearbyDirectHordeMobs(level, player.blockPosition(), 48.0D);
if (existing >= definition.resolvedMaxActive(level, scaleSpawnCount(level, MAX_DORMANT_MOBS_PER_AREA))) {
data.areaSpawnCooldowns.put(areaKey, gameTime + DORMANT_MIN_SPAWN_INTERVAL);
@@ -310,6 +320,15 @@ public final class CavarynHordeManager {
data.setDirty();
}
private static int scaleActionAttention(ServerLevel level, int amount) {
float multiplier = switch (level.getDifficulty()) {
case HARD -> 1.5F;
case EASY -> 0.75F;
default -> 1.0F;
};
return Math.max(1, Math.round(amount * multiplier));
}
private static void startEncounter(ServerLevel level, HordeData data, ServerPlayer seedPlayer) {
Encounter existing = findNearbyEncounter(data, seedPlayer.blockPosition());
if (existing != null) {
@@ -336,6 +355,37 @@ public final class CavarynHordeManager {
data.setDirty();
}
private static List<TargetedSpawnChoice> buildTargetedSpawnList(ServerLevel level, ResourceLocation horde, List<ServerPlayer> targets, int players, boolean highAttention) {
Map<ResourceLocation, List<ServerPlayer>> targetsByHorde = new HashMap<>();
for (ServerPlayer target : targets) {
ResourceLocation targetHorde = hordeForPosition(level, target.blockPosition(), horde);
targetsByHorde.computeIfAbsent(targetHorde, ignored -> new ArrayList<>()).add(target);
}
List<TargetedSpawnChoice> choices = new ArrayList<>();
for (Map.Entry<ResourceLocation, List<ServerPlayer>> entry : targetsByHorde.entrySet()) {
List<ServerPlayer> groupTargets = entry.getValue();
int groupPlayers = Math.max(1, Math.min(players, groupTargets.size()));
List<CavarynHordeDefinitions.SpawnChoice> groupChoices = CavarynHordeDefinitions.get(level, entry.getKey())
.buildSpawnList(level, groupPlayers, highAttention, level.random);
for (CavarynHordeDefinitions.SpawnChoice choice : groupChoices) {
ServerPlayer target = groupTargets.get(level.random.nextInt(groupTargets.size()));
choices.add(new TargetedSpawnChoice(choice, target));
}
}
java.util.Collections.shuffle(choices);
return choices;
}
private static boolean shouldWarnForTargets(ServerLevel level, ResourceLocation horde, List<ServerPlayer> targets) {
for (ServerPlayer target : targets) {
if (CavarynHordeDefinitions.get(level, hordeForPosition(level, target.blockPosition(), horde)).shouldWarn()) {
return true;
}
}
return false;
}
private static void spawnAwakeningSkirmish(ServerLevel level, Encounter encounter, List<ServerPlayer> targets) {
if (level.getDifficulty() == Difficulty.PEACEFUL) {
return;
@@ -346,15 +396,13 @@ public final class CavarynHordeManager {
return;
}
List<CavarynHordeDefinitions.SpawnChoice> choices = CavarynHordeDefinitions.get(level, AWAKENING_HORDE)
.buildSpawnList(level, players, false, level.random);
List<TargetedSpawnChoice> choices = buildTargetedSpawnList(level, AWAKENING_HORDE, targets, players, false);
int spawned = 0;
for (CavarynHordeDefinitions.SpawnChoice choice : choices) {
for (TargetedSpawnChoice choice : choices) {
if (spawned >= capacity) {
break;
}
ServerPlayer target = targets.get(level.random.nextInt(targets.size()));
if (spawnDirectMob(level, encounter, choice, target)) {
if (spawnDirectMob(level, encounter, choice.choice(), choice.target())) {
spawned++;
}
}
@@ -371,19 +419,18 @@ public final class CavarynHordeManager {
return;
}
CavarynHordeDefinitions.Definition definition = CavarynHordeDefinitions.get(level, hordeForWave(encounter.wave));
if (definition.shouldWarn()) {
warnHercules(level, encounter.center, targets);
ResourceLocation horde = hordeForWave(encounter.wave);
if (shouldWarnForTargets(level, horde, targets)) {
warnHercules(level, encounter.center, targets);
}
List<CavarynHordeDefinitions.SpawnChoice> choices = definition.buildSpawnList(level, players, false, level.random);
List<TargetedSpawnChoice> choices = buildTargetedSpawnList(level, horde, targets, players, false);
int spawned = 0;
for (CavarynHordeDefinitions.SpawnChoice choice : choices) {
for (TargetedSpawnChoice choice : choices) {
if (spawned >= capacity) {
break;
}
ServerPlayer target = targets.get(level.random.nextInt(targets.size()));
if (spawnDirectMob(level, encounter, choice, target)) {
if (spawnDirectMob(level, encounter, choice.choice(), choice.target())) {
spawned++;
}
}
@@ -401,6 +448,7 @@ public final class CavarynHordeManager {
}
mob.moveTo(spawnPos.getX() + 0.5D, spawnPos.getY(), spawnPos.getZ() + 0.5D, level.random.nextFloat() * 360.0F, 0.0F);
mob.finalizeSpawn(level, level.getCurrentDifficultyAt(spawnPos), MobSpawnType.EVENT, null);
applyJerryStage(mob, choice.jerryStage(), level.random);
if (mob.canAttack(target)) {
mob.setTarget(target);
}
@@ -425,6 +473,27 @@ public final class CavarynHordeManager {
return true;
}
private static void applyJerryStage(Mob mob, String stageName, RandomSource random) {
if (!(mob instanceof JerryEntity jerry) || stageName == null || stageName.isBlank()) {
return;
}
JerryEntity.Stage stage = switch (stageName) {
case "random" -> JerryEntity.Stage.values()[random.nextInt(JerryEntity.Stage.values().length)];
case "random_young" -> random.nextBoolean() ? JerryEntity.Stage.INFANT : JerryEntity.Stage.MATURE;
case "random_adult" -> random.nextBoolean() ? JerryEntity.Stage.ALPHA : JerryEntity.Stage.GAMMA;
default -> JerryEntity.Stage.byName(stageName);
};
jerry.setStage(stage);
}
private static ResourceLocation hordeForPosition(ServerLevel level, BlockPos pos, ResourceLocation horde) {
if (level.getBiome(pos).is(BIOWART_CAVES)) {
return ResourceLocation.fromNamespaceAndPath(horde.getNamespace(), "biowart_caves/" + horde.getPath());
}
return horde;
}
private static int countNearbyDirectHordeMobs(ServerLevel level, BlockPos center, double radius) {
AABB box = new AABB(center).inflate(radius);
return level.getEntitiesOfClass(Mob.class, box, mob -> CavarynHordeDefinitions.isConfiguredHordeType(level, mob.getType())).size();
@@ -598,6 +667,9 @@ public final class CavarynHordeManager {
RECOVERY
}
private record TargetedSpawnChoice(CavarynHordeDefinitions.SpawnChoice choice, ServerPlayer target) {
}
public static final class HordeData extends SavedData {
private static final String PLAYERS_KEY = "Players";
private static final String ENCOUNTERS_KEY = "Encounters";
@@ -716,14 +788,6 @@ public final class CavarynHordeManager {
private final Set<UUID> hordeMobIds = new HashSet<>();
private final Set<UUID> herculesIds = new HashSet<>();
private float intensity(long gameTime) {
return switch (this.phase) {
case AWAKENING -> Mth.clamp((gameTime - this.startedAt) / (float) AWAKENING_TICKS, 0.25F, 1.0F);
case SWARMING, HERCULES -> 1.0F;
case RECOVERY -> Mth.clamp((this.recoveryEndsAt - gameTime) / (float) RECOVERY_TICKS, 0.0F, 0.75F);
};
}
private CompoundTag save() {
CompoundTag tag = new CompoundTag();
tag.putUUID("Id", this.id);
@@ -202,6 +202,7 @@ public class SizeRayItem extends ProjectileWeaponItem implements GeoItem {
? "tooltip.antarchy.shrink_ray"
: "tooltip.antarchy.growth_ray";
tooltipComponents.add(Component.translatable(tooltipKey).withStyle(ChatFormatting.GRAY));
tooltipComponents.add(Component.translatable("tooltip.antarchy.size_ray_milk_reset").withStyle(ChatFormatting.GRAY));
}
@Override
@@ -4,6 +4,9 @@ import com.craisinlord.antarchy.config.AntarchySettings;
import net.minecraft.ChatFormatting;
import net.minecraft.core.component.DataComponents;
import net.minecraft.network.chat.Component;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.Tag;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth;
@@ -18,6 +21,7 @@ import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.component.ChargedProjectiles;
import net.minecraft.world.item.component.CustomData;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.item.enchantment.ItemEnchantments;
import net.minecraft.world.level.Level;
@@ -30,6 +34,8 @@ public class UltimateCrossbowItem extends CrossbowItem {
private static final int FIRE_COOLDOWN_TICKS = 5; // 4 shots/sec
private static final float SHOOTING_POWER = 3.15F;
private static final double VANILLA_CROSSBOW_ARROW_DAMAGE = 7.0D;
private static final String RESERVE_PROJECTILES_TAG = "UltimateCrossbowProjectiles";
private static final String PROJECTILE_ITEM_TAG = "Item";
public UltimateCrossbowItem(Item.Properties properties) {
super(properties);
@@ -84,15 +90,14 @@ public class UltimateCrossbowItem extends CrossbowItem {
for (int i = 0; i < toLoad; i++) {
projectiles.add(ammoType.copyWithCount(1));
}
stack.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.of(projectiles));
saveLoadedProjectiles(stack, player.registryAccess(), projectiles);
level.playSound(null, player.getX(), player.getY(), player.getZ(),
SoundEvents.CROSSBOW_LOADING_END.value(), SoundSource.PLAYERS, 1.0F, 1.0F);
}
private void fireOneShot(Level level, Player player, InteractionHand hand, ItemStack stack) {
ChargedProjectiles charged = stack.getOrDefault(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.EMPTY);
List<ItemStack> all = new ArrayList<>(charged.getItems().stream().filter(s -> !s.isEmpty()).toList());
List<ItemStack> all = getLoadedProjectiles(stack, player.registryAccess());
if (all.isEmpty()) return;
ItemStack arrow = all.remove(0);
@@ -110,10 +115,7 @@ public class UltimateCrossbowItem extends CrossbowItem {
this.performShooting(level, player, hand, stack, SHOOTING_POWER, 1.0F, null);
// performShooting clears CHARGED_PROJECTILES; restore remaining valid arrows if any
List<ItemStack> remaining = all.stream().filter(s -> !s.isEmpty()).toList();
if (!remaining.isEmpty()) {
stack.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.of(remaining));
}
saveLoadedProjectiles(stack, player.registryAccess(), all);
}
@Override
@@ -139,10 +141,10 @@ public class UltimateCrossbowItem extends CrossbowItem {
@Override
public void appendHoverText(ItemStack stack, Item.TooltipContext context, List<Component> tooltipComponents, TooltipFlag tooltipFlag) {
ChargedProjectiles charged = stack.getOrDefault(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.EMPTY);
if (!charged.isEmpty()) {
int count = charged.getItems().size();
Component arrowName = charged.getItems().get(0).getHoverName();
List<ItemStack> loadedProjectiles = getLoadedProjectiles(stack, context.registries());
if (!loadedProjectiles.isEmpty()) {
int count = loadedProjectiles.size();
Component arrowName = loadedProjectiles.get(0).getHoverName();
tooltipComponents.add(Component.translatable("item.antarchy.ultimate_crossbow.arrows_remaining", count, arrowName)
.withStyle(ChatFormatting.GRAY));
}
@@ -214,4 +216,58 @@ public class UltimateCrossbowItem extends CrossbowItem {
public int getEnchantmentValue() {
return AntarchySettings.ultimateCrossbowEnchantability();
}
private static List<ItemStack> getLoadedProjectiles(ItemStack crossbow, net.minecraft.core.HolderLookup.Provider registries) {
List<ItemStack> projectiles = new ArrayList<>();
ChargedProjectiles charged = crossbow.getOrDefault(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.EMPTY);
for (ItemStack projectile : charged.getItems()) {
if (!projectile.isEmpty() && projectiles.size() < MAX_ARROWS) {
projectiles.add(projectile.copyWithCount(1));
}
}
CompoundTag customData = crossbow.getOrDefault(DataComponents.CUSTOM_DATA, CustomData.EMPTY).copyTag();
ListTag reserve = customData.getList(RESERVE_PROJECTILES_TAG, Tag.TAG_COMPOUND);
for (int i = 0; i < reserve.size() && projectiles.size() < MAX_ARROWS; i++) {
ItemStack projectile = ItemStack.parseOptional(registries, reserve.getCompound(i).getCompound(PROJECTILE_ITEM_TAG));
if (!projectile.isEmpty()) {
projectiles.add(projectile.copyWithCount(1));
}
}
return projectiles;
}
private static void saveLoadedProjectiles(ItemStack crossbow, net.minecraft.core.HolderLookup.Provider registries, List<ItemStack> projectiles) {
List<ItemStack> sanitizedProjectiles = projectiles.stream()
.filter(projectile -> !projectile.isEmpty())
.limit(MAX_ARROWS)
.map(projectile -> projectile.copyWithCount(1))
.toList();
if (sanitizedProjectiles.isEmpty()) {
crossbow.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.EMPTY);
clearReserveProjectiles(crossbow);
return;
}
crossbow.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.of(List.of(sanitizedProjectiles.get(0))));
ListTag reserve = new ListTag();
for (int i = 1; i < sanitizedProjectiles.size(); i++) {
CompoundTag entry = new CompoundTag();
entry.put(PROJECTILE_ITEM_TAG, sanitizedProjectiles.get(i).save(registries));
reserve.add(entry);
}
CustomData.update(DataComponents.CUSTOM_DATA, crossbow, tag -> {
if (reserve.isEmpty()) {
tag.remove(RESERVE_PROJECTILES_TAG);
} else {
tag.put(RESERVE_PROJECTILES_TAG, reserve);
}
});
}
private static void clearReserveProjectiles(ItemStack crossbow) {
CustomData.update(DataComponents.CUSTOM_DATA, crossbow, tag -> tag.remove(RESERVE_PROJECTILES_TAG));
}
}
@@ -59,11 +59,12 @@ public final class ThoraxisBiomeSource extends BiomeSource {
private final int dreamDunesMaxQuartY;
private final int umbralHillsMaxQuartY;
private final int lucidPoolsMinQuartY;
private final Holder<Biome> nightmareWastesBiome;
private final Holder<Biome> dreamDunesBiome;
private final Holder<Biome> umbralHillsBiome;
private final Holder<Biome> lucidPoolsBiome;
private final Holder<Biome> cloudSeaBiome;
private volatile boolean biomesResolved;
private Holder<Biome> nightmareWastesBiome;
private Holder<Biome> dreamDunesBiome;
private Holder<Biome> umbralHillsBiome;
private Holder<Biome> lucidPoolsBiome;
private Holder<Biome> cloudSeaBiome;
private static final ThreadLocal<Long2DoubleOpenHashMap> CLOUD_SEA_CACHE =
ThreadLocal.withInitial(() -> new Long2DoubleOpenHashMap(512));
@@ -81,11 +82,23 @@ public final class ThoraxisBiomeSource extends BiomeSource {
this.dreamDunesMaxQuartY = QuartPos.fromBlock(dreamDunesMaxY);
this.umbralHillsMaxQuartY = QuartPos.fromBlock(umbralHillsMaxY);
this.lucidPoolsMinQuartY = QuartPos.fromBlock(lucidPoolsMinY);
this.nightmareWastesBiome = this.findBiome(NIGHTMARE_WASTES);
this.dreamDunesBiome = this.findBiome(DREAM_DUNES);
this.umbralHillsBiome = this.findBiome(UMBRAL_HILLS);
this.lucidPoolsBiome = this.findBiome(LUCID_POOLS);
this.cloudSeaBiome = this.findBiome(CLOUD_SEA);
}
private void resolveBiomesIfNeeded() {
if (this.biomesResolved) {
return;
}
synchronized (this) {
if (this.biomesResolved) {
return;
}
this.nightmareWastesBiome = this.findBiome(NIGHTMARE_WASTES);
this.dreamDunesBiome = this.findBiome(DREAM_DUNES);
this.umbralHillsBiome = this.findBiome(UMBRAL_HILLS);
this.lucidPoolsBiome = this.findBiome(LUCID_POOLS);
this.cloudSeaBiome = this.findBiome(CLOUD_SEA);
this.biomesResolved = true;
}
}
private Climate.ParameterList<Holder<Biome>> parameters() {
@@ -116,6 +129,7 @@ public final class ThoraxisBiomeSource extends BiomeSource {
@Override
public Holder<Biome> getNoiseBiome(int x, int y, int z, Climate.Sampler sampler) {
this.resolveBiomesIfNeeded();
if (this.cloudSeaBiome != null && cachedIsCloudSeaZone(x, z)) {
return this.cloudSeaBiome;
}
@@ -0,0 +1,16 @@
package com.craisinlord.antarchy.mixins;
import net.minecraft.server.level.WorldGenRegion;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(WorldGenRegion.class)
public abstract class FarChunkSetBlockWarningMixin {
@Redirect(
method = "ensureCanWrite",
at = @At(value = "INVOKE", target = "Lnet/minecraft/Util;logAndPauseIfInIde(Ljava/lang/String;)V")
)
private void antarchy$suppressFarChunkWarning(String message) {
}
}
@@ -0,0 +1,26 @@
package com.craisinlord.antarchy.mixins;
import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.ai.attributes.AttributeInstance;
import net.minecraft.world.entity.ai.attributes.Attributes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(LivingEntity.class)
public abstract class MilkBucketSizeResetMixin {
@Inject(method = "removeAllEffects", at = @At("TAIL"))
private void antarchy$resetSizeRayScale(CallbackInfoReturnable<Boolean> cir) {
LivingEntity self = (LivingEntity) (Object) this;
if (self.level().isClientSide) {
return;
}
AttributeInstance scaleAttribute = self.getAttribute(Attributes.SCALE);
if (scaleAttribute != null) {
SizeRayProjectileEntity.writeModifier(scaleAttribute, 0.0D);
}
}
}
@@ -12,6 +12,7 @@
"DreamFireBlockMixin",
"DreamSandFallingSpeedMixin",
"DreamSandLowGravityMixin",
"FarChunkSetBlockWarningMixin",
"FireVisualBaseFireBlockMixin",
"FireVisualEntityMixin",
"FlintAndSteelPortalIgnitionMixin",
@@ -19,6 +20,7 @@
"FrogVariantBootstrapMixin",
"GlowSquidLumenSpawnMixin",
"GlowVinesUnderLeavesMixin",
"MilkBucketSizeResetMixin",
"GoopedStepSoundMixin",
"ExperimentalSettingsLevelSummaryMixin",
"NightmareSwordDamageMixin",
@@ -0,0 +1,20 @@
{
"variants": {
"level=0": { "model": "minecraft:block/water" },
"level=1": { "model": "minecraft:block/water" },
"level=2": { "model": "minecraft:block/water" },
"level=3": { "model": "minecraft:block/water" },
"level=4": { "model": "minecraft:block/water" },
"level=5": { "model": "minecraft:block/water" },
"level=6": { "model": "minecraft:block/water" },
"level=7": { "model": "minecraft:block/water" },
"level=8": { "model": "minecraft:block/water" },
"level=9": { "model": "minecraft:block/water" },
"level=10": { "model": "minecraft:block/water" },
"level=11": { "model": "minecraft:block/water" },
"level=12": { "model": "minecraft:block/water" },
"level=13": { "model": "minecraft:block/water" },
"level=14": { "model": "minecraft:block/water" },
"level=15": { "model": "minecraft:block/water" }
}
}
@@ -406,6 +406,7 @@
"item.antarchy.growth_ray": "Wachstumsstrahler",
"tooltip.antarchy.shrink_ray": "Schrumpft Ziele dauerhaft. Gedrückt halten zum Aufladen.",
"tooltip.antarchy.growth_ray": "Vergrößert Ziele dauerhaft. Gedrückt halten zum Aufladen.",
"tooltip.antarchy.size_ray_milk_reset": "Milch trinken setzt diesen Effekt zurück.",
"tooltip.antarchy.reverie_bottle.capture": "Rechtsklicke mit einer Glasflasche auf eine Reverie, um sie einzufangen.",
"tooltip.antarchy.reverie_bottle.release": "Rechtsklick, um die Reverie freizulassen.",
"item.antarchy.gravity_gun": "Gravitationskanone",
@@ -408,6 +408,7 @@
"item.antarchy.growth_ray": "Growth Ray",
"tooltip.antarchy.shrink_ray": "Permanently shrinks targets. Hold down to charge.",
"tooltip.antarchy.growth_ray": "Permanently Grows Targets. Hold down to charge.",
"tooltip.antarchy.size_ray_milk_reset": "Drinking milk resets this effect.",
"tooltip.antarchy.reverie_bottle.capture": "Right click a Reverie with a glass bottle to store it.",
"tooltip.antarchy.reverie_bottle.release": "Right click to release the Reverie.",
"item.antarchy.gravity_gun": "Gravity Gun",
@@ -567,6 +568,8 @@
"advancements.antarchy.visit_elythia.description": "Use a brown ant to reach Elythia.",
"advancements.antarchy.visit_thoraxis.title": "Ant-ger Management",
"advancements.antarchy.visit_thoraxis.description": "Use a red ant to reach Thoraxis.",
"advancements.antarchy.visit_cavaryn.title": "Antfestation Problem",
"advancements.antarchy.visit_cavaryn.description": "Enter the infested dimension of Cavaryn.",
"advancements.antarchy.fallen_kingdom_castle.title": "I Used to Rule the World...",
"advancements.antarchy.fallen_kingdom_castle.description": "Discover the Fallen Kingdom Castle.",
"advancements.antarchy.fallen_king_crown.title": "Chunks would load when I gave the word...",
@@ -935,6 +938,7 @@
"subtitles.antarchy.lurking_terror_bite": "Lurking Terror bites",
"subtitles.antarchy.lurking_terror_fly_loop": "Lurking Terror flies",
"subtitles.antarchy.stink_bug_fart": "Stink Bug farts",
"subtitles.antarchy.cavaryn_heartbeat": "Cavaryn pulses",
"subtitles.antarchy.stink_bug_idle": "Stink Bug idles",
"subtitles.antarchy.rolly_polly_idle": "Rolly Polly idles",
"subtitles.antarchy.rolly_polly_wheel_mode": "Rolly Polly curls up",
@@ -406,6 +406,7 @@
"item.antarchy.growth_ray": "Rayo de crecimiento",
"tooltip.antarchy.shrink_ray": "Encoge permanentemente a los objetivos. Mantén pulsado para cargar.",
"tooltip.antarchy.growth_ray": "Aumenta permanentemente a los objetivos. Mantén pulsado para cargar.",
"tooltip.antarchy.size_ray_milk_reset": "Beber leche restablece este efecto.",
"tooltip.antarchy.reverie_bottle.capture": "Haz clic derecho en una Reverie con una botella de cristal para guardarla.",
"tooltip.antarchy.reverie_bottle.release": "Clic derecho para liberar a la Reverie.",
"item.antarchy.gravity_gun": "Pistola gravitatoria",
@@ -406,6 +406,7 @@
"item.antarchy.growth_ray": "Rayon de croissance",
"tooltip.antarchy.shrink_ray": "Rétrécit définitivement les cibles. Maintenez pour charger.",
"tooltip.antarchy.growth_ray": "Agrandit définitivement les cibles. Maintenez pour charger.",
"tooltip.antarchy.size_ray_milk_reset": "Boire du lait réinitialise cet effet.",
"tooltip.antarchy.reverie_bottle.capture": "Faites un clic droit sur une Reverie avec une fiole en verre pour la capturer.",
"tooltip.antarchy.reverie_bottle.release": "Clic droit pour libérer la Reverie.",
"item.antarchy.gravity_gun": "Canon à gravité",
@@ -406,6 +406,7 @@
"item.antarchy.growth_ray": "Raggio di crescita",
"tooltip.antarchy.shrink_ray": "Rimpicciolisce permanentemente i bersagli. Tieni premuto per caricare.",
"tooltip.antarchy.growth_ray": "Ingrandisce permanentemente i bersagli. Tieni premuto per caricare.",
"tooltip.antarchy.size_ray_milk_reset": "Bere il latte annulla questo effetto.",
"tooltip.antarchy.reverie_bottle.capture": "Fai clic destro su una Reverie con una bottiglia di vetro per catturarla.",
"tooltip.antarchy.reverie_bottle.release": "Fai clic destro per liberare la Reverie.",
"item.antarchy.gravity_gun": "Cannone gravitazionale",
@@ -406,6 +406,7 @@
"item.antarchy.growth_ray": "成長光線銃",
"tooltip.antarchy.shrink_ray": "対象を永久に縮小します。長押しでチャージします。",
"tooltip.antarchy.growth_ray": "対象を永久に巨大化します。長押しでチャージします。",
"tooltip.antarchy.size_ray_milk_reset": "牛乳を飲むとこの効果はリセットされます。",
"tooltip.antarchy.reverie_bottle.capture": "ガラス瓶を持ってレヴェリーを右クリックすると収納できます。",
"tooltip.antarchy.reverie_bottle.release": "右クリックでレヴェリーを解放します。",
"item.antarchy.gravity_gun": "重力銃",
@@ -406,6 +406,7 @@
"item.antarchy.growth_ray": "성장 광선총",
"tooltip.antarchy.shrink_ray": "대상을 영구적으로 축소합니다. 길게 눌러 충전합니다.",
"tooltip.antarchy.growth_ray": "대상을 영구적으로 성장시킵니다. 길게 눌러 충전합니다.",
"tooltip.antarchy.size_ray_milk_reset": "우유를 마시면 이 효과가 초기화됩니다.",
"tooltip.antarchy.reverie_bottle.capture": "유리병으로 레버리를 우클릭하여 담습니다.",
"tooltip.antarchy.reverie_bottle.release": "우클릭하여 레버리를 풀어줍니다.",
"item.antarchy.gravity_gun": "중력총",
@@ -406,6 +406,7 @@
"item.antarchy.growth_ray": "Raio de Crescimento",
"tooltip.antarchy.shrink_ray": "Encolhe alvos permanentemente. Segure para carregar.",
"tooltip.antarchy.growth_ray": "Aumenta alvos permanentemente. Segure para carregar.",
"tooltip.antarchy.size_ray_milk_reset": "Beber leite redefine este efeito.",
"tooltip.antarchy.reverie_bottle.capture": "Clique com o botão direito em uma Reverie com um frasco de vidro para guardá-la.",
"tooltip.antarchy.reverie_bottle.release": "Clique com o botão direito para soltar a Reverie.",
"item.antarchy.gravity_gun": "Arma Gravitacional",
@@ -382,6 +382,7 @@
"item.antarchy.growth_ray": "Увеличитель",
"tooltip.antarchy.shrink_ray": "Навсегда уменьшает цель. Зажмите, чтобы зарядить.",
"tooltip.antarchy.growth_ray": "Навсегда увеличивает цель. Зажмите, чтобы зарядить.",
"tooltip.antarchy.size_ray_milk_reset": "Питьё молока сбрасывает этот эффект.",
"tooltip.antarchy.reverie_bottle.capture": "Нажмите ПКМ стеклянной бутылочкой по грёзе, чтобы поймать её.",
"tooltip.antarchy.reverie_bottle.release": "Нажмите ПКМ, чтобы выпустить грёзу.",
"item.antarchy.gravity_gun": "Гравитационная пушка",
@@ -406,6 +406,7 @@
"item.antarchy.growth_ray": "生长射线枪",
"tooltip.antarchy.shrink_ray": "永久缩小目标。按住以蓄力。",
"tooltip.antarchy.growth_ray": "永久放大目标。按住以蓄力。",
"tooltip.antarchy.size_ray_milk_reset": "喝牛奶可重置此效果。",
"tooltip.antarchy.reverie_bottle.capture": "手持玻璃瓶右键雷弗里即可将其收纳。",
"tooltip.antarchy.reverie_bottle.release": "右键释放雷弗里。",
"item.antarchy.gravity_gun": "重力枪",
@@ -406,6 +406,7 @@
"item.antarchy.growth_ray": "生長射線槍",
"tooltip.antarchy.shrink_ray": "永久縮小目標。按住以蓄力。",
"tooltip.antarchy.growth_ray": "永久放大目標。按住以蓄力。",
"tooltip.antarchy.size_ray_milk_reset": "喝牛奶可重置此效果。",
"tooltip.antarchy.reverie_bottle.capture": "手持玻璃瓶右鍵雷弗裡即可將其收納。",
"tooltip.antarchy.reverie_bottle.release": "右鍵釋放雷弗裡。",
"item.antarchy.gravity_gun": "重力槍",
@@ -4,7 +4,7 @@
"texture_size": [64, 64],
"textures": {
"1": "antarchy:block/jerry_egg",
"particle": "antarchy:block/biomite"
"particle": "antarchy:block/jerry_egg_break_particle"
},
"elements": [
{
@@ -56,4 +56,4 @@
}
}
]
}
}
@@ -1,5 +1,5 @@
{
"textures": {
"particle": "antarchy:models/ouranwood/ouranwood_hanging_sign"
"particle": "antarchy:block/ouranwood/ouranwood_planks"
}
}
@@ -1,5 +1,5 @@
{
"textures": {
"particle": "antarchy:models/ouranwood/ouranwood_sign"
"particle": "antarchy:block/ouranwood/ouranwood_planks"
}
}
@@ -1,5 +1,5 @@
{
"textures": {
"particle": "antarchy:models/ouranwood/ouranwood_hanging_sign"
"particle": "antarchy:block/ouranwood/ouranwood_planks"
}
}
@@ -1,5 +1,5 @@
{
"textures": {
"particle": "antarchy:models/ouranwood/ouranwood_sign"
"particle": "antarchy:block/ouranwood/ouranwood_planks"
}
}
@@ -1826,6 +1826,14 @@
}
]
},
"cavaryn_heartbeat": {
"subtitle": "subtitles.antarchy.cavaryn_heartbeat",
"sounds": [
{
"name": "antarchy:ambient/cavaryn/heartbeat"
}
]
},
"triffid_attack": {
"subtitle": "subtitles.antarchy.triffid_attack",
"sounds": [
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

@@ -0,0 +1,32 @@
{
"parent": "minecraft:adventure/root",
"criteria": {
"entered_cavaryn": {
"conditions": {
"to": "antarchy:cavaryn"
},
"trigger": "minecraft:changed_dimension"
}
},
"display": {
"announce_to_chat": true,
"description": {
"translate": "advancements.antarchy.visit_cavaryn.description"
},
"frame": "task",
"icon": {
"count": 1,
"id": "antarchy:myrmite"
},
"show_toast": true,
"title": {
"translate": "advancements.antarchy.visit_cavaryn.title"
}
},
"requirements": [
[
"entered_cavaryn"
]
],
"sends_telemetry_event": true
}
@@ -0,0 +1,17 @@
{
"entries": [
{
"entity_tag": "antarchy:horde_jerry",
"jerry_stage": "random_young",
"base_count": 3,
"per_player_count": 1
},
{
"entity_tag": "antarchy:horde_jerry",
"jerry_stage": "alpha",
"base_count": 0,
"per_player_count": 1,
"min_count": 1
}
]
}
@@ -0,0 +1,17 @@
{
"max_active": 8,
"entries": [
{
"entity_tag": "antarchy:horde_jerry",
"jerry_stage": "infant",
"base_count": 1,
"high_attention_base_count": 2
},
{
"entity_tag": "antarchy:horde_jerry",
"jerry_stage": "mature",
"base_count": 0,
"high_attention_base_count": 1
}
]
}
@@ -0,0 +1,20 @@
{
"entries": [
{
"entity_tag": "antarchy:horde_bosses",
"base_count": 1,
"per_players": 3,
"per_players_count": 1,
"max_count": 3,
"warning": true,
"track_completion": true,
"heavy_arrival_effect": true
},
{
"entity_tag": "antarchy:horde_jerry",
"jerry_stage": "random",
"base_count": 8,
"per_player_count": 2
}
]
}
@@ -0,0 +1,10 @@
{
"entries": [
{
"entity_tag": "antarchy:horde_jerry",
"jerry_stage": "random_young",
"base_count": 12,
"per_player_count": 3
}
]
}
@@ -0,0 +1,16 @@
{
"entries": [
{
"entity_tag": "antarchy:horde_jerry",
"jerry_stage": "random_young",
"base_count": 12,
"per_player_count": 3
},
{
"entity_tag": "antarchy:horde_jerry",
"jerry_stage": "alpha",
"base_count": 3,
"per_player_count": 1
}
]
}
@@ -0,0 +1,22 @@
{
"entries": [
{
"entity_tag": "antarchy:horde_jerry",
"jerry_stage": "random_young",
"base_count": 12,
"per_player_count": 3
},
{
"entity_tag": "antarchy:horde_jerry",
"jerry_stage": "alpha",
"base_count": 4,
"per_player_count": 1
},
{
"entity_tag": "antarchy:horde_jerry",
"jerry_stage": "gamma",
"base_count": 2,
"per_player_count": 1
}
]
}
@@ -0,0 +1,5 @@
{
"values": [
"antarchy:jerry"
]
}
@@ -1,6 +1,6 @@
{
"replace": false,
"values": [
"minecraft:glow_berries"
"antarchy:broodfruit"
]
}
@@ -47,11 +47,13 @@
"antarchy:cavaryn_bile_cysts",
"antarchy:termite_nest"
],
[
"antarchy:jerry_egg_patch"
],
[
"antarchy:biowart_patch",
"antarchy:cavaryn_creepvine",
"antarchy:cavaryn_hanging_creeproots",
"antarchy:jerry_egg_patch"
"antarchy:cavaryn_hanging_creeproots"
],
[]
],
@@ -68,9 +70,9 @@
"creature": [
{
"type": "antarchy:stink_bug",
"weight": 12,
"minCount": 1,
"maxCount": 3
"weight": 35,
"minCount": 2,
"maxCount": 4
}
],
"ambient": [],
@@ -75,9 +75,9 @@
"creature": [
{
"type": "antarchy:stink_bug",
"weight": 10,
"minCount": 1,
"maxCount": 3
"weight": 35,
"minCount": 2,
"maxCount": 4
}],
"ambient": [
],
@@ -65,9 +65,9 @@
"creature": [
{
"type": "antarchy:stink_bug",
"weight": 10,
"minCount": 1,
"maxCount": 3
"weight": 35,
"minCount": 2,
"maxCount": 4
}],
"ambient": [
],
@@ -66,15 +66,15 @@
],
[]
],
"creature_spawn_probability": 0.4,
"creature_spawn_probability": 0.15,
"spawners": {
"monster": [],
"creature": [
{
"type": "antarchy:glimmer",
"weight": 36,
"minCount": 3,
"maxCount": 6
"minCount": 1,
"maxCount": 1
}
],
"ambient": [
@@ -59,7 +59,14 @@
"creature_spawn_probability": 0.08,
"spawners": {
"monster": [],
"creature": [],
"creature": [
{
"type": "antarchy:stink_bug",
"weight": 35,
"minCount": 2,
"maxCount": 4
}
],
"ambient": [],
"axolotls": [],
"underground_water_creature": [],
@@ -5,8 +5,8 @@
"type": "minecraft:count",
"count": {
"type": "minecraft:uniform",
"min_inclusive": 1,
"max_inclusive": 3
"min_inclusive": 2,
"max_inclusive": 5
}
},
{
@@ -249,6 +249,7 @@ public final class AntarchyFabricContent {
AntarchyFabricSounds.STINKY_FLY_SOUND,
AntarchyFabricSounds.STINK_BUG_FART,
AntarchyFabricSounds.STINK_BUG_IDLE,
AntarchyFabricSounds.CAVARYN_HEARTBEAT,
AntarchyFabricSounds.ROLLY_POLLY_IDLE,
AntarchyFabricSounds.CREEPING_HORROR_GROWL,
AntarchyFabricSounds.CREEPING_HORROR_HURT,
@@ -474,7 +474,6 @@ public final class AntarchyFabricClientBootstrap {
ParalyzedHudRenderer.render(guiGraphics);
BrutalflyElytraHudRenderer.render(guiGraphics);
JumpyBootsHudRenderer.render(guiGraphics);
BloodglassHudRenderer.render(guiGraphics);
TriffidGooHudRenderer.render(guiGraphics);
DorrieJumpHudRenderer.render(guiGraphics);
});
@@ -20,7 +20,7 @@ public final class BrutalflyElytraHudRenderer {
public static void render(GuiGraphics guiGraphics) {
Minecraft minecraft = Minecraft.getInstance();
Player player = minecraft.player;
if (player == null || minecraft.screen != null || player.isDeadOrDying()) {
if (player == null || minecraft.screen != null || player.isDeadOrDying() || minecraft.options.hideGui) {
return;
}
if (!BrutalflyElytraItem.isWearingBrutalflyElytra(player) || !player.isFallFlying()) {
@@ -1,14 +1,38 @@
package com.craisinlord.antarchy.fabric.mixin;
import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi;
import com.craisinlord.antarchy.content.item.BloodCrystalArmorItem;
import com.craisinlord.antarchy.content.item.JumpyBootsItem;
import com.craisinlord.antarchy.fabric.util.JumpyBootsFabricHelper;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(LivingEntity.class)
public abstract class JumpyBootsFallDamageMixin {
@Inject(method = "causeFallDamage", at = @At("HEAD"), cancellable = true)
private void antarchy$cancelBloodCrystalBootsInvertedFallDamage(float fallDistance, float multiplier, DamageSource source, CallbackInfoReturnable<Boolean> cir) {
LivingEntity self = (LivingEntity) (Object) this;
if (!(self instanceof Player player)) {
return;
}
if (!AntarchyGravityApi.isGravityInverted(player)) {
return;
}
if (!(player.getItemBySlot(EquipmentSlot.FEET).getItem() instanceof BloodCrystalArmorItem)) {
return;
}
player.fallDistance = 0.0F;
cir.setReturnValue(false);
}
@ModifyVariable(method = "causeFallDamage", at = @At("HEAD"), ordinal = 0, argsOnly = true)
private float antarchy$reduceJumpyBootsFallDamage(float fallDistance) {
LivingEntity self = (LivingEntity) (Object) this;
@@ -0,0 +1,18 @@
package com.craisinlord.antarchy.fabric.mixin.client;
import com.craisinlord.antarchy.fabric.client.BloodglassHudRenderer;
import net.minecraft.client.DeltaTracker;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiGraphics;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(Gui.class)
public abstract class BloodglassChatOrderMixin {
@Inject(method = "renderChat", at = @At("HEAD"))
private void antarchy$renderBloodglassBeforeChat(GuiGraphics guiGraphics, DeltaTracker deltaTracker, CallbackInfo ci) {
BloodglassHudRenderer.render(guiGraphics);
}
}
@@ -0,0 +1,21 @@
package com.craisinlord.antarchy.fabric.mixin.client;
import com.craisinlord.antarchy.content.item.BrutalflyElytraItem;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.player.LocalPlayer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(Gui.class)
public abstract class BrutalflyElytraExperienceBarMixin {
@Inject(method = "isExperienceBarVisible", at = @At("RETURN"), cancellable = true)
private void antarchy$hideExperienceBarForBrutalfly(CallbackInfoReturnable<Boolean> cir) {
LocalPlayer player = Minecraft.getInstance().player;
if (player != null && BrutalflyElytraItem.isWearingBrutalflyElytra(player) && player.isFallFlying()) {
cir.setReturnValue(false);
}
}
}
@@ -246,6 +246,7 @@ 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.material.MapColor;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.biome.BiomeSource;
import net.minecraft.world.level.levelgen.DensityFunction;
@@ -677,7 +678,7 @@ public final class AntarchyFabricBlocks {
public static final DeferredBlock<Block> MYRMITE_COAL_ORE = BLOCKS.register("myrmite_coal_ore",
() -> createOre(Blocks.COAL_ORE, 0, 2));
() -> createOre(Blocks.COAL_ORE, 0, 2, MapColor.COLOR_GRAY));
public static final DeferredBlock<Block> BROODSTONE = BLOCKS.register("broodstone",
@@ -733,11 +734,11 @@ public final class AntarchyFabricBlocks {
public static final DeferredBlock<Block> BROODSTONE_URANIUM_ORE = BLOCKS.register("broodstone_uranium_ore",
() -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8));
() -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> BROODSTONE_TITANIUM_ORE = BLOCKS.register("broodstone_titanium_ore",
() -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8));
() -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<RotatedPillarBlock> CHITEN_BLOCK = BLOCKS.register("chiten_block",
@@ -911,99 +912,99 @@ public final class AntarchyFabricBlocks {
public static final DeferredBlock<Block> URANIUM_ORE = BLOCKS.register("uranium_ore",
() -> createOre(Blocks.EMERALD_ORE, 4, 8));
() -> createOre(Blocks.EMERALD_ORE, 4, 8, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> DEEPSLATE_URANIUM_ORE = BLOCKS.register("deepslate_uranium_ore",
() -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8));
() -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> TITANIUM_ORE = BLOCKS.register("titanium_ore",
() -> createOre(Blocks.DIAMOND_ORE, 4, 8));
() -> createOre(Blocks.DIAMOND_ORE, 4, 8, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<Block> DEEPSLATE_TITANIUM_ORE = BLOCKS.register("deepslate_titanium_ore",
() -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8));
() -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<Block> URANIUM_BLOCK = BLOCKS.register("uranium_block",
() -> createStorageBlock(Blocks.EMERALD_BLOCK));
() -> createStorageBlock(Blocks.EMERALD_BLOCK, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> TITANIUM_BLOCK = BLOCKS.register("titanium_block",
() -> createStorageBlock(Blocks.DIAMOND_BLOCK));
() -> createStorageBlock(Blocks.DIAMOND_BLOCK, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<Block> RAW_URANIUM_BLOCK = BLOCKS.register("raw_uranium_block",
() -> createRawStorageBlock(Blocks.EMERALD_ORE));
() -> createRawStorageBlock(Blocks.EMERALD_ORE, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> RAW_TITANIUM_BLOCK = BLOCKS.register("raw_titanium_block",
() -> createRawStorageBlock(Blocks.DIAMOND_ORE));
() -> createRawStorageBlock(Blocks.DIAMOND_ORE, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<Block> CUT_URANIUM = BLOCKS.register("cut_uranium",
() -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER));
() -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> CUT_TITANIUM = BLOCKS.register("cut_titanium",
() -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER));
() -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<net.minecraft.world.level.block.SlabBlock> CUT_URANIUM_SLAB = BLOCKS.register("cut_uranium_slab",
() -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB)));
() -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB).mapColor(MapColor.COLOR_YELLOW)));
public static final DeferredBlock<net.minecraft.world.level.block.SlabBlock> CUT_TITANIUM_SLAB = BLOCKS.register("cut_titanium_slab",
() -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB)));
() -> new net.minecraft.world.level.block.SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB).mapColor(MapColor.COLOR_LIGHT_BLUE)));
public static final DeferredBlock<net.minecraft.world.level.block.StairBlock> 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)));
() -> new net.minecraft.world.level.block.StairBlock(CUT_URANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS).mapColor(MapColor.COLOR_YELLOW)));
public static final DeferredBlock<net.minecraft.world.level.block.StairBlock> 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)));
() -> new net.minecraft.world.level.block.StairBlock(CUT_TITANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS).mapColor(MapColor.COLOR_LIGHT_BLUE)));
public static final DeferredBlock<Block> CHISELED_URANIUM = BLOCKS.register("chiseled_uranium",
() -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER));
() -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> CHISELED_TITANIUM = BLOCKS.register("chiseled_titanium",
() -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER));
() -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<SignalSavingBulbBlock> URANIUM_BULB = BLOCKS.register("uranium_bulb",
() -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB)));
() -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB).mapColor(MapColor.COLOR_YELLOW)));
public static final DeferredBlock<SignalSavingBulbBlock> TITANIUM_BULB = BLOCKS.register("titanium_bulb",
() -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB)));
() -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB).mapColor(MapColor.COLOR_LIGHT_BLUE)));
public static final DeferredBlock<net.minecraft.world.level.block.DoorBlock> 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)));
() -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR).mapColor(MapColor.COLOR_YELLOW)));
public static final DeferredBlock<net.minecraft.world.level.block.DoorBlock> 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)));
() -> new net.minecraft.world.level.block.DoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR).mapColor(MapColor.COLOR_LIGHT_BLUE)));
public static final DeferredBlock<net.minecraft.world.level.block.TrapDoorBlock> 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)));
() -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR).mapColor(MapColor.COLOR_YELLOW)));
public static final DeferredBlock<net.minecraft.world.level.block.TrapDoorBlock> 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)));
() -> new net.minecraft.world.level.block.TrapDoorBlock(net.minecraft.world.level.block.state.properties.BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR).mapColor(MapColor.COLOR_LIGHT_BLUE)));
public static final DeferredBlock<net.minecraft.world.level.block.IronBarsBlock> URANIUM_BARS = BLOCKS.register("uranium_bars",
() -> new net.minecraft.world.level.block.IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS)));
() -> new net.minecraft.world.level.block.IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS).mapColor(MapColor.COLOR_YELLOW)));
public static final DeferredBlock<net.minecraft.world.level.block.IronBarsBlock> TITANIUM_BARS = BLOCKS.register("titanium_bars",
() -> new net.minecraft.world.level.block.IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS)));
() -> new net.minecraft.world.level.block.IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS).mapColor(MapColor.COLOR_LIGHT_BLUE)));
public static final DeferredBlock<net.minecraft.world.level.block.RotatedPillarBlock> ANTIMETAL = BLOCKS.register("antimetal",
@@ -1295,26 +1296,26 @@ public final class AntarchyFabricBlocks {
private static Block createOre(Block copyFrom) {
return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops());
private static Block createOre(Block copyFrom, MapColor mapColor) {
return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).mapColor(mapColor).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 createOre(Block copyFrom, int minExperience, int maxExperience, MapColor mapColor) {
return new DropExperienceBlock(UniformInt.of(minExperience, maxExperience), BlockBehaviour.Properties.ofFullCopy(copyFrom).mapColor(mapColor).requiresCorrectToolForDrops());
}
private static Block createStorageBlock(Block copyFrom) {
return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops());
private static Block createStorageBlock(Block copyFrom, MapColor mapColor) {
return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).mapColor(mapColor).requiresCorrectToolForDrops());
}
private static Block createHorizontalFacingStorageBlock(Block copyFrom) {
return new SimpleHorizontalFacingBlock(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops());
private static Block createHorizontalFacingStorageBlock(Block copyFrom, MapColor mapColor) {
return new SimpleHorizontalFacingBlock(BlockBehaviour.Properties.ofFullCopy(copyFrom).mapColor(mapColor).requiresCorrectToolForDrops());
}
@@ -1355,8 +1356,8 @@ public final class AntarchyFabricBlocks {
private static Block createRawStorageBlock(Block copyFrom) {
return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops());
private static Block createRawStorageBlock(Block copyFrom, MapColor mapColor) {
return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).mapColor(mapColor).requiresCorrectToolForDrops());
}
@@ -360,7 +360,7 @@ public final class AntarchyFabricEntities {
public static final DeferredHolder<EntityType<?>, EntityType<StinkBugEntity>> STINK_BUG = ENTITY_TYPES.register("stink_bug",
() -> EntityType.Builder.of(StinkBugEntity::new, MobCategory.AMBIENT)
() -> EntityType.Builder.of(StinkBugEntity::new, MobCategory.CREATURE)
.sized(0.35F, 0.2F)
.clientTrackingRange(8)
.build("stink_bug"));
@@ -466,78 +466,78 @@ public final class AntarchyFabricItems {
public static final DeferredItem<net.minecraft.world.item.BlockItem> TERMITE_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TERMITE_NEST);
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_ORE, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEEPSLATE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEEPSLATE_URANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEEPSLATE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEEPSLATE_URANIUM_ORE, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_ORE, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEEPSLATE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEEPSLATE_TITANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEEPSLATE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.DEEPSLATE_TITANIUM_ORE, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_BLOCK, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_BLOCK, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> RAW_URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.RAW_URANIUM_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> RAW_URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.RAW_URANIUM_BLOCK, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> RAW_TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.RAW_TITANIUM_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> RAW_TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.RAW_TITANIUM_BLOCK, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_URANIUM);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_URANIUM, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_TITANIUM);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_TITANIUM, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_URANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_URANIUM_SLAB);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_URANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_URANIUM_SLAB, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_TITANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_TITANIUM_SLAB);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_TITANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_TITANIUM_SLAB, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_URANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_URANIUM_STAIRS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_URANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_URANIUM_STAIRS, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_TITANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_TITANIUM_STAIRS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_TITANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CUT_TITANIUM_STAIRS, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CHISELED_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CHISELED_URANIUM);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CHISELED_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CHISELED_URANIUM, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CHISELED_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CHISELED_TITANIUM);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CHISELED_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.CHISELED_TITANIUM, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_BULB_ITEM = ITEMS.register("uranium_bulb",
() -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(AntarchyFabricBlocks.URANIUM_BULB.get(), new Item.Properties()));
() -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(AntarchyFabricBlocks.URANIUM_BULB.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_BULB_ITEM = ITEMS.register("titanium_bulb",
() -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(AntarchyFabricBlocks.TITANIUM_BULB.get(), new Item.Properties()));
() -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(AntarchyFabricBlocks.TITANIUM_BULB.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_DOOR);
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_DOOR, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_DOOR);
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_DOOR, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_TRAPDOOR);
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_TRAPDOOR, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_TRAPDOOR);
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_TRAPDOOR, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_BARS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.URANIUM_BARS, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_BARS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.TITANIUM_BARS, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> ANTIMETAL_ITEM = ITEMS.register("antimetal",
@@ -652,8 +652,8 @@ public final class AntarchyFabricItems {
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_BRICK_SLAB);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_BRICK_WALL);
public static final DeferredItem<net.minecraft.world.item.BlockItem> MYRMITE_COAL_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.MYRMITE_COAL_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_URANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_TITANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_URANIUM_ORE, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.BROODSTONE_TITANIUM_ORE, new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<net.minecraft.world.item.BlockItem> POLISHED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyFabricBlocks.POLISHED_NYXITE);
@@ -887,7 +887,11 @@ public final class AntarchyFabricItems {
public static final DeferredItem<Item> CHITEN = ITEMS.registerSimpleItem("chiten", new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<Item> JERRY_NUCLEUS = ITEMS.registerSimpleItem("jerry_nucleus", new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<Item> JERRY_NUCLEUS = ITEMS.registerSimpleItem("jerry_nucleus", new Item.Properties().rarity(Rarity.UNCOMMON)
.food(new FoodProperties.Builder()
.nutrition(2)
.saturationModifier(0.1F)
.build()));
public static final DeferredItem<Item> CARAPACE = ITEMS.registerSimpleItem("carapace", new Item.Properties().rarity(Rarity.UNCOMMON));
@@ -950,8 +954,9 @@ public final class AntarchyFabricItems {
public static final DeferredItem<Item> RAW_BUG_MEAT = ITEMS.register("raw_bug_meat",
() -> new Item(new Item.Properties()
.food(new FoodProperties.Builder()
.nutrition(3)
.saturationModifier(0.3F)
.nutrition(4)
.saturationModifier(0.1F)
.effect(new MobEffectInstance(MobEffects.HUNGER, 600), 0.8F)
.build())));
public static final DeferredItem<Item> COOKED_BUG_MEAT = ITEMS.register("cooked_bug_meat",
() -> new Item(new Item.Properties()
@@ -634,6 +634,9 @@ public final class AntarchyFabricSounds {
public static final DeferredHolder<SoundEvent, SoundEvent> STINK_BUG_IDLE = registerSoundEvent("stink_bug_idle");
public static final DeferredHolder<SoundEvent, SoundEvent> CAVARYN_HEARTBEAT = registerSoundEvent("cavaryn_heartbeat");
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_IDLE = registerSoundEvent("rolly_polly_idle");
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_WHEEL_MODE = registerSoundEvent("rolly_polly_wheel_mode");
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_NORMAL_MODE = registerSoundEvent("rolly_polly_normal_mode");
@@ -43,6 +43,10 @@ public class DeferredRegister<T> {
public DeferredItem<BlockItem> registerSimpleBlockItem(DeferredBlock<? extends Block> block) {
return this.register(block.getId().getPath(), () -> new BlockItem(block.get(), new Item.Properties()));
}
public DeferredItem<BlockItem> registerSimpleBlockItem(DeferredBlock<? extends Block> block, Item.Properties properties) {
return this.register(block.getId().getPath(), () -> new BlockItem(block.get(), properties));
}
}
@FunctionalInterface
@@ -22,6 +22,8 @@
],
"client": [
"client.CameraShakeMixin",
"client.BrutalflyElytraExperienceBarMixin",
"client.BloodglassChatOrderMixin",
"client.DuctTapeInputMixin",
"client.AntiwaterFogMixin",
"client.GravityGunMouseScrollMixin",
@@ -152,6 +152,7 @@ public class AntarchyNeoforge {
AntarchyNeoforgeSounds.STINKY_FLY,
AntarchyNeoforgeSounds.STINK_BUG_FART,
AntarchyNeoforgeSounds.STINK_BUG_IDLE,
AntarchyNeoforgeSounds.CAVARYN_HEARTBEAT,
AntarchyNeoforgeSounds.ROLLY_POLLY_IDLE,
AntarchyNeoforgeSounds.CREEPING_HORROR_GROWL,
AntarchyNeoforgeSounds.CREEPING_HORROR_HURT,
@@ -513,7 +513,7 @@ public final class AntarchyToolsConfig {
b.push("potentNyxite");
POTENT_NYXITE_INVERTED_DURATION_SECONDS = b
.comment("How long the Inverted effect from Potent Nyxite eruptions lasts, in seconds.")
.defineInRange("invertedDurationSeconds", 10.0D, 0.0D, 3600.0D);
.defineInRange("invertedDurationSeconds", 60.0D, 0.0D, 3600.0D);
b.pop();
b.push("corneaEar");
@@ -58,6 +58,7 @@ import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent;
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent;
import net.neoforged.neoforge.client.event.EntityRenderersEvent;
import net.neoforged.neoforge.client.event.RegisterGuiLayersEvent;
import net.neoforged.neoforge.client.gui.VanillaGuiLayers;
import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions;
import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions;
import net.neoforged.neoforge.client.extensions.common.RegisterClientExtensionsEvent;
@@ -312,7 +313,8 @@ public final class AntarchyNeoForgeClient {
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "brutalfly_elytra"),
(guiGraphics, partialTick) -> BrutalflyElytraHudRenderer.render(guiGraphics)
);
event.registerAboveAll(
event.registerBelow(
VanillaGuiLayers.CHAT,
ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "bloodglass_hearts"),
(guiGraphics, partialTick) -> BloodglassHudRenderer.render(guiGraphics)
);
@@ -28,6 +28,7 @@ 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.block.state.properties.BlockSetType;
import net.minecraft.world.level.material.MapColor;
import net.minecraft.world.level.block.state.properties.WoodType;
import net.minecraft.world.level.material.FlowingFluid;
import net.minecraft.world.level.material.FluidState;
@@ -257,7 +258,7 @@ public final class AntarchyNeoforgeBlocks {
public static final DeferredBlock<BiowartTendrilsBlock> BIOWART_TENDRILS = BLOCKS.register("biowart_tendrils",
() -> new BiowartTendrilsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_CARPET).lightLevel(state -> 2).noCollission().noOcclusion()));
public static final DeferredBlock<Block> MYRMITE_COAL_ORE = BLOCKS.register("myrmite_coal_ore",
() -> createOre(Blocks.COAL_ORE, 0, 2));
() -> createOre(Blocks.COAL_ORE, 0, 2, MapColor.COLOR_GRAY));
public static final DeferredBlock<Block> BROODSTONE = BLOCKS.register("broodstone",
() -> new Block(broodstoneProperties()));
public static final DeferredBlock<Block> POLISHED_BROODSTONE = BLOCKS.register("polished_broodstone",
@@ -285,9 +286,9 @@ public final class AntarchyNeoforgeBlocks {
public static final DeferredBlock<WallBlock> BROODSTONE_BRICK_WALL = BLOCKS.register("broodstone_brick_wall",
() -> new WallBlock(broodstoneProperties()));
public static final DeferredBlock<Block> BROODSTONE_URANIUM_ORE = BLOCKS.register("broodstone_uranium_ore",
() -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8));
() -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> BROODSTONE_TITANIUM_ORE = BLOCKS.register("broodstone_titanium_ore",
() -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8));
() -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<RotatedPillarBlock> CHITEN_BLOCK = BLOCKS.register("chiten_block",
() -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BONE_BLOCK).requiresCorrectToolForDrops()));
public static final DeferredBlock<UmbralMossBlock> UMBRAL_MOSS_BLOCK = BLOCKS.register("umbral_moss_block",
@@ -382,53 +383,53 @@ public final class AntarchyNeoforgeBlocks {
public static final DeferredBlock<AntNestBlock> TERMITE_NEST = BLOCKS.register("termite_nest",
() -> new AntNestBlock(AntarchyNeoforgeEntites.TERMITE, AntarchyNeoforgeItems::antNestBlockEntityType, BlockBehaviour.Properties.ofFullCopy(Blocks.DIRT).noLootTable()));
public static final DeferredBlock<Block> URANIUM_ORE = BLOCKS.register("uranium_ore",
() -> createOre(Blocks.EMERALD_ORE, 4, 8));
() -> createOre(Blocks.EMERALD_ORE, 4, 8, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> DEEPSLATE_URANIUM_ORE = BLOCKS.register("deepslate_uranium_ore",
() -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8));
() -> createOre(Blocks.DEEPSLATE_EMERALD_ORE, 4, 8, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> TITANIUM_ORE = BLOCKS.register("titanium_ore",
() -> createOre(Blocks.DIAMOND_ORE, 4, 8));
() -> createOre(Blocks.DIAMOND_ORE, 4, 8, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<Block> DEEPSLATE_TITANIUM_ORE = BLOCKS.register("deepslate_titanium_ore",
() -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8));
() -> createOre(Blocks.DEEPSLATE_DIAMOND_ORE, 4, 8, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<Block> URANIUM_BLOCK = BLOCKS.register("uranium_block",
() -> createStorageBlock(Blocks.EMERALD_BLOCK));
() -> createStorageBlock(Blocks.EMERALD_BLOCK, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> TITANIUM_BLOCK = BLOCKS.register("titanium_block",
() -> createStorageBlock(Blocks.DIAMOND_BLOCK));
() -> createStorageBlock(Blocks.DIAMOND_BLOCK, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<Block> RAW_URANIUM_BLOCK = BLOCKS.register("raw_uranium_block",
() -> createRawStorageBlock(Blocks.EMERALD_ORE));
() -> createRawStorageBlock(Blocks.EMERALD_ORE, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> RAW_TITANIUM_BLOCK = BLOCKS.register("raw_titanium_block",
() -> createRawStorageBlock(Blocks.DIAMOND_ORE));
() -> createRawStorageBlock(Blocks.DIAMOND_ORE, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<Block> CUT_URANIUM = BLOCKS.register("cut_uranium",
() -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER));
() -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> CUT_TITANIUM = BLOCKS.register("cut_titanium",
() -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER));
() -> createHorizontalFacingStorageBlock(Blocks.CUT_COPPER, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<SlabBlock> CUT_URANIUM_SLAB = BLOCKS.register("cut_uranium_slab",
() -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB)));
() -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB).mapColor(MapColor.COLOR_YELLOW)));
public static final DeferredBlock<SlabBlock> CUT_TITANIUM_SLAB = BLOCKS.register("cut_titanium_slab",
() -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB)));
() -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_SLAB).mapColor(MapColor.COLOR_LIGHT_BLUE)));
public static final DeferredBlock<StairBlock> CUT_URANIUM_STAIRS = BLOCKS.register("cut_uranium_stairs",
() -> new StairBlock(CUT_URANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS)));
() -> new StairBlock(CUT_URANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS).mapColor(MapColor.COLOR_YELLOW)));
public static final DeferredBlock<StairBlock> CUT_TITANIUM_STAIRS = BLOCKS.register("cut_titanium_stairs",
() -> new StairBlock(CUT_TITANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS)));
() -> new StairBlock(CUT_TITANIUM.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_COPPER_STAIRS).mapColor(MapColor.COLOR_LIGHT_BLUE)));
public static final DeferredBlock<Block> CHISELED_URANIUM = BLOCKS.register("chiseled_uranium",
() -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER));
() -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER, MapColor.COLOR_YELLOW));
public static final DeferredBlock<Block> CHISELED_TITANIUM = BLOCKS.register("chiseled_titanium",
() -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER));
() -> createHorizontalFacingStorageBlock(Blocks.CHISELED_COPPER, MapColor.COLOR_LIGHT_BLUE));
public static final DeferredBlock<SignalSavingBulbBlock> URANIUM_BULB = BLOCKS.register("uranium_bulb",
() -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB)));
() -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB).mapColor(MapColor.COLOR_YELLOW)));
public static final DeferredBlock<SignalSavingBulbBlock> TITANIUM_BULB = BLOCKS.register("titanium_bulb",
() -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB)));
() -> new SignalSavingBulbBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.COPPER_BULB).mapColor(MapColor.COLOR_LIGHT_BLUE)));
public static final DeferredBlock<DoorBlock> URANIUM_DOOR = BLOCKS.register("uranium_door",
() -> new DoorBlock(BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR)));
() -> new DoorBlock(BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR).mapColor(MapColor.COLOR_YELLOW)));
public static final DeferredBlock<DoorBlock> TITANIUM_DOOR = BLOCKS.register("titanium_door",
() -> new DoorBlock(BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR)));
() -> new DoorBlock(BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_DOOR).mapColor(MapColor.COLOR_LIGHT_BLUE)));
public static final DeferredBlock<TrapDoorBlock> URANIUM_TRAPDOOR = BLOCKS.register("uranium_trapdoor",
() -> new TrapDoorBlock(BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR)));
() -> new TrapDoorBlock(BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR).mapColor(MapColor.COLOR_YELLOW)));
public static final DeferredBlock<TrapDoorBlock> TITANIUM_TRAPDOOR = BLOCKS.register("titanium_trapdoor",
() -> new TrapDoorBlock(BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR)));
() -> new TrapDoorBlock(BlockSetType.IRON, BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_TRAPDOOR).mapColor(MapColor.COLOR_LIGHT_BLUE)));
public static final DeferredBlock<IronBarsBlock> URANIUM_BARS = BLOCKS.register("uranium_bars",
() -> new IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS)));
() -> new IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS).mapColor(MapColor.COLOR_YELLOW)));
public static final DeferredBlock<IronBarsBlock> TITANIUM_BARS = BLOCKS.register("titanium_bars",
() -> new IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS)));
() -> new IronBarsBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BARS).mapColor(MapColor.COLOR_LIGHT_BLUE)));
public static final DeferredBlock<RotatedPillarBlock> ANTIMETAL = BLOCKS.register("antimetal",
() -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BASALT)));
public static final DeferredBlock<RotatedPillarBlock> POLISHED_ANTIMETAL = BLOCKS.register("polished_antimetal",
@@ -577,20 +578,20 @@ public final class AntarchyNeoforgeBlocks {
.isViewBlocking((state, level, pos) -> false);
}
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 createOre(Block copyFrom, int minExperience, int maxExperience, MapColor mapColor) {
return new DropExperienceBlock(UniformInt.of(minExperience, maxExperience), BlockBehaviour.Properties.ofFullCopy(copyFrom).mapColor(mapColor).requiresCorrectToolForDrops());
}
static Block createStorageBlock(Block copyFrom) {
return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops());
static Block createStorageBlock(Block copyFrom, MapColor mapColor) {
return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).mapColor(mapColor).requiresCorrectToolForDrops());
}
static Block createHorizontalFacingStorageBlock(Block copyFrom) {
return new SimpleHorizontalFacingBlock(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops());
static Block createHorizontalFacingStorageBlock(Block copyFrom, MapColor mapColor) {
return new SimpleHorizontalFacingBlock(BlockBehaviour.Properties.ofFullCopy(copyFrom).mapColor(mapColor).requiresCorrectToolForDrops());
}
static Block createRawStorageBlock(Block copyFrom) {
return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).requiresCorrectToolForDrops());
static Block createRawStorageBlock(Block copyFrom, MapColor mapColor) {
return new Block(BlockBehaviour.Properties.ofFullCopy(copyFrom).mapColor(mapColor).requiresCorrectToolForDrops());
}
private static Block smallBloodCrystalBudBlock() {
@@ -188,6 +188,8 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.accept(AntarchyNeoforgeItems.KING_SCALE.get());
event.accept(AntarchyNeoforgeItems.QUEEN_SCALE.get());
event.accept(AntarchyNeoforgeItems.CHITEN.get());
event.accept(AntarchyNeoforgeItems.JERRY_NUCLEUS.get());
event.accept(AntarchyNeoforgeItems.CARAPACE.get());
event.accept(AntarchyNeoforgeItems.STINK_BUG.get());
event.accept(AntarchyNeoforgeItems.BRUTALFLY_WING.get());
event.accept(AntarchyNeoforgeItems.PRIMORDIAL_SCUTE.get());
@@ -153,7 +153,7 @@ public final class AntarchyNeoforgeEntites {
.clientTrackingRange(8)
.build("bed_bug"));
public static final DeferredHolder<EntityType<?>, EntityType<StinkBugEntity>> STINK_BUG = ENTITY_TYPES.register("stink_bug",
() -> EntityType.Builder.of(StinkBugEntity::new, MobCategory.AMBIENT)
() -> EntityType.Builder.of(StinkBugEntity::new, MobCategory.CREATURE)
.sized(0.35F, 0.2F)
.clientTrackingRange(8)
.build("stink_bug"));
@@ -213,32 +213,54 @@ public final class AntarchyNeoforgeItems {
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROWN_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROWN_ANT_NEST);
public static final DeferredItem<net.minecraft.world.item.BlockItem> RAINBOW_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.RAINBOW_ANT_NEST);
public static final DeferredItem<net.minecraft.world.item.BlockItem> TERMITE_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TERMITE_NEST);
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.URANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEEPSLATE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEEPSLATE_URANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TITANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEEPSLATE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEEPSLATE_TITANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.URANIUM_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TITANIUM_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> RAW_URANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.RAW_URANIUM_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> RAW_TITANIUM_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.RAW_TITANIUM_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_URANIUM);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_TITANIUM);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_URANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_URANIUM_SLAB);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_TITANIUM_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_TITANIUM_SLAB);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_URANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_URANIUM_STAIRS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_TITANIUM_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_TITANIUM_STAIRS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CHISELED_URANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CHISELED_URANIUM);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CHISELED_TITANIUM_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CHISELED_TITANIUM);
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_ORE_ITEM = ITEMS.register("uranium_ore",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.URANIUM_ORE.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEEPSLATE_URANIUM_ORE_ITEM = ITEMS.register("deepslate_uranium_ore",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.DEEPSLATE_URANIUM_ORE.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_ORE_ITEM = ITEMS.register("titanium_ore",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.TITANIUM_ORE.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEEPSLATE_TITANIUM_ORE_ITEM = ITEMS.register("deepslate_titanium_ore",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.DEEPSLATE_TITANIUM_ORE.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_BLOCK_ITEM = ITEMS.register("uranium_block",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.URANIUM_BLOCK.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_BLOCK_ITEM = ITEMS.register("titanium_block",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.TITANIUM_BLOCK.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> RAW_URANIUM_BLOCK_ITEM = ITEMS.register("raw_uranium_block",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.RAW_URANIUM_BLOCK.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> RAW_TITANIUM_BLOCK_ITEM = ITEMS.register("raw_titanium_block",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.RAW_TITANIUM_BLOCK.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_URANIUM_ITEM = ITEMS.register("cut_uranium",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.CUT_URANIUM.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_TITANIUM_ITEM = ITEMS.register("cut_titanium",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.CUT_TITANIUM.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_URANIUM_SLAB_ITEM = ITEMS.register("cut_uranium_slab",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.CUT_URANIUM_SLAB.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_TITANIUM_SLAB_ITEM = ITEMS.register("cut_titanium_slab",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.CUT_TITANIUM_SLAB.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_URANIUM_STAIRS_ITEM = ITEMS.register("cut_uranium_stairs",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.CUT_URANIUM_STAIRS.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_TITANIUM_STAIRS_ITEM = ITEMS.register("cut_titanium_stairs",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.CUT_TITANIUM_STAIRS.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CHISELED_URANIUM_ITEM = ITEMS.register("chiseled_uranium",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.CHISELED_URANIUM.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> CHISELED_TITANIUM_ITEM = ITEMS.register("chiseled_titanium",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.CHISELED_TITANIUM.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_BULB_ITEM = ITEMS.register("uranium_bulb",
() -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(AntarchyNeoforgeBlocks.URANIUM_BULB.get(), new Item.Properties()));
() -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(AntarchyNeoforgeBlocks.URANIUM_BULB.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_BULB_ITEM = ITEMS.register("titanium_bulb",
() -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(AntarchyNeoforgeBlocks.TITANIUM_BULB.get(), new Item.Properties()));
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.URANIUM_DOOR);
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TITANIUM_DOOR);
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.URANIUM_TRAPDOOR);
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TITANIUM_TRAPDOOR);
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.URANIUM_BARS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_BARS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.TITANIUM_BARS);
() -> new com.craisinlord.antarchy.content.item.SignalSavingBulbItem(AntarchyNeoforgeBlocks.TITANIUM_BULB.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_DOOR_ITEM = ITEMS.register("uranium_door",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.URANIUM_DOOR.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_DOOR_ITEM = ITEMS.register("titanium_door",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.TITANIUM_DOOR.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_TRAPDOOR_ITEM = ITEMS.register("uranium_trapdoor",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.URANIUM_TRAPDOOR.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_TRAPDOOR_ITEM = ITEMS.register("titanium_trapdoor",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.TITANIUM_TRAPDOOR.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> URANIUM_BARS_ITEM = ITEMS.register("uranium_bars",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.URANIUM_BARS.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> TITANIUM_BARS_ITEM = ITEMS.register("titanium_bars",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.TITANIUM_BARS.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> ANTIMETAL_ITEM = ITEMS.register("antimetal",
() -> new AntimetalBlockItem(AntarchyNeoforgeBlocks.ANTIMETAL.get(), new Item.Properties()));
public static final DeferredItem<net.minecraft.world.item.BlockItem> POLISHED_ANTIMETAL_ITEM = ITEMS.register("polished_antimetal",
@@ -293,8 +315,10 @@ public final class AntarchyNeoforgeItems {
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_BRICK_SLAB);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_BRICK_WALL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_BRICK_WALL);
public static final DeferredItem<net.minecraft.world.item.BlockItem> MYRMITE_COAL_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.MYRMITE_COAL_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_URANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_URANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_TITANIUM_ORE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROODSTONE_TITANIUM_ORE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_URANIUM_ORE_ITEM = ITEMS.register("broodstone_uranium_ore",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.BROODSTONE_URANIUM_ORE.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROODSTONE_TITANIUM_ORE_ITEM = ITEMS.register("broodstone_titanium_ore",
() -> new net.minecraft.world.item.BlockItem(AntarchyNeoforgeBlocks.BROODSTONE_TITANIUM_ORE.get(), new Item.Properties().rarity(Rarity.UNCOMMON)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> POLISHED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POLISHED_NYXITE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CHISELED_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CHISELED_NYXITE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> NYXITE_BRICKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.NYXITE_BRICKS);
@@ -402,7 +426,11 @@ public final class AntarchyNeoforgeItems {
public static final DeferredItem<Item> QUEEN_SCALE = ITEMS.register("queen_scale",
() -> new MobComingSoonTooltipItem(new Item.Properties().rarity(Rarity.RARE)));
public static final DeferredItem<Item> CHITEN = ITEMS.registerSimpleItem("chiten", new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<Item> JERRY_NUCLEUS = ITEMS.registerSimpleItem("jerry_nucleus", new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<Item> JERRY_NUCLEUS = ITEMS.registerSimpleItem("jerry_nucleus", new Item.Properties().rarity(Rarity.UNCOMMON)
.food(new FoodProperties.Builder()
.nutrition(2)
.saturationModifier(0.1F)
.build()));
public static final DeferredItem<Item> CARAPACE = ITEMS.registerSimpleItem("carapace", new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<Item> STINK_BUG = ITEMS.registerSimpleItem("stink_bug", new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<Item> JUMPY_BUG_LEG = ITEMS.registerSimpleItem("jumpy_bug_leg", new Item.Properties().rarity(Rarity.UNCOMMON));
@@ -442,8 +470,9 @@ public final class AntarchyNeoforgeItems {
public static final DeferredItem<Item> RAW_BUG_MEAT = ITEMS.register("raw_bug_meat",
() -> new Item(new Item.Properties()
.food(new FoodProperties.Builder()
.nutrition(3)
.saturationModifier(0.3F)
.nutrition(4)
.saturationModifier(0.1F)
.effect(() -> new MobEffectInstance(MobEffects.HUNGER, 600), 0.8F)
.build())));
public static final DeferredItem<Item> COOKED_BUG_MEAT = ITEMS.register("cooked_bug_meat",
() -> new Item(new Item.Properties()
@@ -136,6 +136,7 @@ public final class AntarchyNeoforgeSounds {
public static final DeferredHolder<SoundEvent, SoundEvent> STINKY_FLY = registerSoundEvent("stinky_fly");
public static final DeferredHolder<SoundEvent, SoundEvent> STINK_BUG_FART = registerSoundEvent("stink_bug_fart");
public static final DeferredHolder<SoundEvent, SoundEvent> STINK_BUG_IDLE = registerSoundEvent("stink_bug_idle");
public static final DeferredHolder<SoundEvent, SoundEvent> CAVARYN_HEARTBEAT = registerSoundEvent("cavaryn_heartbeat");
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_IDLE = registerSoundEvent("rolly_polly_idle");
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_WHEEL_MODE = registerSoundEvent("rolly_polly_wheel_mode");
public static final DeferredHolder<SoundEvent, SoundEvent> ROLLY_POLLY_NORMAL_MODE = registerSoundEvent("rolly_polly_normal_mode");