Merge branch 'beta7'

This commit is contained in:
craisinlord committed 2026-07-15 22:32:25 -05:00
commit 5aa77a2d01
814 files changed
+38255 -6854

No files matched your search

+4 -3
View File
@@ -34,8 +34,8 @@ dependencies {
neoForge "net.neoforged:neoforge:${rootProject.neoforge_version}"
modLocalRuntime("curse.maven:intapi-${project.intapi_curseforge_id}:${project.intapi_curseforge_file_id_neoforge}")
implementation "software.bernie.geckolib:geckolib-neoforge-${minecraft_version}:${geckolib_version}"
compileOnly(files(rootProject.file("infinite_dimensions_jars/infinity-2.7.1+1.21.1-neoforge.jar")))
modLocalRuntime(files(rootProject.file("infinite_dimensions_jars/infinity-2.7.1+1.21.1-neoforge.jar")))
compileOnly(files(rootProject.file("infinite_dimensions_jars/infinity-2.7.2+1.21.1-neoforge.jar")))
modLocalRuntime(files(rootProject.file("infinite_dimensions_jars/infinity-2.7.2+1.21.1-neoforge.jar")))
compileOnly(files(rootProject.file("sizeable_foliage_jars/sizeable_foliage-neoforge-1.21.1-1.0.0.jar")))
runtimeOnly(files(rootProject.file("sizeable_foliage_jars/sizeable_foliage-neoforge-1.21.1-1.0.0.jar")))
@@ -44,7 +44,8 @@ dependencies {
modLocalRuntime("com.telepathicgrunt:StructureVoidToggle-Neoforge:${project.structurevoidtoggle_neoforge}")
// modLocalRuntime("curse.maven:idas-${idas_curseforge_id}:${idas_curseforge_file_id}")
// modLocalRuntime("curse.maven:jei-${jei_curseforge_id}:${jei_curseforge_file_id}")
compileOnly "mezz.jei:jei-${minecraft_version}-common-api:${jei_version}"
compileOnly "mezz.jei:jei-${minecraft_version}-neoforge-api:${jei_version}"
// modLocalRuntime("curse.maven:create-${create_curseforge_id}:${create_curseforge_file_id}")
// modLocalRuntime("curse.maven:theoneprobe-${top_curseforge_id}:${top_curseforge_file_id}")
// modLocalRuntime("curse.maven:worldedit-${worldedit_curseforge_id}:${worldedit_curseforge_file_id}")
@@ -199,6 +199,7 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setHerculesBeetleHealth(AntarchyMobsConfig.herculesBeetleHealth());
AntarchySettings.setHerculesBeetleAttackDamage(AntarchyMobsConfig.herculesBeetleAttackDamage());
AntarchySettings.setHerculesBeetleChargeDamage(AntarchyMobsConfig.herculesBeetleChargeDamage());
AntarchySettings.setOuranwoodDeerHealth(AntarchyMobsConfig.ouranwoodDeerHealth());
AntarchySettings.setGlimmerHealth(AntarchyMobsConfig.glimmerHealth());
}
@@ -258,6 +259,16 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setBigBerthaBasiliskCooldownSeconds(AntarchyToolsConfig.bigBerthaBasiliskCooldownSeconds());
AntarchySettings.setBigBerthaLucidInvertedDurationSeconds(AntarchyToolsConfig.bigBerthaLucidInvertedDurationSeconds());
AntarchySettings.setBigBerthaLucidInvertedDamageBonusPercent(AntarchyToolsConfig.bigBerthaLucidInvertedDamageBonusPercent());
AntarchySettings.setKrakensGraspAttackDamage(AntarchyToolsConfig.krakensGraspAttackDamage());
AntarchySettings.setKrakensGraspAttackSpeed(AntarchyToolsConfig.krakensGraspAttackSpeed());
AntarchySettings.setKrakensGraspThrownDamage(AntarchyToolsConfig.krakensGraspThrownDamage());
AntarchySettings.setKrakensGraspLightningDamage(AntarchyToolsConfig.krakensGraspLightningDamage());
AntarchySettings.setKrakensGraspInnateLoyalty(AntarchyToolsConfig.krakensGraspInnateLoyalty());
AntarchySettings.setKrakensGraspInnateLoyaltyLevel(AntarchyToolsConfig.krakensGraspInnateLoyaltyLevel());
AntarchySettings.setKrakensGraspTentacleDurationTicks(AntarchyToolsConfig.krakensGraspTentacleDurationTicks());
AntarchySettings.setKrakensGraspTentacleDamage(AntarchyToolsConfig.krakensGraspTentacleDamage());
AntarchySettings.setKrakensGraspTentacleRadius(AntarchyToolsConfig.krakensGraspTentacleRadius());
AntarchySettings.setKrakensGraspTentacleDamageIntervalTicks(AntarchyToolsConfig.krakensGraspTentacleDamageIntervalTicks());
AntarchySettings.setScorpionWhipBaseDamage(AntarchyToolsConfig.scorpionWhipBaseDamage());
AntarchySettings.setScorpionWhipReachBonus(AntarchyToolsConfig.scorpionWhipReachBonus());
AntarchySettings.setScorpionWhipPoisonDurationTicks(AntarchyToolsConfig.scorpionWhipPoisonDurationTicks());
@@ -291,6 +302,10 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setSquidzookaCooldownSeconds(AntarchyToolsConfig.squidzookaCooldownSeconds());
AntarchySettings.setSquidzookaLaunchVelocity(AntarchyToolsConfig.squidzookaLaunchVelocity());
AntarchySettings.setRpoLauncherCooldownSeconds(AntarchyToolsConfig.rpoLauncherCooldownSeconds());
AntarchySettings.setRpoLauncherLaunchVelocity(AntarchyToolsConfig.rpoLauncherLaunchVelocity());
AntarchySettings.setRpoLauncherExplosionDamage(AntarchyToolsConfig.rpoLauncherExplosionDamage());
AntarchySettings.setRpoLauncherExplosionRadius(AntarchyToolsConfig.rpoLauncherExplosionRadius());
AntarchySettings.setSizeChangingRaysEnabled(AntarchyToolsConfig.sizeChangingRaysEnabled());
AntarchySettings.setSizeRayCooldownSeconds(AntarchyToolsConfig.sizeRayCooldownSeconds());
@@ -311,9 +326,20 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setGravityGunCooldownSeconds(AntarchyToolsConfig.gravityGunCooldownSeconds());
AntarchySettings.setGravityGunMaxHoldDistance(AntarchyToolsConfig.gravityGunMaxHoldDistance());
AntarchySettings.setMinersDreamEnabled(AntarchyToolsConfig.minersDreamEnabled());
AntarchySettings.setMinersDreamMinimumRange(AntarchyToolsConfig.minersDreamMinimumRange());
AntarchySettings.setMinersDreamMaximumRange(AntarchyToolsConfig.minersDreamMaximumRange());
AntarchySettings.setMinersDreamTorchSpacing(AntarchyToolsConfig.minersDreamTorchSpacing());
AntarchySettings.setMinersDreamBlocksPerTick(AntarchyToolsConfig.minersDreamBlocksPerTick());
AntarchySettings.setDuctTapeRepairPercentPerUse(AntarchyToolsConfig.ductTapeRepairPercentPerUse());
AntarchySettings.setPotentNyxiteInvertedDurationSeconds(AntarchyToolsConfig.potentNyxiteInvertedDurationSeconds());
AntarchySettings.setCorneaEarNightVisionSeconds(AntarchyToolsConfig.corneaEarNightVisionSeconds());
AntarchySettings.setAmericanizingEnabled(AntarchyToolsConfig.americanizingEnabled());
AntarchySettings.setAmericanBonusNutrition(AntarchyToolsConfig.americanBonusNutrition());
AntarchySettings.setAmericanBonusSaturation(AntarchyToolsConfig.americanBonusSaturation());
AntarchySettings.setAmericanRegenerationDurationTicks(AntarchyToolsConfig.americanRegenerationDurationTicks());
AntarchySettings.setAmericanRegenerationAmplifier(AntarchyToolsConfig.americanRegenerationAmplifier());
AntarchySettings.setAntDanceRadius(AntarchyMobsConfig.antDanceRadius());
AntarchySettings.setMogglesVisionRadius(AntarchyToolsConfig.mogglesVisionRadius());
@@ -212,6 +212,11 @@ public final class AntarchyMobsConfig {
private static final ModConfigSpec.DoubleValue DORRIE_HEALTH;
// Ouranwood Deer
private static final ModConfigSpec.DoubleValue OURANWOOD_DEER_HEALTH;
// Glimmer
private static final ModConfigSpec.DoubleValue GLIMMER_HEALTH;
@@ -547,6 +552,10 @@ public final class AntarchyMobsConfig {
DORRIE_HEALTH = b.comment("Base max health.").defineInRange("health", 60.0D, 1.0D, 32768.0D);
b.pop();
b.push("ouranwood_deer");
OURANWOOD_DEER_HEALTH = b.comment("Base max health.").defineInRange("health", 20.0D, 1.0D, 32768.0D);
b.pop();
b.push("glimmer");
GLIMMER_HEALTH = b.comment("Base max health.").defineInRange("health", 20.0D, 1.0D, 32768.0D);
b.pop();
@@ -727,6 +736,7 @@ public final class AntarchyMobsConfig {
static double cheepHealth() { return CHEEP_HEALTH.get(); }
static double cheepAttackDamage() { return CHEEP_ATTACK_DAMAGE.get(); }
static double dorrieHealth() { return DORRIE_HEALTH.get(); }
static double ouranwoodDeerHealth() { return OURANWOOD_DEER_HEALTH.get(); }
static double glimmerHealth() { return GLIMMER_HEALTH.get(); }
static double herculesBeetleHealth() { return HERCULES_BEETLE_HEALTH.get(); }
static double herculesBeetleAttackDamage() { return HERCULES_BEETLE_ATTACK_DAMAGE.get(); }
@@ -45,6 +45,17 @@ public final class AntarchyNeoForgeFluidTypes {
.density(1200)
.viscosity(1400)));
public static final DeferredHolder<FluidType, FluidType> LUMEN_TYPE = FLUID_TYPES.register("lumen",
() -> new FluidType(FluidType.Properties.create()
.descriptionId("block.antarchy.lumen")
.fallDistanceModifier(0.0F)
.canSwim(true)
.supportsBoating(true)
.sound(SoundActions.BUCKET_FILL, SoundEvents.BUCKET_FILL)
.sound(SoundActions.BUCKET_EMPTY, SoundEvents.BUCKET_EMPTY)
.density(1000)
.viscosity(1000)));
private AntarchyNeoForgeFluidTypes() {
}
@@ -2,6 +2,7 @@ package com.craisinlord.antarchy.neoforge;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.compat.infinity.InfinityCompat;
import com.craisinlord.antarchy.compat.infinity.InfinityCompatVersion;
import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.item.BloodCrystalKatanaItem;
@@ -168,7 +169,7 @@ public class AntarchyNeoforge {
new BloodCrystalKatanaTrailPayload(player.getId(), durationTicks)
));
com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setSyncDispatcher(AntarchyGravityNetworking::syncEntity);
if (isModLoaded("infinity")) {
if (isSupportedInfinityLoaded()) {
InfinityCompat.bind(new NeoForgeInfinityCompat());
}
AntarchyNeoForgeEvents.register(modEventBus);
@@ -176,6 +177,7 @@ public class AntarchyNeoforge {
AntarchyNeoforgeEntites.register(modEventBus);
AntarchyNeoforgeBlocks.register(modEventBus);
AntarchyNeoforgeItems.register(modEventBus);
AntarchyNeoForgeFluidTypes.register(modEventBus);
AntarchyNeoforgeMisc.register(modEventBus);
AntarchyNeoforgeSpawnPlacements.register(modEventBus);
AntarchyNeoforgeCreativeModeTabs.register(modEventBus);
@@ -217,7 +219,7 @@ public class AntarchyNeoforge {
(java.util.function.Supplier) AntarchyNeoforgeEntites.BOMBER,
(java.util.function.Supplier) AntarchyNeoforgeEntites.BED_BUG,
AntarchyNeoforgeEntites.CHEEP,
(java.util.function.Supplier) AntarchyNeoforgeEntites.CHEEP,
() -> { throw new IllegalStateException("Dorrie is not part of this update yet."); },
() -> AntarchyNeoforgeBlocks.DUPLICATOR_LOG.get(),
() -> AntarchyNeoforgeBlocks.DUPLICATOR_SAPLING.get(),
() -> AntarchyNeoforgeBlocks.DUCT_TAPE.get(),
@@ -268,6 +270,10 @@ public class AntarchyNeoforge {
() -> AntarchyNeoforgeBlocks.OURANWOOD_ACORN_BLOCK.get(),
() -> AntarchyNeoforgeBlocks.MOSSY_OURANWOOD_LOG.get(),
() -> AntarchyNeoforgeBlocks.MOSSY_OURANWOOD_WOOD.get(),
() -> AntarchyNeoforgeBlocks.UMBRAL_MOSS_BLOCK.get(),
() -> AntarchyNeoforgeBlocks.UMBRAL_MOSS_CARPET.get(),
() -> AntarchyNeoforgeBlocks.BLUSH_MOSS_BLOCK.get(),
() -> AntarchyNeoforgeBlocks.BLUSH_MOSS_CARPET.get(),
() -> AntarchyNeoforgeBlocks.ORANGE_MILKWEED.get(),
() -> AntarchyNeoforgeBlocks.PINK_MILKWEED.get(),
() -> AntarchyNeoforgeBlocks.BED_BUG_EGG.get(),
@@ -277,19 +283,45 @@ public class AntarchyNeoforge {
() -> AntarchyNeoforgeBlocks.HUSHWEED.get(),
() -> AntarchyNeoforgeBlocks.OURANWOOD_SQUIRREL_NEST.get(),
() -> AntarchyNeoforgeBlocks.BRUTALFLY_COCOON_SPAWNER.get(),
() -> AntarchyNeoforgeBlocks.GIANT_LILY_PAD.get(),
() -> AntarchyNeoforgeBlocks.ANT_NEST_BLOCK_ENTITY.get(),
() -> AntarchyNeoforgeBlocks.DREAM_CAMPFIRE_BLOCK_ENTITY.get(),
() -> AntarchyNeoforgeBlocks.WASP_NEST_BLOCK_ENTITY.get(),
() -> AntarchyNeoforgeBlocks.HUSHWEED_BLOCK_ENTITY.get(),
() -> AntarchyNeoforgeMisc.STINKY_GAS.get(),
() -> AntarchyNeoforgeMisc.STINKY_FLY.get(),
() -> AntarchyNeoforgeMisc.PEACH_LEAVES_PARTICLE.get(),
() -> AntarchyNeoforgeMisc.DOUBLE_DAMAGE_CHANCE,
() -> AntarchyNeoforgeMisc.BLOODGLASS_MAX_HEARTS,
() -> AntarchyNeoforgeMisc.BLOODGLASS_WARD
);
AntarchyObjects.setOctopusBomb(AntarchyNeoforgeEntites.OCTOPUS_BOMB);
// AntarchyObjects.setGlimmer(AntarchyNeoforgeEntites.GLIMMER);
// AntarchyObjects.setGlimmersGrace(() -> AntarchyNeoforgeMisc.GLIMMERS_GRACE);
AntarchyObjects.setTentacle(AntarchyNeoforgeEntites.TENTACLE);
AntarchyObjects.setKrakensGraspTrident(AntarchyNeoforgeEntites.KRAKENS_GRASP_TRIDENT);
AntarchyObjects.setKrakenTentacle(() -> AntarchyNeoforgeItems.KRAKEN_TENTACLE.get());
AntarchyObjects.setKrakensGrasp(() -> AntarchyNeoforgeItems.KRAKENS_GRASP.get());
AntarchyObjects.setOuranwoodDeer(AntarchyNeoforgeEntites.OURANWOOD_DEER);
AntarchyObjects.setGlimmer(AntarchyNeoforgeEntites.GLIMMER);
AntarchyObjects.setSpiritApple(() -> AntarchyNeoforgeItems.SPIRIT_APPLE.get());
AntarchyObjects.setElka(AntarchyNeoforgeEntites.ELKA);
AntarchyObjects.setPeach(() -> AntarchyNeoforgeItems.PEACH.get());
AntarchyObjects.setCorn(() -> AntarchyNeoforgeItems.CORN.get());
AntarchyObjects.setCornSeeds(() -> AntarchyNeoforgeItems.CORN_SEEDS.get());
AntarchyObjects.setStarCoralBlock(() -> AntarchyNeoforgeBlocks.STAR_CORAL_BLOCK.get());
AntarchyObjects.setStarCoral(() -> AntarchyNeoforgeBlocks.STAR_CORAL.get());
AntarchyObjects.setStarCoralFan(() -> AntarchyNeoforgeBlocks.STAR_CORAL_FAN.get());
AntarchyObjects.setCookedCorndog(() -> AntarchyNeoforgeItems.COOKED_CORNDOG.get());
AntarchyObjects.setGlimmerBottle(() -> AntarchyNeoforgeItems.GLIMMER_BOTTLE.get());
AntarchyObjects.setGlimmerVariantComponent(() -> AntarchyNeoforgeMisc.GLIMMER_VARIANT.get());
AntarchyObjects.setAmericanComponent(() -> AntarchyNeoforgeMisc.AMERICAN.get());
AntarchyObjects.setLumen(() -> AntarchyNeoforgeMisc.LUMEN.get());
AntarchyObjects.setFlowingLumen(() -> AntarchyNeoforgeMisc.FLOWING_LUMEN.get());
AntarchyObjects.setLumenBucket(() -> AntarchyNeoforgeItems.LUMEN_BUCKET.get());
AntarchyObjects.setLumenBlock(() -> AntarchyNeoforgeBlocks.LUMEN_BLOCK.get());
AntarchyObjects.setLumenFroglight(() -> AntarchyNeoforgeBlocks.LUMEN_FROGLIGHT.get());
AntarchyObjects.setPeachLeavesParticle(() -> AntarchyNeoforgeMisc.PEACH_LEAVES_PARTICLE.get());
// Dorrie is not part of this update yet.
// AntarchyObjects.setDorrieInventoryMenu(AntarchyNeoforgeMisc.DORRIE_INVENTORY_MENU);
}
private static boolean isModLoaded(String modId) {
@@ -299,4 +331,29 @@ public class AntarchyNeoforge {
return false;
}
}
private static boolean isSupportedInfinityLoaded() {
if (!isModLoaded("infinity")) {
return false;
}
try {
String version = ModList.get()
.getModContainerById("infinity")
.map(container -> container.getModInfo().getVersion().toString())
.orElse(null);
if (InfinityCompatVersion.isSupported(version)) {
return true;
}
Antarchy.LOGGER.warn(
"Skipping Infinity integration because version {} is below the supported minimum {}",
version,
InfinityCompatVersion.requiredVersion()
);
} catch (Throwable throwable) {
Antarchy.LOGGER.warn("Skipping Infinity integration because the installed Infinity version could not be verified", throwable);
}
return false;
}
}
@@ -79,6 +79,16 @@ public final class AntarchyToolsConfig {
private static final ModConfigSpec.DoubleValue BIG_BERTHA_ATTACK_DAMAGE;
private static final ModConfigSpec.DoubleValue BIG_BERTHA_REACH_BONUS;
private static final ModConfigSpec.DoubleValue BIG_BERTHA_ATTACK_SPEED;
private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_ATTACK_DAMAGE;
private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_ATTACK_SPEED;
private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_THROWN_DAMAGE;
private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_LIGHTNING_DAMAGE;
private static final ModConfigSpec.BooleanValue KRAKENS_GRASP_INNATE_LOYALTY;
private static final ModConfigSpec.IntValue KRAKENS_GRASP_INNATE_LOYALTY_LEVEL;
private static final ModConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_DURATION_TICKS;
private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_TENTACLE_DAMAGE;
private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_TENTACLE_RADIUS;
private static final ModConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_DAMAGE_INTERVAL_TICKS;
private static final ModConfigSpec.IntValue BIG_BERTHA_BASILISK_PARALYZE_DURATION_TICKS;
private static final ModConfigSpec.IntValue BIG_BERTHA_KRAKEN_SLOW_TICKS;
private static final ModConfigSpec.DoubleValue BIG_BERTHA_BASILISK_COOLDOWN_SECONDS;
@@ -145,6 +155,10 @@ public final class AntarchyToolsConfig {
private static final ModConfigSpec.DoubleValue SQUIDZOOKA_COOLDOWN_SECONDS;
private static final ModConfigSpec.DoubleValue SQUIDZOOKA_LAUNCH_VELOCITY;
private static final ModConfigSpec.DoubleValue RPO_LAUNCHER_COOLDOWN_SECONDS;
private static final ModConfigSpec.DoubleValue RPO_LAUNCHER_LAUNCH_VELOCITY;
private static final ModConfigSpec.DoubleValue RPO_LAUNCHER_EXPLOSION_DAMAGE;
private static final ModConfigSpec.DoubleValue RPO_LAUNCHER_EXPLOSION_RADIUS;
// Size Rays
@@ -170,12 +184,26 @@ public final class AntarchyToolsConfig {
private static final ModConfigSpec.DoubleValue GRAVITY_GUN_MAX_HOLD_DISTANCE;
// Miner's Dream
private static final ModConfigSpec.BooleanValue MINERS_DREAM_ENABLED;
private static final ModConfigSpec.IntValue MINERS_DREAM_MINIMUM_RANGE;
private static final ModConfigSpec.IntValue MINERS_DREAM_MAXIMUM_RANGE;
private static final ModConfigSpec.IntValue MINERS_DREAM_TORCH_SPACING;
private static final ModConfigSpec.IntValue MINERS_DREAM_BLOCKS_PER_TICK;
// Miscellaneous items / consumables
private static final ModConfigSpec.DoubleValue DUCT_TAPE_REPAIR_PERCENT_PER_USE;
private static final ModConfigSpec.DoubleValue POTENT_NYXITE_INVERTED_DURATION_SECONDS;
private static final ModConfigSpec.BooleanValue INVERT_PROJECTILES_FROM_INVERTED_PLAYERS;
private static final ModConfigSpec.IntValue CORNEA_EAR_NIGHT_VISION_SECONDS;
private static final ModConfigSpec.BooleanValue AMERICAN_ENABLED;
private static final ModConfigSpec.IntValue AMERICAN_BONUS_NUTRITION;
private static final ModConfigSpec.DoubleValue AMERICAN_BONUS_SATURATION;
private static final ModConfigSpec.IntValue AMERICAN_REGENERATION_DURATION_TICKS;
private static final ModConfigSpec.IntValue AMERICAN_REGENERATION_AMPLIFIER;
// Moggles
@@ -289,6 +317,19 @@ public final class AntarchyToolsConfig {
BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT = b.comment("Bonus damage percent from Lucid mode while the wielder is inverted.") .defineInRange("lucidModeInvertedDamageBonusPercent", 25.0D, 0.0D, 1000.0D);
b.pop();
b.push("krakensGrasp");
KRAKENS_GRASP_ATTACK_DAMAGE = b.comment("Melee attack damage of Kraken's Grasp.") .defineInRange("attackDamage", 16.0D, 0.0D, 4096.0D);
KRAKENS_GRASP_ATTACK_SPEED = b.comment("Attack speed of Kraken's Grasp.") .defineInRange("attackSpeed", -2.9D, -10.0D, 10.0D);
KRAKENS_GRASP_THROWN_DAMAGE = b.comment("Damage dealt when the thrown trident hits an entity.") .defineInRange("thrownDamage", 16.0D, 0.0D, 4096.0D);
KRAKENS_GRASP_LIGHTNING_DAMAGE = b.comment("Bonus damage from the lightning strike on every hit.") .defineInRange("lightningDamage", 6.0D, 0.0D, 4096.0D);
KRAKENS_GRASP_INNATE_LOYALTY = b.comment("Whether Kraken's Grasp automatically returns to its thrower like an enchanted Loyalty trident.").define("innateLoyalty", true);
KRAKENS_GRASP_INNATE_LOYALTY_LEVEL = b.comment("Effective Loyalty level used for the innate return, from 1 to 3.") .defineInRange("innateLoyaltyLevel", 3, 1, 3);
KRAKENS_GRASP_TENTACLE_DURATION_TICKS = b.comment("How long a summoned tentacle lasts, in ticks.") .defineInRange("tentacleDurationTicks", 100, 1, 72000);
KRAKENS_GRASP_TENTACLE_DAMAGE = b.comment("Damage a tentacle deals per damage interval to nearby entities.") .defineInRange("tentacleDamage", 3.0D, 0.0D, 4096.0D);
KRAKENS_GRASP_TENTACLE_RADIUS = b.comment("Radius in blocks around a tentacle that it can grab and damage.") .defineInRange("tentacleRadius", 3.0D, 0.0D, 32.0D);
KRAKENS_GRASP_TENTACLE_DAMAGE_INTERVAL_TICKS = b.comment("How often, in ticks, a tentacle damages nearby entities.") .defineInRange("tentacleDamageIntervalTicks", 20, 1, 2000);
b.pop();
b.push("scorpionWhip");
SCORPION_WHIP_BASE_DAMAGE = b.comment("Base lash damage of the Scorpion Stinger Whip.").defineInRange("baseDamage", 10.0D, 0.0D, 4096.0D);
SCORPION_WHIP_REACH_BONUS = b.comment("Extra entity interaction range in blocks while held in main hand.").defineInRange("reachBonus", 5.0D, 0.0D, 32.0D);
@@ -379,6 +420,13 @@ public final class AntarchyToolsConfig {
SQUIDZOOKA_LAUNCH_VELOCITY = b.comment("Initial launch velocity applied to the Missile Squid.") .defineInRange("launchVelocity", 2.1D, 0.1D, 20.0D);
b.pop();
b.push("rpoLauncher");
RPO_LAUNCHER_COOLDOWN_SECONDS = b.comment("Cooldown in seconds after firing. Set to 0 to disable.").defineInRange("cooldownSeconds", 1.0D, 0.0D, 3600.0D);
RPO_LAUNCHER_LAUNCH_VELOCITY = b.comment("Initial launch velocity applied to the Octopus Bomb.") .defineInRange("launchVelocity", 2.1D, 0.1D, 20.0D);
RPO_LAUNCHER_EXPLOSION_DAMAGE = b.comment("Max damage dealt at the center of the ink explosion.") .defineInRange("explosionDamage", 14.0D, 0.0D, 4096.0D);
RPO_LAUNCHER_EXPLOSION_RADIUS = b.comment("Radius in blocks of the ink explosion.") .defineInRange("explosionRadius", 4.0D, 0.5D, 32.0D);
b.pop();
// Size Rays
@@ -424,6 +472,17 @@ public final class AntarchyToolsConfig {
b.pop();
// Miner's Dream
b.push("minersDream");
MINERS_DREAM_ENABLED = b.comment("Master toggle. If false, the item remains craftable but cannot be used.").define("enabled", true);
MINERS_DREAM_MINIMUM_RANGE = b.comment("Minimum cave length in blocks. Clamped to [8, 256].") .defineInRange("minimumRange", 48, 8, 256);
MINERS_DREAM_MAXIMUM_RANGE = b.comment("Maximum cave length in blocks. Clamped to [8, 256].") .defineInRange("maximumRange", 96, 8, 256);
MINERS_DREAM_TORCH_SPACING = b.comment("Approximate blocks between torch placements along the cave.") .defineInRange("torchSpacing", 10, 4, 64);
MINERS_DREAM_BLOCKS_PER_TICK = b.comment("Maximum blocks removed per server tick while excavating.") .defineInRange("blocksPerTick", 150, 1, 2000);
b.pop();
// Miscellaneous items / consumables
b.push("ductTape");
@@ -444,6 +503,14 @@ public final class AntarchyToolsConfig {
.defineInRange("nightVisionSeconds", 15, 0, 600);
b.pop();
b.push("american");
AMERICAN_ENABLED = b.comment("If false, foods cannot be Americanized with High Fructose Corn Syrup.").define("enabled", true);
AMERICAN_BONUS_NUTRITION = b.comment("Extra hunger points restored when eating an Americanized food.").defineInRange("bonusNutrition", 2, 0, 100);
AMERICAN_BONUS_SATURATION = b.comment("Extra saturation restored when eating an Americanized food.").defineInRange("bonusSaturation", 1.0D, 0.0D, 100.0D);
AMERICAN_REGENERATION_DURATION_TICKS = b.comment("Duration of the Regeneration effect granted when eating an Americanized food, in ticks.").defineInRange("regenerationDurationTicks", 60, 0, 72000);
AMERICAN_REGENERATION_AMPLIFIER = b.comment("Amplifier of the Regeneration effect granted when eating an Americanized food (0 = I).").defineInRange("regenerationAmplifier", 0, 0, 10);
b.pop();
b.push("moggles");
MOGGLES_VISION_RADIUS = b.comment("Radius in blocks of the see-through effect (cube side = 2r+1).").defineInRange("visionRadius", 2, 1, 16);
MOGGLES_VISION_MAX_LIGHT = b.comment("Maximum block light level where Moggles vision activates.") .defineInRange("visionMaxLight", 7, 0, 15);
@@ -510,6 +577,17 @@ public final class AntarchyToolsConfig {
static double bigBerthaBasiliskCooldownSeconds() { return BIG_BERTHA_BASILISK_COOLDOWN_SECONDS.get(); }
static double bigBerthaLucidInvertedDurationSeconds() { return BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS.get(); }
static double bigBerthaLucidInvertedDamageBonusPercent(){ return BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT.get(); }
static double krakensGraspAttackDamage() { return KRAKENS_GRASP_ATTACK_DAMAGE.get(); }
static double krakensGraspAttackSpeed() { return KRAKENS_GRASP_ATTACK_SPEED.get(); }
static double krakensGraspThrownDamage() { return KRAKENS_GRASP_THROWN_DAMAGE.get(); }
static double krakensGraspLightningDamage() { return KRAKENS_GRASP_LIGHTNING_DAMAGE.get(); }
static boolean krakensGraspInnateLoyalty() { return KRAKENS_GRASP_INNATE_LOYALTY.get(); }
static int krakensGraspInnateLoyaltyLevel() { return KRAKENS_GRASP_INNATE_LOYALTY_LEVEL.get(); }
static int krakensGraspTentacleDurationTicks() { return KRAKENS_GRASP_TENTACLE_DURATION_TICKS.get(); }
static double krakensGraspTentacleDamage() { return KRAKENS_GRASP_TENTACLE_DAMAGE.get(); }
static double krakensGraspTentacleRadius() { return KRAKENS_GRASP_TENTACLE_RADIUS.get(); }
static int krakensGraspTentacleDamageIntervalTicks() { return KRAKENS_GRASP_TENTACLE_DAMAGE_INTERVAL_TICKS.get(); }
static double scorpionWhipBaseDamage() { return SCORPION_WHIP_BASE_DAMAGE.get(); }
static double scorpionWhipReachBonus() { return SCORPION_WHIP_REACH_BONUS.get(); }
static int scorpionWhipPoisonDurationTicks() { return SCORPION_WHIP_POISON_DURATION_TICKS.get(); }
@@ -559,6 +637,10 @@ public final class AntarchyToolsConfig {
static double squidzookaCooldownSeconds() { return SQUIDZOOKA_COOLDOWN_SECONDS.get(); }
static double squidzookaLaunchVelocity() { return SQUIDZOOKA_LAUNCH_VELOCITY.get(); }
static double rpoLauncherCooldownSeconds() { return RPO_LAUNCHER_COOLDOWN_SECONDS.get(); }
static double rpoLauncherLaunchVelocity() { return RPO_LAUNCHER_LAUNCH_VELOCITY.get(); }
static double rpoLauncherExplosionDamage() { return RPO_LAUNCHER_EXPLOSION_DAMAGE.get(); }
static double rpoLauncherExplosionRadius() { return RPO_LAUNCHER_EXPLOSION_RADIUS.get(); }
static boolean sizeChangingRaysEnabled() { return SIZE_CHANGING_RAYS_ENABLED.get(); }
static double sizeRayCooldownSeconds() { return SIZE_RAY_COOLDOWN_SECONDS.get(); }
@@ -579,9 +661,20 @@ public final class AntarchyToolsConfig {
static double gravityGunCooldownSeconds() { return GRAVITY_GUN_COOLDOWN_SECONDS.get(); }
static double gravityGunMaxHoldDistance() { return GRAVITY_GUN_MAX_HOLD_DISTANCE.get(); }
static boolean minersDreamEnabled() { return MINERS_DREAM_ENABLED.get(); }
static int minersDreamMinimumRange() { return MINERS_DREAM_MINIMUM_RANGE.get(); }
static int minersDreamMaximumRange() { return MINERS_DREAM_MAXIMUM_RANGE.get(); }
static int minersDreamTorchSpacing() { return MINERS_DREAM_TORCH_SPACING.get(); }
static int minersDreamBlocksPerTick() { return MINERS_DREAM_BLOCKS_PER_TICK.get(); }
static double ductTapeRepairPercentPerUse() { return DUCT_TAPE_REPAIR_PERCENT_PER_USE.get(); }
static double potentNyxiteInvertedDurationSeconds() { return POTENT_NYXITE_INVERTED_DURATION_SECONDS.get(); }
static int corneaEarNightVisionSeconds() { return CORNEA_EAR_NIGHT_VISION_SECONDS.get(); }
static boolean americanizingEnabled() { return AMERICAN_ENABLED.get(); }
static int americanBonusNutrition() { return AMERICAN_BONUS_NUTRITION.get(); }
static double americanBonusSaturation() { return AMERICAN_BONUS_SATURATION.get(); }
static int americanRegenerationDurationTicks() { return AMERICAN_REGENERATION_DURATION_TICKS.get(); }
static int americanRegenerationAmplifier() { return AMERICAN_REGENERATION_AMPLIFIER.get(); }
static int mogglesVisionRadius() { return MOGGLES_VISION_RADIUS.get(); }
static int mogglesVisionMaxLight() { return MOGGLES_VISION_MAX_LIGHT.get(); }
@@ -4,10 +4,11 @@ import com.craisinlord.antarchy.Antarchy;
import net.minecraft.world.level.block.state.properties.BlockSetType;
import net.minecraft.world.level.block.state.properties.WoodType;
public final class OuranwoodWoodTypes {
public final class AntarchyWoodTypes {
public static final WoodType OURANWOOD = register("ouranwood");
public static final WoodType PEACH = register("peach");
private OuranwoodWoodTypes() {
private AntarchyWoodTypes() {
}
private static WoodType register(String name) {
@@ -1,5 +1,6 @@
package com.craisinlord.antarchy.neoforge;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.compat.infinity.InfinityCompatBridge;
import net.lerariemann.infinity.util.InfinityMethods;
import net.lerariemann.infinity.util.teleport.WarpLogic;
@@ -18,6 +19,7 @@ public final class NeoForgeInfinityCompat implements InfinityCompatBridge {
try {
return InfinityMethods.getRandomId(random);
} catch (Throwable throwable) {
Antarchy.LOGGER.error("[Antarchy] Failed to get a random Infinity dimension id", throwable);
return null;
}
}
@@ -28,6 +30,7 @@ public final class NeoForgeInfinityCompat implements InfinityCompatBridge {
WarpLogic.requestWarp(player, dimensionId, false);
return true;
} catch (Throwable throwable) {
Antarchy.LOGGER.error("[Antarchy] Failed to request an Infinity warp to {}", dimensionId, throwable);
return false;
}
}
@@ -53,6 +53,7 @@ import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
import net.neoforged.neoforge.client.event.RegisterParticleProvidersEvent;
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.extensions.common.IClientItemExtensions;
@@ -68,6 +69,8 @@ public final class AntarchyNeoForgeClient {
private static final ResourceLocation DR_TRAYAURUS_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/dr_trayaurus.png");
private static final ResourceLocation OURANWOOD_BOAT_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/boat/ouranwood.png");
private static final ResourceLocation OURANWOOD_CHEST_BOAT_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/ouranwood.png");
private static final ResourceLocation PEACH_BOAT_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/boat/peach.png");
private static final ResourceLocation PEACH_CHEST_BOAT_TEXTURE = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/entity/chest_boat/peach.png");
private static final ResourceLocation WATER_STILL = ResourceLocation.withDefaultNamespace("block/water_still");
private static final ResourceLocation WATER_FLOW = ResourceLocation.withDefaultNamespace("block/water_flow");
private static final ResourceLocation WATER_OVERLAY = ResourceLocation.withDefaultNamespace("block/water_overlay");
@@ -98,6 +101,8 @@ public final class AntarchyNeoForgeClient {
event.registerEntityRenderer(AntarchyNeoforgeEntites.TRIFFID.get(), context -> withParalyzedGeoLayer(new TriffidRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.OURANWOOD_BOAT_ENTITY.get(), context -> new OuranwoodBoatRenderer<>(context, OURANWOOD_BOAT_TEXTURE, false));
event.registerEntityRenderer(AntarchyNeoforgeEntites.OURANWOOD_CHEST_BOAT_ENTITY.get(), context -> new OuranwoodBoatRenderer<>(context, OURANWOOD_CHEST_BOAT_TEXTURE, true));
event.registerEntityRenderer(AntarchyNeoforgeEntites.PEACH_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, PEACH_BOAT_TEXTURE, false));
event.registerEntityRenderer(AntarchyNeoforgeEntites.PEACH_CHEST_BOAT_ENTITY.get(), context -> new PeachBoatRenderer<>(context, PEACH_CHEST_BOAT_TEXTURE, true));
event.registerEntityRenderer(AntarchyNeoforgeEntites.APPLE_COW.get(), context -> withParalyzedGeoLayer(new AppleCowRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.GOLDEN_APPLE_COW.get(), context -> withParalyzedGeoLayer(new AppleCowRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.ENCHANTED_GOLDEN_APPLE_COW.get(), context -> withParalyzedGeoLayer(new AppleCowRenderer(context)));
@@ -105,6 +110,8 @@ public final class AntarchyNeoForgeClient {
event.registerEntityRenderer(AntarchyNeoforgeEntites.DR_TRAYAURUS.get(), context -> new DrTrayaurusRenderer(context, DR_TRAYAURUS_TEXTURE));
event.registerEntityRenderer(AntarchyNeoforgeEntites.CLOUD_SHARK.get(), context -> withParalyzedGeoLayer(new CloudSharkRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.KRAKEN.get(), context -> withParalyzedGeoLayer(new KrakenRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.TENTACLE.get(), com.craisinlord.antarchy.content.client.renderer.TentacleRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.KRAKENS_GRASP_TRIDENT.get(), ThrownItemRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.MISSILE_SQUID.get(), context -> withParalyzedGeoLayer(new MissileSquidRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.OCTOPUS_BOMB.get(), context -> withParalyzedGeoLayer(new OctopusBombRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.NIGHTMARE.get(), context -> withParalyzedGeoLayer(new NightmareRenderer(context)));
@@ -117,6 +124,7 @@ public final class AntarchyNeoForgeClient {
event.registerEntityRenderer(AntarchyNeoforgeEntites.GROWTH_RAY_PROJECTILE.get(), SizeRayProjectileRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.LUCID_BOLT.get(), LucidBoltRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.LUCID_PEARL_PROJECTILE.get(), ThrownItemRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.KRAKENS_GRASP_TRIDENT.get(), ThrownItemRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.HUSH_PROJECTILE.get(), HushProjectileRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.BRUTALFLY_ORB.get(), BrutalflyOrbRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.UPWARD_FALLING_BLOCK.get(), com.craisinlord.antarchy.content.client.renderer.UpwardFallingBlockRenderer::new);
@@ -125,7 +133,11 @@ public final class AntarchyNeoForgeClient {
event.registerEntityRenderer(AntarchyNeoforgeEntites.TORETERROR.get(), ToreterrorRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.WATER_BOMB.get(), WaterBombRenderer::new);
event.registerEntityRenderer(AntarchyNeoforgeEntites.CHEEP.get(), context -> withParalyzedGeoLayer(new com.craisinlord.antarchy.content.client.renderer.CheepRenderer(context)));
// event.registerEntityRenderer(AntarchyNeoforgeEntites.GLIMMER.get(), context -> withParalyzedGeoLayer(new com.craisinlord.antarchy.content.client.renderer.GlimmerRenderer(context)));
// Dorrie is not part of this update yet.
// event.registerEntityRenderer(AntarchyNeoforgeEntites.DORRIE.get(), context -> new com.craisinlord.antarchy.content.client.renderer.DorrieRenderer(context));
event.registerEntityRenderer(AntarchyNeoforgeEntites.OURANWOOD_DEER.get(), context -> new com.craisinlord.antarchy.content.client.renderer.OuranwoodDeerRenderer(context));
event.registerEntityRenderer(AntarchyNeoforgeEntites.GLIMMER.get(), context -> withParalyzedGeoLayer(new com.craisinlord.antarchy.content.client.renderer.glimmer.GlimmerRenderer(context)));
event.registerEntityRenderer(AntarchyNeoforgeEntites.ELKA.get(), context -> new com.craisinlord.antarchy.content.client.renderer.ElkaRenderer(context));
}
@SubscribeEvent
@@ -152,6 +164,8 @@ public final class AntarchyNeoForgeClient {
public static void registerLayerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) {
event.registerLayerDefinition(OuranwoodBoatRenderer.boatLayer(), BoatModel::createBodyModel);
event.registerLayerDefinition(OuranwoodBoatRenderer.chestBoatLayer(), ChestBoatModel::createBodyModel);
event.registerLayerDefinition(PeachBoatRenderer.boatLayer(), BoatModel::createBodyModel);
event.registerLayerDefinition(PeachBoatRenderer.chestBoatLayer(), ChestBoatModel::createBodyModel);
}
@SuppressWarnings({"rawtypes", "unchecked"})
@@ -192,7 +206,8 @@ public final class AntarchyNeoForgeClient {
event.register(
(state, level, pos, tintIndex) -> level != null && pos != null
? BiomeColors.getAverageGrassColor(level, pos)
: net.minecraft.world.level.GrassColor.getDefaultColor()
: net.minecraft.world.level.GrassColor.getDefaultColor(),
AntarchyNeoforgeBlocks.SPIDER_LILY.get()
);
}
@@ -203,9 +218,11 @@ public final class AntarchyNeoForgeClient {
AntarchyNeoforgeItems.OURANWOOD_LEAVES_ITEM.get()
);
event.register(
(stack, tintIndex) -> net.minecraft.world.level.GrassColor.getDefaultColor()
(stack, tintIndex) -> tintIndex == 0 ? net.minecraft.world.level.GrassColor.getDefaultColor() : -1,
AntarchyNeoforgeItems.SPIDER_LILY_ITEM.get()
);
event.register(new DynamicFluidContainerModel.Colors(), AntarchyNeoforgeItems.ICHOR_BUCKET.get());
event.register(new DynamicFluidContainerModel.Colors(), AntarchyNeoforgeItems.LUMEN_BUCKET.get());
event.register(new DynamicFluidContainerModel.Colors(), AntarchyNeoforgeItems.ANTIWATER_BUCKET.get());
}
@@ -214,6 +231,7 @@ public final class AntarchyNeoForgeClient {
event.registerSpriteSet(AntarchyNeoforgeMisc.DREAM_FIRE_FLAME.get(), DreamFlameParticle.Provider::new);
event.registerSpriteSet(AntarchyNeoforgeMisc.STINKY_GAS.get(), HypnoticGasParticle.Provider::new);
event.registerSpriteSet(AntarchyNeoforgeMisc.STINKY_FLY.get(), FireflyParticle.Provider::new);
event.registerSpriteSet(AntarchyNeoforgeMisc.PEACH_LEAVES_PARTICLE.get(), PeachLeavesParticle.Provider::new);
event.registerSpriteSet(AntarchyNeoforgeMisc.HYPNOTIC_GAS.get(), HypnoticGasParticle.Provider::new);
event.registerSpriteSet(AntarchyNeoforgeMisc.HYPNOTIC_GAS_DOWN.get(), sprites -> new HypnoticGasParticle.Provider(sprites, true));
event.registerSpecial(AntarchyNeoforgeMisc.HYPNOTIC_GAS_CLOUD.get(), new HypnoticGasCloudParticle.Provider());
@@ -226,6 +244,11 @@ public final class AntarchyNeoForgeClient {
event.registerSpriteSet(AntarchyNeoforgeMisc.ORANGE_ASH.get(), OrangeAshParticle.Provider::new);
}
@SubscribeEvent
public static void registerMenuScreens(RegisterMenuScreensEvent event) {
event.register(AntarchyNeoforgeMisc.DORRIE_INVENTORY_MENU.get(), com.craisinlord.antarchy.content.client.screen.DorrieInventoryScreen::new);
}
@SubscribeEvent
public static void registerGuiLayers(RegisterGuiLayersEvent event) {
event.registerAboveAll(
@@ -261,6 +284,50 @@ public final class AntarchyNeoForgeClient {
@SubscribeEvent
public static void registerClientExtensions(RegisterClientExtensionsEvent event) {
Antarchy.LOGGER.info("[Antiwater] Registering antiwater client fluid textures still={} flow={}", ANTIWATER_STILL, ANTIWATER_FLOW);
event.registerFluidType(new IClientFluidTypeExtensions() {
@Override
public ResourceLocation getStillTexture() {
return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/lumen_still");
}
@Override
public ResourceLocation getFlowingTexture() {
return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "block/lumen_flow");
}
@Override
public ResourceLocation getOverlayTexture() {
return WATER_OVERLAY;
}
@Override
public ResourceLocation getRenderOverlayTexture(Minecraft mc) {
return UNDERWATER_OVERLAY;
}
@Override
public int getTintColor() {
return 0xFFFFFFFF;
}
@Override
public int getTintColor(FluidState state, BlockAndTintGetter getter, net.minecraft.core.BlockPos pos) {
return 0xFFFFFFFF;
}
@Override
public Vector3f modifyFogColor(Camera camera, float partialTick, ClientLevel level, int renderDistance, float darkenWorldAmount, Vector3f fluidFogColor) {
return new Vector3f(0.58F, 0.84F, 0.88F);
}
@Override
public void modifyFogRender(Camera camera, net.minecraft.client.renderer.FogRenderer.FogMode mode, float renderDistance, float partialTick, float nearDistance, float farDistance, FogShape shape) {
RenderSystem.setShaderFogStart(0.4F);
RenderSystem.setShaderFogEnd(Math.min(farDistance, 12.0F));
RenderSystem.setShaderFogShape(FogShape.CYLINDER);
}
}, AntarchyNeoForgeFluidTypes.LUMEN_TYPE.get());
event.registerFluidType(new IClientFluidTypeExtensions() {
@Override
public ResourceLocation getStillTexture() {
@@ -405,6 +472,7 @@ public final class AntarchyNeoForgeClient {
registerGeoItemExtensionSizeRay(event, AntarchyNeoforgeItems.GROWTH_RAY.get());
registerGeoItemExtension(event, AntarchyNeoforgeItems.GRAVITY_GUN.get(), HumanoidModel.ArmPose.CROSSBOW_HOLD);
registerGeoItemExtension(event, AntarchyNeoforgeItems.SQUIDZOOKA.get(), HumanoidModel.ArmPose.CROSSBOW_HOLD);
registerGeoItemExtension(event, AntarchyNeoforgeItems.RPO_LAUNCHER.get(), HumanoidModel.ArmPose.CROSSBOW_HOLD);
registerGeoItemExtension(event, AntarchyNeoforgeItems.WATER_CANNON.get(), HumanoidModel.ArmPose.CROSSBOW_HOLD);
registerGeoItemExtension(event, AntarchyNeoforgeItems.BATTLE_AXE.get());
registerGeoItemExtension(event, AntarchyNeoforgeItems.BIG_BERTHA.get());
@@ -417,16 +485,32 @@ public final class AntarchyNeoForgeClient {
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.OURANWOOD_DOOR.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.OURANWOOD_TRAPDOOR.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.OURANWOOD_ACORN_BLOCK.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.PEACH_LEAVES.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.PEACH_HANGING_PEACH.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.PEACH_DOOR.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.PEACH_TRAPDOOR.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.PEACH_SAPLING.get(), RenderType.cutout());
// ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.OURANWOOD_VINE.get(), RenderType.cutout());
// ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.OURANWOOD_VINE_PLANT.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DUPLICATOR_SAPLING.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ORANGE_MILKWEED.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.PINK_MILKWEED.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CAMELLIA.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.SPIDER_LILY.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.GIANT_LILY_PAD.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.HUSHWEED.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CORNEA_STALK.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.CORN_CROP.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.WILD_CORN.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ANTIMETAL_SCAFFOLDING.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.UMBRAL_MOSS_CARPET.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.NYXITE_SPIKE.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.STAR_CORAL.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.STAR_CORAL_FAN.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.STAR_CORAL_WALL_FAN.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL_FAN.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL_WALL_FAN.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.SMALL_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.MEDIUM_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.LARGE_BLOOD_CRYSTAL_BUD.get(), RenderType.cutout());
@@ -438,6 +522,7 @@ public final class AntarchyNeoForgeClient {
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DREAM_FIRE.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.DREAM_CEILING_FIRE.get(), RenderType.cutout());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ANTIWATER_BLOCK.get(), RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.LUMEN_BLOCK.get(), RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.ELYTHIA_PORTAL.get(), RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.THORAXIS_PORTAL.get(), RenderType.translucent());
ItemBlockRenderTypes.setRenderLayer(AntarchyNeoforgeBlocks.TRIFFID_GOO_BLOCK.get(), RenderType.translucent());
@@ -0,0 +1,64 @@
package com.craisinlord.antarchy.neoforge.content.block;
import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.block.CornCropBlock;
import com.mojang.serialization.MapCodec;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
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.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf;
public final class WildCornBlock extends CornCropBlock {
public static final MapCodec<CornCropBlock> CODEC = Block.simpleCodec(WildCornBlock::new);
public WildCornBlock(BlockBehaviour.Properties properties) {
super(properties);
this.registerDefaultState(this.stateDefinition.any().setValue(AGE, 3).setValue(HALF, DoubleBlockHalf.LOWER));
}
@Override
public MapCodec<CornCropBlock> codec() {
return CODEC;
}
@Override
protected boolean mayPlaceOn(BlockState state, BlockGetter level, BlockPos pos) {
return state.is(Blocks.GRASS_BLOCK);
}
@Override
protected boolean isRandomlyTicking(BlockState state) {
return false;
}
@Override
protected void randomTick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) {
}
@Override
public boolean isValidBonemealTarget(LevelReader level, BlockPos pos, BlockState state) {
return false;
}
@Override
public boolean isBonemealSuccess(Level level, RandomSource random, BlockPos pos, BlockState state) {
return false;
}
@Override
public void performBonemeal(ServerLevel level, RandomSource random, BlockPos pos, BlockState state) {
}
@Override
public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state) {
return new ItemStack(AntarchyObjects.CORN.get());
}
}
@@ -1,37 +0,0 @@
package com.craisinlord.antarchy.neoforge.mixins.infinity;
import net.lerariemann.infinity.dimensions.features.fluid_springs.RandomSpring;
import net.lerariemann.infinity.util.core.ConfigType;
import net.lerariemann.infinity.util.core.RandomProvider;
import net.minecraft.nbt.CompoundTag;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
import java.util.Random;
@Mixin(value = RandomSpring.class, remap = false)
/*
* Skips bad fluid picks for Infinity random springs.
*/
public abstract class RandomSpringMixin {
@Redirect(
method = "feature()Lnet/minecraft/nbt/CompoundTag;",
at = @At(
value = "INVOKE",
target = "Lnet/lerariemann/infinity/util/core/RandomProvider;randomName(Ljava/util/Random;Lnet/lerariemann/infinity/util/core/ConfigType;)Ljava/lang/String;"
),
remap = false
)
private String antarchy$useFluidIdForSpring(RandomProvider provider, Random random, ConfigType configType) {
if (configType != ConfigType.FLUIDS) {
return provider.randomName(random, configType);
}
CompoundTag fluidTag = provider.randomElement(random, configType);
String fluidId = fluidTag.getString("fluidName");
if (!fluidId.isEmpty()) {
return fluidId;
}
return fluidTag.getString("Name");
}
}
@@ -4,6 +4,7 @@ import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.CustomBrewingRecipes;
import com.craisinlord.antarchy.content.block.DuctTapeBlock;
import com.craisinlord.antarchy.content.block.PotentNyxiteBlock;
import com.craisinlord.antarchy.content.bloodglass.BloodglassAccess;
@@ -36,6 +37,7 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.tags.FluidTags;
import net.minecraft.world.item.*;
import net.minecraft.world.item.alchemy.Potions;
import net.neoforged.neoforge.common.brewing.BrewingRecipe;
import net.minecraft.world.level.block.ComposterBlock;
import net.minecraft.world.level.block.DispenserBlock;
import net.minecraft.world.level.block.RotatedPillarBlock;
@@ -57,6 +59,8 @@ import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
import net.neoforged.neoforge.event.level.BlockEvent;
import net.neoforged.neoforge.event.tick.EntityTickEvent;
import net.neoforged.neoforge.event.tick.PlayerTickEvent;
import net.neoforged.neoforge.event.tick.ServerTickEvent;
import com.craisinlord.antarchy.content.item.MinersDreamExcavationManager;
import net.neoforged.neoforge.fluids.FluidInteractionRegistry;
import net.neoforged.neoforge.network.PacketDistributor;
@@ -91,6 +95,7 @@ public final class AntarchyNeoForgeEvents {
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickDreadAndIchor);
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickScorpionWhips);
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickDreamSandLowGravity);
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::tickMinersDreamExcavations);
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleAntiwaterDamage);
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleAntiwaterFall);
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleDreamSandFall);
@@ -457,15 +462,19 @@ public final class AntarchyNeoForgeEvents {
if (player.level().isClientSide()) return;
BloodglassAccess access = (BloodglassAccess) player;
int shieldCount = Math.min(
int targetCap = Math.min(
event.getEffectInstance().getAmplifier() + 1,
Math.max(0, AntarchySettings.bloodCrystalHardMaxShields()
- access.antarchy$getArmorShieldsActive() - access.antarchy$getArmorShieldLostCount())
);
access.antarchy$setAppleShieldsActive(shieldCount);
access.antarchy$setAppleShieldLostCount(0);
access.antarchy$setAppleRechargeTimer(0);
syncBloodglass((ServerPlayer) player);
int currentCap = access.antarchy$getAppleShieldsActive() + access.antarchy$getAppleShieldLostCount();
// Only grant newly-added capacity (e.g. first application, or a higher amplifier).
// A mere duration refresh of an already-active ward must not reset shields that are
// already lost, nor restart their recharge timer.
if (targetCap > currentCap) {
access.antarchy$setAppleShieldsActive(access.antarchy$getAppleShieldsActive() + (targetCap - currentCap));
syncBloodglass((ServerPlayer) player);
}
}
private static void clearAppleShields(Player player) {
@@ -859,6 +868,12 @@ public final class AntarchyNeoForgeEvents {
}
}
static void tickMinersDreamExcavations(ServerTickEvent.Post event) {
for (ServerLevel level : event.getServer().getAllLevels()) {
MinersDreamExcavationManager.tick(level);
}
}
static void tickDreamSandLowGravity(EntityTickEvent.Post event) {
if (!(event.getEntity() instanceof LivingEntity livingEntity)) {
return;
@@ -971,6 +986,50 @@ public final class AntarchyNeoForgeEvents {
}
static void registerBrewingRecipes(RegisterBrewingRecipesEvent event) {
net.minecraft.tags.TagKey<net.minecraft.world.item.Item> rootsTag = net.minecraft.tags.TagKey.create(
net.minecraft.core.registries.Registries.ITEM,
net.minecraft.resources.ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "roots")
);
event.getBuilder().addRecipe(new BrewingRecipe(
net.minecraft.world.item.crafting.Ingredient.of(Items.POTION),
net.minecraft.world.item.crafting.Ingredient.of(AntarchyNeoforgeItems.CORN.get()),
new ItemStack(AntarchyNeoforgeItems.HIGH_FRUCTOSE_CORN_SYRUP.get())
) {
@Override
public boolean isInput(ItemStack stack) {
return stack.is(Items.POTION) && stack.getOrDefault(net.minecraft.core.component.DataComponents.POTION_CONTENTS, net.minecraft.world.item.alchemy.PotionContents.EMPTY).is(net.minecraft.world.item.alchemy.Potions.WATER);
}
@Override
public boolean isIngredient(ItemStack stack) {
return stack.is(AntarchyNeoforgeItems.CORN.get());
}
@Override
public ItemStack getOutput(ItemStack input, ItemStack ingredient) {
return CustomBrewingRecipes.getOutput(input, ingredient);
}
});
event.getBuilder().addRecipe(new BrewingRecipe(
net.minecraft.world.item.crafting.Ingredient.of(AntarchyNeoforgeItems.HIGH_FRUCTOSE_CORN_SYRUP.get()),
net.minecraft.world.item.crafting.Ingredient.of(rootsTag),
new ItemStack(AntarchyNeoforgeItems.ROOT_BEER.get())
) {
@Override
public boolean isInput(ItemStack stack) {
return stack.is(AntarchyNeoforgeItems.HIGH_FRUCTOSE_CORN_SYRUP.get());
}
@Override
public boolean isIngredient(ItemStack stack) {
return stack.is(rootsTag);
}
@Override
public ItemStack getOutput(ItemStack input, ItemStack ingredient) {
return CustomBrewingRecipes.getOutput(input, ingredient);
}
});
event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.LUCID_EYE.get(), AntarchyNeoforgeMisc.INVERSION);
event.getBuilder().addMix(AntarchyNeoforgeMisc.INVERSION, Items.REDSTONE, AntarchyNeoforgeMisc.LONG_INVERSION);
event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.STINK_BUG.get(), AntarchyNeoforgeMisc.STINKY_POTION);
@@ -1075,6 +1134,16 @@ public final class AntarchyNeoForgeEvents {
if (state.is(AntarchyNeoforgeBlocks.MOSSY_OURANWOOD_WOOD.get())) {
event.setFinalState(AntarchyNeoforgeBlocks.STRIPPED_OURANWOOD_WOOD.get().defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS)));
return;
}
if (state.is(AntarchyNeoforgeBlocks.PEACH_LOG.get())) {
event.setFinalState(AntarchyNeoforgeBlocks.STRIPPED_PEACH_LOG.get().defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS)));
return;
}
if (state.is(AntarchyNeoforgeBlocks.PEACH_WOOD.get())) {
event.setFinalState(AntarchyNeoforgeBlocks.STRIPPED_PEACH_WOOD.get().defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS)));
}
}
@@ -1084,6 +1153,7 @@ public final class AntarchyNeoForgeEvents {
DispenserBlock.registerBehavior(AntarchyNeoforgeItems.SHRINK_RAY.get(), new com.craisinlord.antarchy.content.SizeRayDispenseBehavior());
DispenserBlock.registerBehavior(AntarchyNeoforgeItems.GROWTH_RAY.get(), new com.craisinlord.antarchy.content.SizeRayDispenseBehavior());
DispenserBlock.registerBehavior(AntarchyNeoforgeItems.SQUIDZOOKA.get(), new com.craisinlord.antarchy.content.SquidzookaDispenseBehavior());
DispenserBlock.registerBehavior(AntarchyNeoforgeItems.RPO_LAUNCHER.get(), new com.craisinlord.antarchy.content.RpoLauncherDispenseBehavior());
DispenserBlock.registerBehavior(AntarchyNeoforgeItems.WATER_CANNON.get(), new com.craisinlord.antarchy.content.WaterCannonDispenseBehavior());
LucidEyeProjectileEntity.defaultItemSupplier = () -> AntarchyNeoforgeItems.LUCID_PEARL.get();
LucidEntity.invertedEffectSupplier = () -> AntarchyNeoforgeMisc.INVERTED;
@@ -1119,8 +1189,15 @@ public final class AntarchyNeoForgeEvents {
);
ComposterBlock.COMPOSTABLES.put(AntarchyNeoforgeBlocks.UMBRAL_MOSS_BLOCK.get().asItem(), 0.65f);
ComposterBlock.COMPOSTABLES.put(AntarchyNeoforgeBlocks.UMBRAL_MOSS_CARPET.get().asItem(), 0.3f);
ComposterBlock.COMPOSTABLES.put(AntarchyNeoforgeBlocks.BLUSH_MOSS_BLOCK.get().asItem(), 0.65f);
ComposterBlock.COMPOSTABLES.put(AntarchyNeoforgeBlocks.BLUSH_MOSS_CARPET.get().asItem(), 0.3f);
ComposterBlock.COMPOSTABLES.put(AntarchyNeoforgeBlocks.HUSHWEED.get().asItem(), 0.65f);
ComposterBlock.COMPOSTABLES.put(AntarchyNeoforgeItems.CORNEA_EAR.get(), 0.65f);
ComposterBlock.COMPOSTABLES.put(AntarchyNeoforgeBlocks.PEACH_LEAVES.get().asItem(), 0.3f);
ComposterBlock.COMPOSTABLES.put(AntarchyNeoforgeItems.PEACH_SAPLING_ITEM.get(), 0.3f);
ComposterBlock.COMPOSTABLES.put(AntarchyNeoforgeItems.CORN.get(), 0.65f);
ComposterBlock.COMPOSTABLES.put(AntarchyNeoforgeItems.CORN_SEEDS.get(), 0.3f);
ComposterBlock.COMPOSTABLES.put(AntarchyNeoforgeItems.PEACH.get(), 0.65f);
});
}
}
@@ -10,8 +10,10 @@ import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity;
import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity;
import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity;
import com.craisinlord.antarchy.content.fluid.BileLiquidBlock;
import com.craisinlord.antarchy.content.fluid.LumenLiquidBlock;
import com.craisinlord.antarchy.content.portal.PermanentPortalType;
import com.craisinlord.antarchy.neoforge.OuranwoodWoodTypes;
import com.craisinlord.antarchy.neoforge.content.block.WildCornBlock;
import com.craisinlord.antarchy.neoforge.AntarchyWoodTypes;
import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluidType;
import com.mojang.serialization.MapCodec;
import net.minecraft.core.Direction;
@@ -83,14 +85,60 @@ public final class AntarchyNeoforgeBlocks {
() -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY)));
public static final DeferredBlock<MilkweedBlock> PINK_MILKWEED = BLOCKS.register("pink_milkweed",
() -> new MilkweedBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY)));
public static final DeferredBlock<com.craisinlord.antarchy.content.block.CamelliaBlock> CAMELLIA = BLOCKS.register("camellia",
() -> new com.craisinlord.antarchy.content.block.CamelliaBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.PEONY)));
public static final DeferredBlock<com.craisinlord.antarchy.content.block.SpiderLilyBlock> SPIDER_LILY = BLOCKS.register("spider_lily",
() -> new com.craisinlord.antarchy.content.block.SpiderLilyBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.POPPY)));
public static final DeferredBlock<GiantLilyPadBlock> GIANT_LILY_PAD = BLOCKS.register("giant_lily_pad",
() -> new GiantLilyPadBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.LILY_PAD)));
public static final DeferredBlock<StandingSignBlock> OURANWOOD_SIGN = BLOCKS.register("ouranwood_sign",
() -> new StandingSignBlock(OuranwoodWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN)));
() -> new StandingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN)));
public static final DeferredBlock<WallSignBlock> OURANWOOD_WALL_SIGN = BLOCKS.register("ouranwood_wall_sign",
() -> new WallSignBlock(OuranwoodWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN)));
() -> new WallSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN)));
public static final DeferredBlock<CeilingHangingSignBlock> OURANWOOD_HANGING_SIGN = BLOCKS.register("ouranwood_hanging_sign",
() -> new CeilingHangingSignBlock(OuranwoodWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN)));
() -> new CeilingHangingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN)));
public static final DeferredBlock<WallHangingSignBlock> OURANWOOD_WALL_HANGING_SIGN = BLOCKS.register("ouranwood_wall_hanging_sign",
() -> new WallHangingSignBlock(OuranwoodWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN)));
() -> new WallHangingSignBlock(AntarchyWoodTypes.OURANWOOD, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN)));
public static final DeferredBlock<RotatedPillarBlock> PEACH_LOG = BLOCKS.register("peach_log",
() -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LOG)));
public static final DeferredBlock<RotatedPillarBlock> PEACH_WOOD = BLOCKS.register("peach_wood",
() -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WOOD)));
public static final DeferredBlock<RotatedPillarBlock> STRIPPED_PEACH_LOG = BLOCKS.register("stripped_peach_log",
() -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_LOG)));
public static final DeferredBlock<RotatedPillarBlock> STRIPPED_PEACH_WOOD = BLOCKS.register("stripped_peach_wood",
() -> new RotatedPillarBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.STRIPPED_JUNGLE_WOOD)));
public static final DeferredBlock<Block> PEACH_PLANKS = BLOCKS.register("peach_planks",
() -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PLANKS)));
public static final DeferredBlock<StairBlock> PEACH_STAIRS = BLOCKS.register("peach_stairs",
() -> new StairBlock(PEACH_PLANKS.get().defaultBlockState(), BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_STAIRS)));
public static final DeferredBlock<SlabBlock> PEACH_SLAB = BLOCKS.register("peach_slab",
() -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SLAB)));
public static final DeferredBlock<FenceBlock> PEACH_FENCE = BLOCKS.register("peach_fence",
() -> new FenceBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE)));
public static final DeferredBlock<FenceGateBlock> PEACH_FENCE_GATE = BLOCKS.register("peach_fence_gate",
() -> new FenceGateBlock(WoodType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_FENCE_GATE)));
public static final DeferredBlock<DoorBlock> PEACH_DOOR = BLOCKS.register("peach_door",
() -> new DoorBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_DOOR)));
public static final DeferredBlock<TrapDoorBlock> PEACH_TRAPDOOR = BLOCKS.register("peach_trapdoor",
() -> new TrapDoorBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_TRAPDOOR)));
public static final DeferredBlock<PressurePlateBlock> PEACH_PRESSURE_PLATE = BLOCKS.register("peach_pressure_plate",
() -> new PressurePlateBlock(BlockSetType.JUNGLE, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_PRESSURE_PLATE)));
public static final DeferredBlock<ButtonBlock> PEACH_BUTTON = BLOCKS.register("peach_button",
() -> new ButtonBlock(BlockSetType.JUNGLE, 30, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_BUTTON)));
public static final DeferredBlock<PeachLeavesBlock> PEACH_LEAVES = BLOCKS.register("peach_leaves",
() -> new PeachLeavesBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_LEAVES).randomTicks()));
public static final DeferredBlock<HangingPeachBlock> PEACH_HANGING_PEACH = BLOCKS.register("hanging_peach",
() -> new HangingPeachBlock(BlockBehaviour.Properties.of().noOcclusion().instabreak()));
public static final DeferredBlock<com.craisinlord.antarchy.content.block.PeachSaplingBlock> PEACH_SAPLING = BLOCKS.register("peach_sapling",
() -> new com.craisinlord.antarchy.content.block.PeachSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission()));
public static final DeferredBlock<StandingSignBlock> PEACH_SIGN = BLOCKS.register("peach_sign",
() -> new StandingSignBlock(AntarchyWoodTypes.PEACH, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_SIGN)));
public static final DeferredBlock<WallSignBlock> PEACH_WALL_SIGN = BLOCKS.register("peach_wall_sign",
() -> new WallSignBlock(AntarchyWoodTypes.PEACH, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_SIGN)));
public static final DeferredBlock<CeilingHangingSignBlock> PEACH_HANGING_SIGN = BLOCKS.register("peach_hanging_sign",
() -> new CeilingHangingSignBlock(AntarchyWoodTypes.PEACH, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_HANGING_SIGN)));
public static final DeferredBlock<WallHangingSignBlock> PEACH_WALL_HANGING_SIGN = BLOCKS.register("peach_wall_hanging_sign",
() -> new WallHangingSignBlock(AntarchyWoodTypes.PEACH, BlockBehaviour.Properties.ofFullCopy(Blocks.JUNGLE_WALL_HANGING_SIGN)));
public static final DeferredBlock<DuplicatorSaplingBlock> DUPLICATOR_SAPLING = BLOCKS.register("duplicator_sapling",
() -> new DuplicatorSaplingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.OAK_SAPLING).randomTicks().noCollission()));
public static final DeferredBlock<DuctTapeBlock> DUCT_TAPE = BLOCKS.register("duct_tape",
@@ -189,6 +237,10 @@ public final class AntarchyNeoforgeBlocks {
() -> new UmbralMossBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_BLOCK)));
public static final DeferredBlock<UmbralMossCarpetBlock> UMBRAL_MOSS_CARPET = BLOCKS.register("umbral_moss_carpet",
() -> new UmbralMossCarpetBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_CARPET).noOcclusion()));
public static final DeferredBlock<BlushMossBlock> BLUSH_MOSS_BLOCK = BLOCKS.register("blush_moss_block",
() -> new BlushMossBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_BLOCK)));
public static final DeferredBlock<BlushMossCarpetBlock> BLUSH_MOSS_CARPET = BLOCKS.register("blush_moss_carpet",
() -> new BlushMossCarpetBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.MOSS_CARPET).noOcclusion()));
public static final DeferredBlock<DreamTorchBlock> DREAM_TORCH = BLOCKS.register("dream_torch",
() -> new DreamTorchBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SOUL_TORCH)));
public static final DeferredBlock<DreamWallTorchBlock> DREAM_WALL_TORCH = BLOCKS.register("dream_wall_torch",
@@ -224,6 +276,13 @@ public final class AntarchyNeoforgeBlocks {
public static final DeferredBlock<LiquidBlock> ANTIWATER_BLOCK = BLOCKS.register("antiwater",
() -> new com.craisinlord.antarchy.content.fluid.AntiwaterLiquidBlock((FlowingFluid) AntarchyNeoforgeMisc.ANTIWATER.get(),
BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).noLootTable()));
public static final DeferredBlock<LiquidBlock> LUMEN_BLOCK = BLOCKS.register("lumen",
() -> new LumenLiquidBlock((FlowingFluid) AntarchyNeoforgeMisc.LUMEN.get(),
BlockBehaviour.Properties.ofFullCopy(Blocks.WATER).lightLevel(state -> 9).noLootTable()));
public static final DeferredBlock<Block> LUMEN_FROGLIGHT = BLOCKS.register("lumen_froglight",
() -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.OCHRE_FROGLIGHT)));
public static final DeferredBlock<Block> ROSEATE_FROGLIGHT = BLOCKS.register("roseate_froglight",
() -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.OCHRE_FROGLIGHT)));
public static final DeferredBlock<AntNestBlock> RED_ANT_NEST = BLOCKS.register("red_ant_nest",
() -> new AntNestBlock(
AntarchyNeoforgeEntites.RED_ANT,
@@ -291,6 +350,10 @@ public final class AntarchyNeoforgeBlocks {
() -> new com.craisinlord.antarchy.content.block.AntimetalScaffoldingBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SCAFFOLDING)));
public static final DeferredBlock<CorneaStalkBlock> CORNEA_STALK = BLOCKS.register("cornea_stalk",
() -> new CorneaStalkBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SWEET_BERRY_BUSH).randomTicks()));
public static final DeferredBlock<CornCropBlock> CORN_CROP = BLOCKS.register("corn_crop",
() -> new CornCropBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.WHEAT).randomTicks().noCollission().noOcclusion()));
public static final DeferredBlock<WildCornBlock> WILD_CORN = BLOCKS.register("wild_corn",
() -> new WildCornBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.WHEAT).noCollission().noOcclusion()));
public static final DeferredBlock<Block> FALLEN_KING_CROWN = BLOCKS.register("fallen_king_crown",
() -> new Block(BlockBehaviour.Properties.of()
.strength(0.2F)
@@ -338,6 +401,22 @@ public final class AntarchyNeoforgeBlocks {
() -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SMOOTH_SANDSTONE_SLAB)));
public static final DeferredBlock<SlabBlock> CUT_DREAM_SANDSTONE_SLAB = BLOCKS.register("cut_dream_sandstone_slab",
() -> new SlabBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.CUT_SANDSTONE_SLAB)));
public static final DeferredBlock<Block> DEAD_STAR_CORAL_BLOCK = BLOCKS.register("dead_star_coral_block",
() -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_BLOCK)));
public static final DeferredBlock<net.minecraft.world.level.block.BaseCoralPlantBlock> DEAD_STAR_CORAL = BLOCKS.register("dead_star_coral",
() -> new net.minecraft.world.level.block.BaseCoralPlantBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL)));
public static final DeferredBlock<net.minecraft.world.level.block.BaseCoralFanBlock> DEAD_STAR_CORAL_FAN = BLOCKS.register("dead_star_coral_fan",
() -> new net.minecraft.world.level.block.BaseCoralFanBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_FAN)));
public static final DeferredBlock<net.minecraft.world.level.block.BaseCoralWallFanBlock> DEAD_STAR_CORAL_WALL_FAN = BLOCKS.register("dead_star_coral_wall_fan",
() -> new net.minecraft.world.level.block.BaseCoralWallFanBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_WALL_FAN)));
public static final DeferredBlock<Block> STAR_CORAL_BLOCK = BLOCKS.register("star_coral_block",
() -> new com.craisinlord.antarchy.content.block.StarCoralBlock(DEAD_STAR_CORAL_BLOCK.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_BLOCK).lightLevel(state -> 8)));
public static final DeferredBlock<com.craisinlord.antarchy.content.block.StarCoralPlantBlock> STAR_CORAL = BLOCKS.register("star_coral",
() -> new com.craisinlord.antarchy.content.block.StarCoralPlantBlock(DEAD_STAR_CORAL.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL).lightLevel(state -> 8)));
public static final DeferredBlock<com.craisinlord.antarchy.content.block.StarCoralFanBlock> STAR_CORAL_FAN = BLOCKS.register("star_coral_fan",
() -> new com.craisinlord.antarchy.content.block.StarCoralFanBlock(DEAD_STAR_CORAL_FAN.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_FAN).lightLevel(state -> 8)));
public static final DeferredBlock<com.craisinlord.antarchy.content.block.StarCoralWallFanBlock> STAR_CORAL_WALL_FAN = BLOCKS.register("star_coral_wall_fan",
() -> new com.craisinlord.antarchy.content.block.StarCoralWallFanBlock(DEAD_STAR_CORAL_WALL_FAN.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.TUBE_CORAL_WALL_FAN).lightLevel(state -> 8)));
// Block entity types
public static final DeferredHolder<BlockEntityType<?>, BlockEntityType<AntNestBlockEntity>> ANT_NEST_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register("ant_nest",
@@ -2,6 +2,7 @@ package com.craisinlord.antarchy.neoforge.registry;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.item.ultimate.UltimateGearHelper;
import com.craisinlord.antarchy.content.CreativeTabOrder;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.item.*;
@@ -10,7 +11,6 @@ import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent;
import net.neoforged.neoforge.registries.DeferredHolder;
import net.neoforged.neoforge.registries.DeferredRegister;
import java.util.Comparator;
public class AntarchyNeoforgeCreativeModeTabs {
private AntarchyNeoforgeCreativeModeTabs() {}
@@ -37,14 +37,16 @@ public class AntarchyNeoforgeCreativeModeTabs {
Item item = holder.get();
if (item != Items.AIR) sortedItems.add(item);
}
sortedItems.sort(Comparator
.<Item>comparingInt(AntarchyNeoforgeCreativeModeTabs::creativeTabGroup)
.thenComparing(item -> BuiltInRegistries.ITEM.getKey(item).getPath()));
int n = sortedItems.size();
for (int i = Math.max(0, n - 20); i < n; i++) {
Item it = sortedItems.get(i);
}
sortedItems.forEach(event::accept);
sortedItems.sort(CreativeTabOrder.COMPARATOR);
sortedItems.forEach(item -> {
if (item == AntarchyNeoforgeItems.GLIMMER_BOTTLE.get()) {
for (com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant variant : com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.values()) {
event.accept(com.craisinlord.antarchy.content.item.GlimmerBottleItem.create(variant));
}
} else {
event.accept(item);
}
});
}
if (event.getTabKey() == CreativeModeTabs.SPAWN_EGGS) {
@@ -79,16 +81,26 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.accept(AntarchyNeoforgeItems.BASILISK_SPAWN_EGG.get());
event.accept(AntarchyNeoforgeItems.EMPEROR_SCORPION_SPAWN_EGG.get());
event.accept(AntarchyNeoforgeItems.TORETERROR_SPAWN_EGG.get());
// Dorrie is not part of this update yet.
// event.accept(AntarchyNeoforgeItems.DORRIE_SPAWN_EGG.get());
event.accept(AntarchyNeoforgeItems.OURANWOOD_DEER_SPAWN_EGG.get());
event.accept(AntarchyNeoforgeItems.GLIMMER_SPAWN_EGG.get());
event.accept(AntarchyNeoforgeItems.ELKA_SPAWN_EGG.get());
}
if (event.getTabKey() == CreativeModeTabs.NATURAL_BLOCKS) {
event.accept(AntarchyNeoforgeItems.OURANWOOD_LEAVES_ITEM.get());
event.accept(AntarchyNeoforgeItems.OURANWOOD_ACORN.get());
event.accept(AntarchyNeoforgeItems.PEACH_LEAVES_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_SAPLING_ITEM.get());
// event.accept(AntarchyNeoforgeItems.OURANWOOD_VINE_ITEM.get());
event.accept(AntarchyNeoforgeItems.DUPLICATOR_LOG_ITEM.get());
event.accept(AntarchyNeoforgeItems.DUPLICATOR_SAPLING_ITEM.get());
event.accept(AntarchyNeoforgeItems.ORANGE_MILKWEED_ITEM.get());
event.accept(AntarchyNeoforgeItems.PINK_MILKWEED_ITEM.get());
event.accept(AntarchyNeoforgeItems.CAMELLIA_ITEM.get());
event.accept(AntarchyNeoforgeItems.SPIDER_LILY_ITEM.get());
event.accept(AntarchyNeoforgeItems.GIANT_LILY_PAD_ITEM.get());
event.accept(AntarchyNeoforgeItems.HUSHWEED_ITEM.get());
event.accept(AntarchyNeoforgeItems.INFESTED_ROOTED_DIRT_ITEM.get());
event.accept(AntarchyNeoforgeItems.INFESTED_COARSE_DIRT_ITEM.get());
@@ -102,6 +114,15 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.accept(AntarchyNeoforgeItems.DEEPSLATE_URANIUM_ORE_ITEM.get());
event.accept(AntarchyNeoforgeItems.TITANIUM_ORE_ITEM.get());
event.accept(AntarchyNeoforgeItems.DEEPSLATE_TITANIUM_ORE_ITEM.get());
event.accept(AntarchyNeoforgeItems.LUMEN_FROGLIGHT_ITEM.get());
event.accept(AntarchyNeoforgeItems.ROSEATE_FROGLIGHT_ITEM.get());
event.accept(AntarchyNeoforgeItems.CORN_SEEDS.get());
event.accept(AntarchyNeoforgeItems.STAR_CORAL_ITEM.get());
event.accept(AntarchyNeoforgeItems.STAR_CORAL_FAN_ITEM.get());
event.accept(AntarchyNeoforgeItems.STAR_CORAL_BLOCK_ITEM.get());
event.accept(AntarchyNeoforgeItems.DEAD_STAR_CORAL_ITEM.get());
event.accept(AntarchyNeoforgeItems.DEAD_STAR_CORAL_FAN_ITEM.get());
event.accept(AntarchyNeoforgeItems.DEAD_STAR_CORAL_BLOCK_ITEM.get());
}
if (event.getTabKey() == CreativeModeTabs.TOOLS_AND_UTILITIES) {
@@ -109,6 +130,7 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.insertAfter(new ItemStack(Items.MINECART), new ItemStack(AntarchyNeoforgeItems.DIAMOND_MINECART_ITEM.get()), CreativeModeTab.TabVisibility.PARENT_AND_SEARCH_TABS);
event.accept(AntarchyNeoforgeItems.ICHOR_BUCKET.get());
event.accept(AntarchyNeoforgeItems.ANTIWATER_BUCKET.get());
event.accept(AntarchyNeoforgeItems.LUMEN_BUCKET.get());
event.accept(AntarchyNeoforgeItems.CLOUD_BUCKET.get());
event.accept(AntarchyNeoforgeItems.REVERIE_BOTTLE.get());
event.accept(AntarchyNeoforgeItems.ULTIMATE_PICKAXE.get());
@@ -136,6 +158,7 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.accept(AntarchyNeoforgeItems.LUCID_EYE.get());
event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_SHARD.get());
event.accept(AntarchyNeoforgeItems.BLOOD_CRYSTAL_APPLE.get());
event.accept(AntarchyNeoforgeItems.SPIRIT_APPLE.get());
event.accept(AntarchyNeoforgeItems.MANTIS_CLAW.get());
event.accept(AntarchyNeoforgeItems.KING_SCALE.get());
event.accept(AntarchyNeoforgeItems.QUEEN_SCALE.get());
@@ -146,8 +169,20 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.accept(AntarchyNeoforgeItems.VORTEX_EYE.get());
event.accept(AntarchyNeoforgeItems.EMPEROR_SCORPION_STINGER.get());
event.accept(AntarchyNeoforgeItems.KRAKEN_TOOTH.get());
event.accept(AntarchyNeoforgeItems.KRAKEN_TENTACLE.get());
event.accept(AntarchyNeoforgeItems.JUMPY_BUG_LEG.get());
event.accept(AntarchyNeoforgeItems.CORNEA_EAR.get());
event.accept(AntarchyNeoforgeItems.CORN.get());
event.accept(AntarchyNeoforgeItems.HIGH_FRUCTOSE_CORN_SYRUP.get());
event.accept(AntarchyNeoforgeItems.PEACH.get());
event.accept(AntarchyNeoforgeItems.PEACH_PIE.get());
event.accept(AntarchyNeoforgeItems.CORNBREAD.get());
event.accept(AntarchyNeoforgeItems.POPCORN.get());
event.accept(AntarchyNeoforgeItems.RAW_CORNDOG.get());
event.accept(AntarchyNeoforgeItems.COOKED_CORNDOG.get());
event.accept(AntarchyNeoforgeItems.RAW_VENISON.get());
event.accept(AntarchyNeoforgeItems.COOKED_VENISON.get());
event.accept(AntarchyNeoforgeItems.ROOT_BEER.get());
event.accept(AntarchyNeoforgeItems.RAINBOW_SUGAR.get());
event.accept(AntarchyNeoforgeItems.BIG_BERTHA_BLADE.get());
event.accept(AntarchyNeoforgeItems.BIG_BERTHA_HANDLE.get());
@@ -174,6 +209,23 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.accept(AntarchyNeoforgeItems.OURANWOOD_BUTTON_ITEM.get());
event.accept(AntarchyNeoforgeItems.OURANWOOD_SIGN_ITEM.get());
event.accept(AntarchyNeoforgeItems.OURANWOOD_HANGING_SIGN_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_LOG_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_WOOD_ITEM.get());
event.accept(AntarchyNeoforgeItems.STRIPPED_PEACH_LOG_ITEM.get());
event.accept(AntarchyNeoforgeItems.STRIPPED_PEACH_WOOD_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_PLANKS_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_STAIRS_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_SLAB_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_FENCE_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_FENCE_GATE_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_BOAT.get());
event.accept(AntarchyNeoforgeItems.PEACH_CHEST_BOAT.get());
event.accept(AntarchyNeoforgeItems.PEACH_DOOR_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_TRAPDOOR_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_PRESSURE_PLATE_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_BUTTON_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_SIGN_ITEM.get());
event.accept(AntarchyNeoforgeItems.PEACH_HANGING_SIGN_ITEM.get());
event.accept(AntarchyNeoforgeItems.SHELLSTONE_ITEM.get());
event.accept(AntarchyNeoforgeItems.SHELLSTONE_STAIRS_ITEM.get());
event.accept(AntarchyNeoforgeItems.SHELLSTONE_SLAB_ITEM.get());
@@ -213,9 +265,13 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.accept(AntarchyNeoforgeItems.ANTIMETAL_SCAFFOLDING_ITEM.get());
event.accept(AntarchyNeoforgeItems.UMBRAL_MOSS_BLOCK_ITEM.get());
event.accept(AntarchyNeoforgeItems.UMBRAL_MOSS_CARPET_ITEM.get());
event.accept(AntarchyNeoforgeItems.BLUSH_MOSS_BLOCK_ITEM.get());
event.accept(AntarchyNeoforgeItems.BLUSH_MOSS_CARPET_ITEM.get());
event.accept(AntarchyNeoforgeItems.DREAM_TORCH_ITEM.get());
event.accept(AntarchyNeoforgeItems.DREAM_LANTERN_ITEM.get());
event.accept(AntarchyNeoforgeItems.DREAM_CAMPFIRE_ITEM.get());
event.accept(AntarchyNeoforgeItems.LUMEN_FROGLIGHT_ITEM.get());
event.accept(AntarchyNeoforgeItems.ROSEATE_FROGLIGHT_ITEM.get());
event.accept(AntarchyNeoforgeItems.DREAM_SAND_ITEM.get());
event.accept(AntarchyNeoforgeItems.DREAM_SANDSTONE_ITEM.get());
event.accept(AntarchyNeoforgeItems.CHISELED_DREAM_SANDSTONE_ITEM.get());
@@ -267,6 +323,8 @@ public class AntarchyNeoforgeCreativeModeTabs {
event.accept(UltimateGearHelper.createUltimateBowStack(AntarchyNeoforgeItems.ULTIMATE_BOW.get(), event.getParameters().holders()));
event.accept(AntarchyNeoforgeItems.ULTIMATE_CROSSBOW.get());
event.accept(AntarchyNeoforgeItems.SQUIDZOOKA.get());
event.accept(AntarchyNeoforgeItems.RPO_LAUNCHER.get());
event.accept(AntarchyNeoforgeItems.KRAKENS_GRASP.get());
event.accept(AntarchyNeoforgeItems.SHRINK_RAY.get());
event.accept(AntarchyNeoforgeItems.GROWTH_RAY.get());
event.accept(AntarchyNeoforgeItems.GRAVITY_GUN.get());
@@ -307,139 +365,10 @@ public class AntarchyNeoforgeCreativeModeTabs {
}
private static int creativeTabGroup(net.minecraft.world.item.Item item) {
String path = BuiltInRegistries.ITEM.getKey(item).getPath();
return switch (path) {
// 0 - Ouranwood blocks
case "ouranwood_log", "ouranwood_wood", "mossy_ouranwood_log", "mossy_ouranwood_wood",
"stripped_ouranwood_log", "stripped_ouranwood_wood", "duplicator_log",
"ouranwood_planks", "ouranwood_stairs", "ouranwood_slab",
"ouranwood_fence", "ouranwood_fence_gate",
"ouranwood_door", "ouranwood_trapdoor",
"ouranwood_pressure_plate", "ouranwood_button",
"ouranwood_sign", "ouranwood_hanging_sign",
"ouranwood_boat", "ouranwood_chest_boat" -> 0;
return CreativeTabOrder.group(item);
}
// 1 - Nyxite blocks
case "nyxite", "polished_nyxite", "chiseled_nyxite", "nyxite_bricks",
"nyxite_stairs", "nyxite_slab", "nyxite_wall",
"polished_nyxite_stairs", "polished_nyxite_slab", "polished_nyxite_wall",
"nyxite_brick_stairs", "nyxite_brick_slab", "nyxite_brick_wall",
"pale_nyxite", "nyxite_spike", "potent_nyxite" -> 1;
// 2 - Shellstone blocks
case "shellstone", "polished_shellstone", "shellstone_bricks", "chiseled_shellstone",
"mossy_shellstone_bricks", "cracked_shellstone_bricks",
"shellstone_stairs", "shellstone_slab", "shellstone_wall",
"polished_shellstone_stairs", "polished_shellstone_slab", "polished_shellstone_wall",
"shellstone_brick_stairs", "shellstone_brick_slab", "shellstone_brick_wall",
"mossy_shellstone_brick_stairs", "mossy_shellstone_brick_slab", "mossy_shellstone_brick_wall" -> 2;
// 3 - Antimetal blocks
case "antimetal", "polished_antimetal" -> 3;
// 4 - Dream sand and blocks
case "dream_sand", "dream_sandstone", "chiseled_dream_sandstone",
"cut_dream_sandstone", "smooth_dream_sandstone",
"dream_sandstone_stairs", "dream_sandstone_slab", "dream_sandstone_wall",
"smooth_dream_sandstone_stairs", "smooth_dream_sandstone_slab",
"cut_dream_sandstone_slab" -> 4;
// 5 - Umbral moss
case "umbral_moss_block", "umbral_moss_carpet" -> 4;
// 6 - All ores + metal storage/decorative blocks
case "uranium_ore", "deepslate_uranium_ore", "titanium_ore", "deepslate_titanium_ore",
"uranium_block", "titanium_block",
"cut_uranium", "cut_titanium", "cut_uranium_slab", "cut_titanium_slab",
"cut_uranium_stairs", "cut_titanium_stairs",
"chiseled_uranium", "chiseled_titanium",
"uranium_door", "titanium_door", "uranium_trapdoor", "titanium_trapdoor",
"uranium_bars", "titanium_bars", "uranium_bulb", "titanium_bulb" -> 6;
// 7 - Raw ores
case "raw_uranium", "raw_titanium", "raw_uranium_scrap", "raw_titanium_scrap",
"raw_uranium_block", "raw_titanium_block" -> 7;
// 8 - Blood crystal blocks (not the shard ingredient)
case "blood_crystal_block", "small_blood_crystal_bud", "medium_blood_crystal_bud",
"large_blood_crystal_bud", "budding_blood_crystal", "blood_crystal_cluster",
"myrmite", "broodstone", "chiten_block", "chiten_spike", "amber_moss_block", "amber_moss_carpet" -> 8;
// 9 - Ouranwood leaves
case "ouranwood_leaves" -> 9;
// 10 - Saplings / seeds
case "duplicator_sapling", "ouranwood_acorn" -> 10;
// 11 - Plants and flowers
case "orange_milkweed", "pink_milkweed", "hushweed", "amber_lichen", "creepvine",
"triffid_goo_block", "wasp_nest",
"red_ant_nest", "brown_ant_nest", "rainbow_ant_nest", "termite_nest" -> 11;
// 12 - Dream lighting
case "dream_torch", "dream_lantern", "dream_campfire" -> 12;
// 13 - Antimetal scaffolding
case "antimetal_scaffolding" -> 13;
// 14 - Infested blocks
case "infested_rooted_dirt", "infested_coarse_dirt", "bed_bug_egg",
"creeping_horror_egg", "lurking_terror_egg" -> 14;
// 15 - Tools
case "ultimate_pickaxe", "ultimate_axe", "ultimate_shovel", "ultimate_hoe",
"duct_tape", "diamond_minecart", "gravity_sculk_sensor" -> 15;
// 16 - Liquid buckets
case "bile_bucket", "ichor_bucket", "antiwater_bucket", "cloud_bucket" -> 16;
// 17 - Misc wearables / gadgets
case "moggles", "brutalfly_elytra", "fallen_king_crown", "jumpy_boots" -> 17;
// 18 - Weapons
case "battle_axe", "basilisk_dagger", "squidzooka", "shrink_ray", "growth_ray",
"gravity_gun", "water_cannon", "nightmare_sword", "lucid_pearl", "scorpion_whip", "blood_crystal_katana",
"big_bertha", "big_bertha_blade", "big_bertha_handle", "big_bertha_hilt",
"ultimate_sword", "ultimate_mace" -> 18;
// 19 - Armor sets
case "primordial_helmet", "primordial_chestplate",
"primordial_leggings", "primordial_boots",
"blood_crystal_helmet", "blood_crystal_chestplate",
"blood_crystal_leggings", "blood_crystal_boots",
"nightmare_helmet", "nightmare_chestplate",
"nightmare_leggings", "nightmare_boots",
"ultimate_helmet", "ultimate_chestplate",
"ultimate_leggings", "ultimate_boots" -> 19;
// 20 - Ranged weapons
case "ultimate_bow", "ultimate_crossbow" -> 20;
// 21 - Foods
case "cloud_shark_fin_soup", "mud_pie", "rainbow_sugar",
"blood_crystal_apple" -> 21;
// 22 - Crafting ingredients
case "blood_crystal_shard", "cloud_shark_fin", "basilisk_fang", "kraken_tooth",
"emperor_scorpion_stinger", "nightmare_scale", "molevore_nose",
"moleworm", "uranium_nugget", "titanium_nugget",
"uranium_ingot", "titanium_ingot", "lucid_eye",
"mantis_claw", "jumpy_bug_leg", "brutalfly_wing", "cornea_ear",
"primordial_scute", "triffid_goo", "vortex_eye",
"king_scale", "queen_scale", "chiten", "stink_bug" -> 22;
// 23 - Arrows (reserved for future arrow types)
// 24 - Potions
case "reverie_bottle" -> 24;
// 25 - Spawn eggs
default -> {
if (!path.endsWith("_spawn_egg")) {
org.slf4j.LoggerFactory.getLogger("Antarchy/CreativeTab").warn("Unmatched creative tab item: '{}'", path);
}
yield path.endsWith("_spawn_egg") ? 25 : 99;
}
};
private static int creativeTabSubOrder(net.minecraft.world.item.Item item) {
return CreativeTabOrder.subOrder(item);
}
}
@@ -13,7 +13,9 @@ import com.craisinlord.antarchy.content.entity.DiamondMinecartEntity;
import com.craisinlord.antarchy.content.entity.DrTrayaurusEntity;
import com.craisinlord.antarchy.content.entity.EasterBunnyEntity;
import com.craisinlord.antarchy.content.entity.EmperorScorpionEntity;
import com.craisinlord.antarchy.content.entity.GlimmerEntity;
import com.craisinlord.antarchy.content.entity.ElkaEntity;
import com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity;
import com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity;
import com.craisinlord.antarchy.content.entity.HushProjectileEntity;
import com.craisinlord.antarchy.content.entity.HerculesBeetleEntity;
import com.craisinlord.antarchy.content.entity.JumpyBugEntity;
@@ -26,6 +28,8 @@ import com.craisinlord.antarchy.content.entity.MolevoreEntity;
import com.craisinlord.antarchy.content.entity.MolewormEntity;
import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity;
import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity;
import com.craisinlord.antarchy.content.entity.PeachBoatEntity;
import com.craisinlord.antarchy.content.entity.PeachChestBoatEntity;
import com.craisinlord.antarchy.content.entity.ReverieEntity;
import com.craisinlord.antarchy.content.entity.ScorpionEntity;
import com.craisinlord.antarchy.content.entity.SizeRayProjectileEntity;
@@ -43,6 +47,8 @@ import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity;
import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity;
import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity;
import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity;
import com.craisinlord.antarchy.content.entity.kraken.KrakensGraspThrownTrident;
import com.craisinlord.antarchy.content.entity.kraken.TentacleEntity;
import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity;
import com.craisinlord.antarchy.content.entity.lucid.LucidEntity;
import com.craisinlord.antarchy.content.entity.lucid.LucidEyeProjectileEntity;
@@ -115,6 +121,18 @@ public final class AntarchyNeoforgeEntites {
.clientTrackingRange(10)
.updateInterval(10)
.build("ouranwood_chest_boat"));
public static final DeferredHolder<EntityType<?>, EntityType<PeachBoatEntity>> PEACH_BOAT_ENTITY = ENTITY_TYPES.register("peach_boat",
() -> EntityType.Builder.<PeachBoatEntity>of(PeachBoatEntity::new, MobCategory.MISC)
.sized(1.375F, 0.5625F)
.clientTrackingRange(10)
.updateInterval(10)
.build("peach_boat"));
public static final DeferredHolder<EntityType<?>, EntityType<PeachChestBoatEntity>> PEACH_CHEST_BOAT_ENTITY = ENTITY_TYPES.register("peach_chest_boat",
() -> EntityType.Builder.<PeachChestBoatEntity>of(PeachChestBoatEntity::new, MobCategory.MISC)
.sized(1.375F, 0.5625F)
.clientTrackingRange(10)
.updateInterval(10)
.build("peach_chest_boat"));
public static final DeferredHolder<EntityType<?>, EntityType<MolevoreEntity>> MOLEVORE = ENTITY_TYPES.register("molevore",
() -> EntityType.Builder.of(MolevoreEntity::new, MobCategory.MONSTER)
.sized(1.95F, 1.1F)
@@ -234,6 +252,20 @@ public final class AntarchyNeoforgeEntites {
.clientTrackingRange(8)
.updateInterval(1)
.build("lucid_bolt"));
public static final DeferredHolder<EntityType<?>, EntityType<KrakensGraspThrownTrident>> KRAKENS_GRASP_TRIDENT = ENTITY_TYPES.register("krakens_grasp_trident",
() -> EntityType.Builder.<KrakensGraspThrownTrident>of(KrakensGraspThrownTrident::new, MobCategory.MISC)
.sized(0.5F, 0.5F)
.clientTrackingRange(8)
.updateInterval(1)
.build("krakens_grasp_trident"));
public static final DeferredHolder<EntityType<?>, EntityType<TentacleEntity>> TENTACLE = ENTITY_TYPES.register("tentacle",
() -> EntityType.Builder.of(TentacleEntity::new, MobCategory.MISC)
.sized(1.2F, 4.5F)
.clientTrackingRange(10)
.build("tentacle"));
public static final DeferredHolder<EntityType<?>, EntityType<ScorpionEntity>> SCORPION = ENTITY_TYPES.register("scorpion",
() -> EntityType.Builder.of(ScorpionEntity::new, MobCategory.MONSTER)
.sized(1.5F, 1.0F)
@@ -283,11 +315,27 @@ public final class AntarchyNeoforgeEntites {
.sized(1.0F, 1.2F)
.clientTrackingRange(8)
.build("cheep"));
// public static final DeferredHolder<EntityType<?>, EntityType<GlimmerEntity>> GLIMMER = ENTITY_TYPES.register("glimmer",
// () -> EntityType.Builder.of(GlimmerEntity::new, MobCategory.CREATURE)
// .sized(0.9F, 1.4F)
// .clientTrackingRange(8)
// .build("glimmer"));
// Dorrie is not part of this update yet.
// public static final DeferredHolder<EntityType<?>, EntityType<DorrieEntity>> DORRIE = ENTITY_TYPES.register("dorrie",
// () -> EntityType.Builder.of(DorrieEntity::new, MobCategory.CREATURE)
// .sized(1.6F, 1.4F)
// .clientTrackingRange(10)
// .build("dorrie"));
public static final DeferredHolder<EntityType<?>, EntityType<OuranwoodDeerEntity>> OURANWOOD_DEER = ENTITY_TYPES.register("ouranwood_deer",
() -> EntityType.Builder.of(OuranwoodDeerEntity::new, MobCategory.CREATURE)
.sized(0.9F, 1.4F)
.clientTrackingRange(8)
.build("ouranwood_deer"));
public static final DeferredHolder<EntityType<?>, EntityType<GlimmerEntity>> GLIMMER = ENTITY_TYPES.register("glimmer",
() -> EntityType.Builder.of(GlimmerEntity::new, MobCategory.CREATURE)
.sized(0.9F, 1.4F)
.clientTrackingRange(8)
.build("glimmer"));
public static final DeferredHolder<EntityType<?>, EntityType<ElkaEntity>> ELKA = ENTITY_TYPES.register("elka",
() -> EntityType.Builder.of(ElkaEntity::new, MobCategory.CREATURE)
.sized(2.2F, 3.5F)
.clientTrackingRange(10)
.build("elka"));
public static final DeferredHolder<EntityType<?>, EntityType<UpwardFallingBlockEntity>> UPWARD_FALLING_BLOCK = ENTITY_TYPES.register("upward_falling_block",
() -> EntityType.Builder.<UpwardFallingBlockEntity>of(
UpwardFallingBlockEntity::new, MobCategory.MISC)
@@ -9,6 +9,7 @@ import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity;
import com.craisinlord.antarchy.content.entity.cloud_shark.CloudSharkEntity;
import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity;
import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity;
import com.craisinlord.antarchy.content.entity.kraken.TentacleEntity;
import com.craisinlord.antarchy.content.entity.lucid.LucidEntity;
import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity;
import com.craisinlord.antarchy.content.entity.ToreterrorEntity;
@@ -51,6 +52,7 @@ public class AntarchyNeoforgeEntityAttributes {
event.put(AntarchyNeoforgeEntites.KRAKEN.get(), KrakenEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.MISSILE_SQUID.get(), MissileSquidEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.OCTOPUS_BOMB.get(), OctopusBombEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.TENTACLE.get(), TentacleEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.NIGHTMARE.get(), NightmareEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.BED_BUG.get(), BedBugEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.WASP.get(), WaspEntity.createAttributes().build());
@@ -73,7 +75,11 @@ public class AntarchyNeoforgeEntityAttributes {
event.put(AntarchyNeoforgeEntites.MOLEWORM.get(), MolewormEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.MOLEVORE.get(), MolevoreEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.CHEEP.get(), com.craisinlord.antarchy.content.entity.CheepEntity.createAttributes().build());
// event.put(AntarchyNeoforgeEntites.GLIMMER.get(), com.craisinlord.antarchy.content.entity.GlimmerEntity.createAttributes().build());
// Dorrie is not part of this update yet.
// event.put(AntarchyNeoforgeEntites.DORRIE.get(), com.craisinlord.antarchy.content.entity.DorrieEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.OURANWOOD_DEER.get(), com.craisinlord.antarchy.content.entity.OuranwoodDeerEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.GLIMMER.get(), com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity.createAttributes().build());
event.put(AntarchyNeoforgeEntites.ELKA.get(), ElkaEntity.createAttributes().build());
}
private static AttributeSupplier.Builder buildAntAttributes(double health, double speed, double attackDamage) {
@@ -29,6 +29,7 @@ import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.item.*;
import net.minecraft.world.item.PlaceOnWaterBlockItem;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.neoforged.bus.api.IEventBus;
@@ -158,9 +159,28 @@ public final class AntarchyNeoforgeItems {
public static final DeferredItem<net.minecraft.world.item.BlockItem> OURANWOOD_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_BUTTON);
public static final DeferredItem<net.minecraft.world.item.BlockItem> OURANWOOD_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_LEAVES);
public static final DeferredItem<net.minecraft.world.item.BlockItem> OURANWOOD_ACORN = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_ACORN_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_LOG);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_WOOD);
public static final DeferredItem<net.minecraft.world.item.BlockItem> STRIPPED_PEACH_LOG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STRIPPED_PEACH_LOG);
public static final DeferredItem<net.minecraft.world.item.BlockItem> STRIPPED_PEACH_WOOD_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STRIPPED_PEACH_WOOD);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_PLANKS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_PLANKS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_STAIRS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_SLAB);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_FENCE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_FENCE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_FENCE_GATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_FENCE_GATE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_DOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_DOOR);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_TRAPDOOR_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_TRAPDOOR);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_PRESSURE_PLATE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_PRESSURE_PLATE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_BUTTON_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_BUTTON);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_LEAVES_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_LEAVES);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PEACH_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PEACH_SAPLING);
// public static final DeferredItem<net.minecraft.world.item.BlockItem> OURANWOOD_VINE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.OURANWOOD_VINE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> ORANGE_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ORANGE_MILKWEED);
public static final DeferredItem<net.minecraft.world.item.BlockItem> PINK_MILKWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.PINK_MILKWEED);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CAMELLIA_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CAMELLIA);
public static final DeferredItem<net.minecraft.world.item.BlockItem> SPIDER_LILY_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SPIDER_LILY);
public static final DeferredItem<net.minecraft.world.item.BlockItem> GIANT_LILY_PAD_ITEM = ITEMS.register("giant_lily_pad",
() -> new PlaceOnWaterBlockItem(AntarchyNeoforgeBlocks.GIANT_LILY_PAD.get(), new Item.Properties()));
public static final DeferredItem<net.minecraft.world.item.SignItem> OURANWOOD_SIGN_ITEM = ITEMS.register("ouranwood_sign",
() -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyNeoforgeBlocks.OURANWOOD_SIGN.get(), AntarchyNeoforgeBlocks.OURANWOOD_WALL_SIGN.get()));
public static final DeferredItem<net.minecraft.world.item.HangingSignItem> OURANWOOD_HANGING_SIGN_ITEM = ITEMS.register("ouranwood_hanging_sign",
@@ -169,6 +189,14 @@ public final class AntarchyNeoforgeItems {
() -> new OuranwoodBoatOnlyItem(AntarchyNeoforgeEntites.OURANWOOD_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1)));
public static final DeferredItem<Item> OURANWOOD_CHEST_BOAT = ITEMS.register("ouranwood_chest_boat",
() -> new OuranwoodChestBoatItem(AntarchyNeoforgeEntites.OURANWOOD_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1)));
public static final DeferredItem<net.minecraft.world.item.SignItem> PEACH_SIGN_ITEM = ITEMS.register("peach_sign",
() -> new net.minecraft.world.item.SignItem(new Item.Properties().stacksTo(16), AntarchyNeoforgeBlocks.PEACH_SIGN.get(), AntarchyNeoforgeBlocks.PEACH_WALL_SIGN.get()));
public static final DeferredItem<net.minecraft.world.item.HangingSignItem> PEACH_HANGING_SIGN_ITEM = ITEMS.register("peach_hanging_sign",
() -> new net.minecraft.world.item.HangingSignItem(AntarchyNeoforgeBlocks.PEACH_HANGING_SIGN.get(), AntarchyNeoforgeBlocks.PEACH_WALL_HANGING_SIGN.get(), new Item.Properties().stacksTo(16)));
public static final DeferredItem<Item> PEACH_BOAT = ITEMS.register("peach_boat",
() -> new PeachBoatOnlyItem(AntarchyNeoforgeEntites.PEACH_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1)));
public static final DeferredItem<Item> PEACH_CHEST_BOAT = ITEMS.register("peach_chest_boat",
() -> new PeachChestBoatItem(AntarchyNeoforgeEntites.PEACH_CHEST_BOAT_ENTITY.get(), new Item.Properties().stacksTo(1)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> DUPLICATOR_SAPLING_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DUPLICATOR_SAPLING);
public static final DeferredItem<net.minecraft.world.item.BlockItem> RED_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.RED_ANT_NEST);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BROWN_ANT_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BROWN_ANT_NEST);
@@ -223,6 +251,12 @@ public final class AntarchyNeoforgeItems {
public static final DeferredItem<net.minecraft.world.item.BlockItem> SMOOTH_DREAM_SANDSTONE_STAIRS_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SMOOTH_DREAM_SANDSTONE_STAIRS);
public static final DeferredItem<net.minecraft.world.item.BlockItem> SMOOTH_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.SMOOTH_DREAM_SANDSTONE_SLAB);
public static final DeferredItem<net.minecraft.world.item.BlockItem> CUT_DREAM_SANDSTONE_SLAB_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.CUT_DREAM_SANDSTONE_SLAB);
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEAD_STAR_CORAL_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEAD_STAR_CORAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL);
public static final DeferredItem<net.minecraft.world.item.BlockItem> DEAD_STAR_CORAL_FAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DEAD_STAR_CORAL_FAN);
public static final DeferredItem<net.minecraft.world.item.BlockItem> STAR_CORAL_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STAR_CORAL_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> STAR_CORAL_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STAR_CORAL);
public static final DeferredItem<net.minecraft.world.item.BlockItem> STAR_CORAL_FAN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.STAR_CORAL_FAN);
public static final DeferredItem<net.minecraft.world.item.BlockItem> DUCT_TAPE_ITEM = ITEMS.register("duct_tape",
() -> new DuctTapeBlockItem(AntarchyNeoforgeBlocks.DUCT_TAPE.get(), new Item.Properties().stacksTo(1)));
public static final DeferredItem<net.minecraft.world.item.BlockItem> INFESTED_ROOTED_DIRT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.INFESTED_ROOTED_DIRT);
@@ -265,10 +299,14 @@ public final class AntarchyNeoforgeItems {
public static final DeferredItem<net.minecraft.world.item.BlockItem> POTENT_NYXITE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.POTENT_NYXITE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> UMBRAL_MOSS_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.UMBRAL_MOSS_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> UMBRAL_MOSS_CARPET_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.UMBRAL_MOSS_CARPET);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BLUSH_MOSS_BLOCK_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BLUSH_MOSS_BLOCK);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BLUSH_MOSS_CARPET_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BLUSH_MOSS_CARPET);
public static final DeferredItem<StandingAndWallBlockItem> DREAM_TORCH_ITEM = ITEMS.register("dream_torch",
() -> new StandingAndWallBlockItem(AntarchyNeoforgeBlocks.DREAM_TORCH.get(), AntarchyNeoforgeBlocks.DREAM_WALL_TORCH.get(), new Item.Properties(), net.minecraft.core.Direction.UP));
public static final DeferredItem<net.minecraft.world.item.BlockItem> DREAM_LANTERN_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_LANTERN);
public static final DeferredItem<net.minecraft.world.item.BlockItem> DREAM_CAMPFIRE_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.DREAM_CAMPFIRE);
public static final DeferredItem<net.minecraft.world.item.BlockItem> LUMEN_FROGLIGHT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.LUMEN_FROGLIGHT);
public static final DeferredItem<net.minecraft.world.item.BlockItem> ROSEATE_FROGLIGHT_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.ROSEATE_FROGLIGHT);
public static final DeferredItem<net.minecraft.world.item.BlockItem> BED_BUG_EGG_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.BED_BUG_EGG);
public static final DeferredItem<net.minecraft.world.item.BlockItem> WASP_NEST_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.WASP_NEST);
public static final DeferredItem<net.minecraft.world.item.BlockItem> HUSHWEED_ITEM = ITEMS.registerSimpleBlockItem(AntarchyNeoforgeBlocks.HUSHWEED);
@@ -278,6 +316,8 @@ public final class AntarchyNeoforgeItems {
() -> new BucketItem(AntarchyNeoforgeMisc.ICHOR.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1)));
public static final DeferredItem<BucketItem> ANTIWATER_BUCKET = ITEMS.register("antiwater_bucket",
() -> new BucketItem(AntarchyNeoforgeMisc.ANTIWATER.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1)));
public static final DeferredItem<BucketItem> LUMEN_BUCKET = ITEMS.register("lumen_bucket",
() -> new BucketItem(AntarchyNeoforgeMisc.LUMEN.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1)));
public static final DeferredItem<com.craisinlord.antarchy.content.item.CloudBucketItem> CLOUD_BUCKET = ITEMS.register("cloud_bucket",
() -> new com.craisinlord.antarchy.content.item.CloudBucketItem(AntarchyNeoforgeBlocks.CLOUD_BLOCK.get(), new Item.Properties().craftRemainder(Items.BUCKET)));
public static final DeferredItem<BloodCrystalShardItem> BLOOD_CRYSTAL_SHARD = ITEMS.register("blood_crystal_shard",
@@ -327,6 +367,80 @@ public final class AntarchyNeoforgeItems {
.nutrition(2)
.saturationModifier(0.4F)
.build())));
public static final DeferredItem<Item> CORN = ITEMS.register("corn",
() -> new Item(new Item.Properties()
.food(new FoodProperties.Builder()
.nutrition(3)
.saturationModifier(0.6F)
.build())));
public static final DeferredItem<ItemNameBlockItem> CORN_SEEDS = ITEMS.register("corn_seeds",
() -> new ItemNameBlockItem(AntarchyNeoforgeBlocks.CORN_CROP.get(), new Item.Properties()));
public static final DeferredItem<Item> RAW_VENISON = ITEMS.register("raw_venison",
() -> new Item(new Item.Properties()
.food(new FoodProperties.Builder()
.nutrition(2)
.saturationModifier(0.3F)
.build())));
public static final DeferredItem<Item> COOKED_VENISON = ITEMS.register("cooked_venison",
() -> new Item(new Item.Properties()
.food(new FoodProperties.Builder()
.nutrition(6)
.saturationModifier(0.8F)
.build())));
public static final DeferredItem<Item> PEACH = ITEMS.register("peach",
() -> new PeachItem());
public static final DeferredItem<Item> PEACH_PIE = ITEMS.register("peach_pie",
() -> new Item(new Item.Properties()
.stacksTo(64)
.food(new FoodProperties.Builder()
.nutrition(8)
.saturationModifier(0.3F)
.build())));
public static final DeferredItem<Item> CORNBREAD = ITEMS.register("cornbread",
() -> new Item(new Item.Properties()
.stacksTo(64)
.food(new FoodProperties.Builder()
.nutrition(8)
.saturationModifier(0.9F)
.build())));
public static final DeferredItem<Item> POPCORN = ITEMS.register("popcorn",
() -> new Item(new Item.Properties()
.stacksTo(64)
.food(new FoodProperties.Builder()
.nutrition(1)
.saturationModifier(0.1F)
.build())));
public static final DeferredItem<Item> RAW_CORNDOG = ITEMS.register("raw_corndog",
() -> new Item(new Item.Properties()
.stacksTo(64)
.food(new FoodProperties.Builder()
.nutrition(8)
.saturationModifier(0.7F)
.build())));
public static final DeferredItem<Item> COOKED_CORNDOG = ITEMS.register("cooked_corndog",
() -> new Item(new Item.Properties()
.stacksTo(64)
.food(new FoodProperties.Builder()
.nutrition(14)
.saturationModifier(1.1F)
.build())));
public static final DeferredItem<Item> HIGH_FRUCTOSE_CORN_SYRUP = ITEMS.register("high_fructose_corn_syrup",
() -> new HighFructoseCornSyrupItem(new Item.Properties()
.stacksTo(16)
.food(new FoodProperties.Builder()
.nutrition(0)
.saturationModifier(0.0F)
.alwaysEdible()
.build())));
public static final DeferredItem<RootBeerItem> ROOT_BEER = ITEMS.register("root_beer",
() -> new RootBeerItem(new Item.Properties()
.stacksTo(16)
.food(new FoodProperties.Builder()
.nutrition(4)
.saturationModifier(0.4F)
.effect(() -> new MobEffectInstance(MobEffects.REGENERATION, 100, 0), 1.0F)
.alwaysEdible()
.build())));
public static final DeferredItem<Item> TRIFFID_GOO = ITEMS.registerSimpleItem("triffid_goo",
new Item.Properties().rarity(Rarity.UNCOMMON));
public static final DeferredItem<Item> VORTEX_EYE = ITEMS.register("vortex_eye",
@@ -457,8 +571,13 @@ public final class AntarchyNeoforgeItems {
));
public static final DeferredItem<GravityGunItem> GRAVITY_GUN = ITEMS.register("gravity_gun",
() -> new GravityGunItem(new Item.Properties().stacksTo(1).durability(512).rarity(Rarity.RARE).fireResistant()));
// Temporarily disabled: keeping the code but not registering the item for now.
// public static final DeferredItem<MinersDreamItem> MINERS_DREAM = ITEMS.register("miners_dream",
// () -> new MinersDreamItem(new Item.Properties().stacksTo(1).rarity(Rarity.RARE)));
public static final DeferredItem<SquidzookaItem> SQUIDZOOKA = ITEMS.register("squidzooka",
() -> new SquidzookaItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.RARE)));
public static final DeferredItem<RpoLauncherItem> RPO_LAUNCHER = ITEMS.register("rpo_launcher",
() -> new RpoLauncherItem(new Item.Properties().stacksTo(1).durability(384).rarity(Rarity.RARE)));
public static final DeferredItem<BattleAxeItem> BATTLE_AXE = ITEMS.register("battle_axe",
() -> new BattleAxeItem(Tiers.NETHERITE,
new Item.Properties().stacksTo(1).rarity(Rarity.RARE).fireResistant(),
@@ -477,11 +596,33 @@ public final class AntarchyNeoforgeItems {
() -> new BigBerthaItem(Tiers.NETHERITE,
new Item.Properties().stacksTo(1).rarity(Rarity.EPIC).fireResistant()));
public static final DeferredItem<Item> KRAKEN_TENTACLE = ITEMS.registerSimpleItem("kraken_tentacle",
new Item.Properties().rarity(Rarity.RARE));
public static final DeferredItem<KrakensGraspItem> KRAKENS_GRASP = ITEMS.register("krakens_grasp",
() -> new KrakensGraspItem(
new Item.Properties().stacksTo(1).durability(250).rarity(Rarity.EPIC).fireResistant()));
// Spawn eggs
public static final DeferredItem<DeferredSpawnEggItem> EASTER_BUNNY_SPAWN_EGG = ITEMS.register("easter_bunny_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.EASTER_BUNNY, 0xFFF2B2, 0xFF85B5, new Item.Properties()));
// public static final DeferredItem<DeferredSpawnEggItem> GLIMMER_SPAWN_EGG = ITEMS.register("glimmer_spawn_egg",
// () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.GLIMMER, 0xBEEFFF, 0x6FD8FF, new Item.Properties()));
// Dorrie is not part of this update yet.
// public static final DeferredItem<DeferredSpawnEggItem> DORRIE_SPAWN_EGG = ITEMS.register("dorrie_spawn_egg",
// () -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.DORRIE, 0x6F8CFF, 0xD2F2FF, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> OURANWOOD_DEER_SPAWN_EGG = ITEMS.register("ouranwood_deer_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.OURANWOOD_DEER, 0x8A6D4B, 0xE8D9B5, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> GLIMMER_SPAWN_EGG = ITEMS.register("glimmer_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.GLIMMER, 0x7DFFFF, 0x2AC7D0, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> ELKA_SPAWN_EGG = ITEMS.register("elka_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.ELKA, 0x6B2FA0, 0xFFFFFF, new Item.Properties()));
public static final DeferredItem<net.minecraft.world.item.Item> SPIRIT_APPLE = ITEMS.register("spirit_apple",
() -> new com.craisinlord.antarchy.content.item.SpiritAppleItem(new Item.Properties()
.food(new FoodProperties.Builder()
.nutrition(4)
.saturationModifier(0.3F)
.build())));
public static final DeferredItem<com.craisinlord.antarchy.content.item.GlimmerBottleItem> GLIMMER_BOTTLE = ITEMS.register("glimmer_bottle",
com.craisinlord.antarchy.content.item.GlimmerBottleItem::new);
public static final DeferredItem<DeferredSpawnEggItem> FLYING_SQUIRREL_SPAWN_EGG = ITEMS.register("flying_squirrel_spawn_egg",
() -> new DeferredSpawnEggItem(AntarchyNeoforgeEntites.FLYING_SQUIRREL, 0x7D6649, 0xDCC59C, new Item.Properties()));
public static final DeferredItem<DeferredSpawnEggItem> CATERPILLAR_SPAWN_EGG = ITEMS.register("caterpillar_spawn_egg",
@@ -4,7 +4,6 @@ import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.client.particle.InvertedGeyserBaseParticleOptions;
import com.craisinlord.antarchy.content.client.particle.InvertedGeyserParticleOptions;
import com.craisinlord.antarchy.content.effect.DreadMobEffect;
import com.craisinlord.antarchy.content.effect.GlimmersGraceMobEffect;
import com.craisinlord.antarchy.content.effect.GrowthMobEffect;
import com.craisinlord.antarchy.content.effect.InvertedMobEffect;
import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect;
@@ -14,6 +13,8 @@ import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature;
import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature;
import com.craisinlord.antarchy.content.worldgen.ants.RedAntNestFeature;
import com.craisinlord.antarchy.content.worldgen.elythia.*;
import com.craisinlord.antarchy.neoforge.worldgen.CornPatchFeature;
import com.craisinlord.antarchy.neoforge.worldgen.LumenLilyPadFeature;
import com.craisinlord.antarchy.content.worldgen.thoraxis.*;
import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluid;
import com.craisinlord.antarchy.neoforge.content.fluid.AntiwaterFluidType;
@@ -23,10 +24,12 @@ import net.minecraft.core.particles.ParticleType;
import net.minecraft.core.particles.SimpleParticleType;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.world.flag.FeatureFlags;
import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.ai.attributes.Attribute;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.item.alchemy.Potion;
import net.minecraft.world.level.biome.BiomeSource;
import net.minecraft.world.level.levelgen.DensityFunction;
@@ -56,6 +59,26 @@ public final class AntarchyNeoforgeMisc {
private static final DeferredRegister<MapCodec<? extends DensityFunction>> DENSITY_FUNCTION_TYPES = DeferredRegister.create(Registries.DENSITY_FUNCTION_TYPE, Antarchy.MODID);
private static final DeferredRegister<MapCodec<? extends EntitySubPredicate>> ENTITY_SUB_PREDICATES = DeferredRegister.create(Registries.ENTITY_SUB_PREDICATE_TYPE, Antarchy.MODID);
private static final DeferredRegister<Attribute> ATTRIBUTES = DeferredRegister.create(Registries.ATTRIBUTE, Antarchy.MODID);
private static final DeferredRegister<MenuType<?>> MENU_TYPES = DeferredRegister.create(Registries.MENU, Antarchy.MODID);
private static final DeferredRegister<net.minecraft.core.component.DataComponentType<?>> DATA_COMPONENT_TYPES =
DeferredRegister.create(Registries.DATA_COMPONENT_TYPE, Antarchy.MODID);
private static final DeferredRegister<net.minecraft.world.item.crafting.RecipeSerializer<?>> RECIPE_SERIALIZERS =
DeferredRegister.create(Registries.RECIPE_SERIALIZER, Antarchy.MODID);
public static final DeferredHolder<net.minecraft.core.component.DataComponentType<?>, net.minecraft.core.component.DataComponentType<com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant>> GLIMMER_VARIANT =
DATA_COMPONENT_TYPES.register("glimmer_variant",
() -> net.minecraft.core.component.DataComponentType.<com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant>builder()
.persistent(com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.CODEC)
.networkSynchronized(com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.STREAM_CODEC)
.build());
public static final DeferredHolder<net.minecraft.core.component.DataComponentType<?>, net.minecraft.core.component.DataComponentType<net.minecraft.util.Unit>> AMERICAN =
DATA_COMPONENT_TYPES.register("american",
() -> net.minecraft.core.component.DataComponentType.<net.minecraft.util.Unit>builder()
.persistent(net.minecraft.util.Unit.CODEC)
.networkSynchronized(net.minecraft.network.codec.StreamCodec.unit(net.minecraft.util.Unit.INSTANCE))
.build());
public static final DeferredHolder<net.minecraft.world.item.crafting.RecipeSerializer<?>, net.minecraft.world.item.crafting.RecipeSerializer<com.craisinlord.antarchy.content.AmericanizeRecipe>> AMERICANIZE_SERIALIZER =
RECIPE_SERIALIZERS.register("americanize", () -> com.craisinlord.antarchy.content.AmericanizeRecipe.SERIALIZER);
public static final DeferredHolder<Attribute, Attribute> DOUBLE_DAMAGE_CHANCE = ATTRIBUTES.register(
"double_damage_chance",
@@ -65,6 +88,10 @@ public final class AntarchyNeoforgeMisc {
"bloodglass_max_hearts",
() -> new net.minecraft.world.entity.ai.attributes.RangedAttribute("attribute.antarchy.bloodglass_max_hearts", 0.0, 0.0, 8.0).setSyncable(true)
);
public static final DeferredHolder<MenuType<?>, MenuType<com.craisinlord.antarchy.content.menu.DorrieInventoryMenu>> DORRIE_INVENTORY_MENU = MENU_TYPES.register(
"dorrie_inventory",
() -> new MenuType<>(com.craisinlord.antarchy.content.menu.DorrieInventoryMenu::new, FeatureFlags.DEFAULT_FLAGS)
);
// Mob effects
public static final DeferredHolder<MobEffect, DreadMobEffect> DREAD = MOB_EFFECTS.register("dread", DreadMobEffect::new);
@@ -74,7 +101,6 @@ public final class AntarchyNeoforgeMisc {
public static final DeferredHolder<MobEffect, com.craisinlord.antarchy.content.effect.BloodglassWardEffect> BLOODGLASS_WARD = MOB_EFFECTS.register("bloodglass_ward", com.craisinlord.antarchy.content.effect.BloodglassWardEffect::new);
public static final DeferredHolder<MobEffect, ShrinkMobEffect> SHRINKING_EFFECT = MOB_EFFECTS.register("shrinking", ShrinkMobEffect::new);
public static final DeferredHolder<MobEffect, GrowthMobEffect> GROWTH_EFFECT = MOB_EFFECTS.register("growth", GrowthMobEffect::new);
// public static final DeferredHolder<MobEffect, GlimmersGraceMobEffect> GLIMMERS_GRACE = MOB_EFFECTS.register("glimmers_grace", GlimmersGraceMobEffect::new);
// Potions
public static final DeferredHolder<Potion, Potion> INVERSION = POTIONS.register("inversion",
@@ -149,6 +175,10 @@ public final class AntarchyNeoforgeMisc {
() -> new AntiwaterFluid.Source(antiwaterProperties()));
public static final DeferredHolder<Fluid, Fluid> FLOWING_ANTIWATER = FLUIDS.register("flowing_antiwater",
() -> new AntiwaterFluid.Flowing(antiwaterProperties()));
public static final DeferredHolder<Fluid, Fluid> LUMEN = FLUIDS.register("lumen",
() -> new BaseFlowingFluid.Source(lumenProperties()));
public static final DeferredHolder<Fluid, Fluid> FLOWING_LUMEN = FLUIDS.register("flowing_lumen",
() -> new BaseFlowingFluid.Flowing(lumenProperties()));
// Particle types
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> DREAM_FIRE_FLAME = PARTICLE_TYPES.register("dream_fire_flame",
@@ -157,6 +187,8 @@ public final class AntarchyNeoforgeMisc {
() -> new SimpleParticleType(true));
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> STINKY_FLY = PARTICLE_TYPES.register("stinky_fly",
() -> new SimpleParticleType(true));
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> PEACH_LEAVES_PARTICLE = PARTICLE_TYPES.register("peach_leaves_particle",
() -> new SimpleParticleType(true));
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> HYPNOTIC_GAS = PARTICLE_TYPES.register("hypnotic_gas",
() -> new SimpleParticleType(true));
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> HYPNOTIC_GAS_CLOUD = PARTICLE_TYPES.register("hypnotic_gas_cloud",
@@ -193,16 +225,24 @@ public final class AntarchyNeoforgeMisc {
() -> new OuranwoodTreeFeature(OuranwoodTreeConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, OuranwoodCocoonTreeFeature> OURANWOOD_COCOON_TREE = FEATURES.register("ouranwood_cocoon_tree",
() -> new OuranwoodCocoonTreeFeature(OuranwoodTreeConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, PeachTreeFeature> PEACH_TREE_FEATURE = FEATURES.register("peach_tree",
() -> new PeachTreeFeature(PeachTreeConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, PeachTreeFeature> PEACH_LARGE_TREE_FEATURE = FEATURES.register("peach_large_tree",
() -> new PeachTreeFeature(PeachTreeConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, ElythiaFloraFeature> ELYTHIA_FOREST_FLORA = FEATURES.register("elythia_forest_flora",
() -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FOREST));
public static final DeferredHolder<Feature<?>, ElythiaFloraFeature> ELYTHIA_MEADOW_FLORA = FEATURES.register("elythia_meadow_flora",
() -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.MEADOW));
public static final DeferredHolder<Feature<?>, ElythiaFloraFeature> PEACH_FOREST_FLORA = FEATURES.register("peach_forest_flora",
() -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.PEACH_FOREST));
public static final DeferredHolder<Feature<?>, ElythiaFloraFeature> FLOWER_FOREST_MILKWEED = FEATURES.register("flower_forest_milkweed",
() -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.FLOWER_FOREST_MILKWEED));
public static final DeferredHolder<Feature<?>, CornPatchFeature> CORN_PATCH = FEATURES.register("corn_patch",
() -> new CornPatchFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, com.craisinlord.antarchy.content.worldgen.ocean.StarCoralPatchFeature> STAR_CORAL_PATCH = FEATURES.register("star_coral_patch",
() -> new com.craisinlord.antarchy.content.worldgen.ocean.StarCoralPatchFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, ElythiaFloraFeature> ELYTHIA_BUTTERFLY_FIELDS_FLORA = FEATURES.register("butterfly_fields_flora",
() -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.BUTTERFLY_FIELDS));
public static final DeferredHolder<Feature<?>, ElythiaFloraFeature> ELYTHIA_TORCHFLOWER_FIELDS_FLORA = FEATURES.register("elythia_torchflower_fields_flora",
() -> new ElythiaFloraFeature(NoneFeatureConfiguration.CODEC, ElythiaFloraFeature.Variant.TORCHFLOWER_FIELDS));
public static final DeferredHolder<Feature<?>, ElythiaSurfaceCoverFeature> ELYTHIA_SURFACE_COVER = FEATURES.register("elythia_surface_cover",
() -> new ElythiaSurfaceCoverFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, ElythiaUndergroundFeature> ELYTHIA_UNDERGROUND = FEATURES.register("elythia_underground",
@@ -221,10 +261,22 @@ public final class AntarchyNeoforgeMisc {
() -> new TriffidPatchFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, ElythiaPondFeature> ELYTHIA_POND = FEATURES.register("elythia_pond",
() -> new ElythiaPondFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, LumenPoolFeature> LUMEN_POOL = FEATURES.register("lumen_pools",
() -> new LumenPoolFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, LumenLilyPadFeature> LUMEN_LILY_PADS = FEATURES.register("lumen_lily_pads",
() -> new LumenLilyPadFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, LumenStreamFeature> LUMEN_STREAM = FEATURES.register("lumen_streams",
() -> new LumenStreamFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, LumenSpireFeature> LUMEN_SPIRE = FEATURES.register("lumen_spires",
() -> new LumenSpireFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, ElythiaTuffBoulderFeature> ELYTHIA_TUFF_BOULDER = FEATURES.register("elythia_tuff_boulder",
() -> new ElythiaTuffBoulderFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, ElythiaLargeTuffBoulderFeature> ELYTHIA_LARGE_TUFF_BOULDER = FEATURES.register("elythia_large_tuff_boulder",
() -> new ElythiaLargeTuffBoulderFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, PeachForestMossyBoulderFeature> PEACH_FOREST_MOSSY_BOULDER = FEATURES.register("peach_forest_mossy_boulder",
() -> new PeachForestMossyBoulderFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, PeachForestPondFeature> PEACH_FOREST_POND = FEATURES.register("peach_forest_pond",
() -> new PeachForestPondFeature(PeachForestPondConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, CoralSpikeFeature> ELYTHIA_CORAL_SPIKE = FEATURES.register("elythia_coral_spike",
() -> new CoralSpikeFeature(NoneFeatureConfiguration.CODEC));
public static final DeferredHolder<Feature<?>, FallenOuranwoodFeature> FALLEN_OURANWOOD_TREE = FEATURES.register("fallen_ouranwood_tree",
@@ -281,6 +333,9 @@ public final class AntarchyNeoforgeMisc {
DENSITY_FUNCTION_TYPES.register(modEventBus);
ENTITY_SUB_PREDICATES.register(modEventBus);
ATTRIBUTES.register(modEventBus);
MENU_TYPES.register(modEventBus);
DATA_COMPONENT_TYPES.register(modEventBus);
RECIPE_SERIALIZERS.register(modEventBus);
}
@@ -311,6 +366,15 @@ public final class AntarchyNeoforgeMisc {
.tickRate(5);
}
static BaseFlowingFluid.Properties lumenProperties() {
return new BaseFlowingFluid.Properties(com.craisinlord.antarchy.neoforge.AntarchyNeoForgeFluidTypes.LUMEN_TYPE, LUMEN, FLOWING_LUMEN)
.bucket(() -> AntarchyNeoforgeItems.LUMEN_BUCKET.get())
.block(() -> AntarchyNeoforgeBlocks.LUMEN_BLOCK.get())
.slopeFindDistance(4)
.levelDecreasePerBlock(1)
.tickRate(5);
}
private static <T extends net.minecraft.core.particles.ParticleOptions> ParticleType<T> particleType(
Function<ParticleType<T>, com.mojang.serialization.MapCodec<T>> codecFactory,
Function<ParticleType<T>, StreamCodec<? super io.netty.buffer.ByteBuf, T>> streamCodecFactory
@@ -48,6 +48,10 @@ public class AntarchyNeoforgeSpawnPlacements {
event.register(AntarchyNeoforgeEntites.BASILISK.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, BasiliskEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.EMPEROR_SCORPION.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, EmperorScorpionEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.CHEEP.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, AbstractFish::checkSurfaceWaterAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR);
// event.register(AntarchyNeoforgeEntites.GLIMMER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR);
// Dorrie is not part of this update yet.
// event.register(AntarchyNeoforgeEntites.DORRIE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.OURANWOOD_DEER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.GLIMMER.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, com.craisinlord.antarchy.content.entity.glimmer.GlimmerEntity::checkGlimmerSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR);
event.register(AntarchyNeoforgeEntites.ELKA.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR);
}
}
@@ -0,0 +1,62 @@
package com.craisinlord.antarchy.neoforge.worldgen;
import com.craisinlord.antarchy.content.block.CornCropBlock;
import com.craisinlord.antarchy.neoforge.registry.AntarchyNeoforgeBlocks;
import com.mojang.serialization.Codec;
import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf;
import net.minecraft.world.level.levelgen.Heightmap;
import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
public final class CornPatchFeature extends Feature<NoneFeatureConfiguration> {
public CornPatchFeature(Codec<NoneFeatureConfiguration> codec) {
super(codec);
}
@Override
public boolean place(FeaturePlaceContext<NoneFeatureConfiguration> context) {
WorldGenLevel level = context.level();
RandomSource random = context.random();
BlockPos origin = context.origin();
Block wildCorn = AntarchyNeoforgeBlocks.WILD_CORN.get();
int radius = 4 + random.nextInt(3);
int targetPlacements = 10 + random.nextInt(11);
int attempts = targetPlacements * 4;
int placed = 0;
for (int i = 0; i < attempts && placed < targetPlacements; i++) {
int x = origin.getX() + random.nextInt(radius * 2 + 1) - radius;
int z = origin.getZ() + random.nextInt(radius * 2 + 1) - radius;
int surfaceY = level.getHeight(Heightmap.Types.WORLD_SURFACE_WG, x, z);
BlockPos lowerPos = new BlockPos(x, surfaceY, z);
BlockPos upperPos = lowerPos.above();
if (!level.getBlockState(lowerPos.below()).is(Blocks.GRASS_BLOCK)) {
continue;
}
if (!level.getBlockState(lowerPos).canBeReplaced() || !level.getBlockState(upperPos).canBeReplaced()) {
continue;
}
BlockState lowerState = wildCorn.defaultBlockState()
.setValue(CornCropBlock.AGE, 3)
.setValue(CornCropBlock.HALF, DoubleBlockHalf.LOWER);
BlockState upperState = wildCorn.defaultBlockState()
.setValue(CornCropBlock.AGE, 3)
.setValue(CornCropBlock.HALF, DoubleBlockHalf.UPPER);
level.setBlock(lowerPos, lowerState, 2);
level.setBlock(upperPos, upperState, 2);
placed++;
}
return placed > 0;
}
}
@@ -0,0 +1,52 @@
package com.craisinlord.antarchy.neoforge.worldgen;
import com.craisinlord.antarchy.content.AntarchyTags;
import com.mojang.serialization.Codec;
import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.WorldGenLevel;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.Heightmap;
import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
public final class LumenLilyPadFeature extends Feature<NoneFeatureConfiguration> {
public LumenLilyPadFeature(Codec<NoneFeatureConfiguration> codec) {
super(codec);
}
@Override
public boolean place(FeaturePlaceContext<NoneFeatureConfiguration> context) {
WorldGenLevel level = context.level();
RandomSource random = context.random();
BlockPos origin = context.origin();
boolean placedAny = false;
for (int i = 0; i < 24; i++) {
int x = origin.getX() + random.nextInt(17) - 8;
int z = origin.getZ() + random.nextInt(17) - 8;
int surfaceY = level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, x, z) - 1;
BlockPos fluidPos = new BlockPos(x, surfaceY, z);
if (!level.getFluidState(fluidPos).is(AntarchyTags.Fluids.LUMEN) || !level.getFluidState(fluidPos).isSource()) {
continue;
}
BlockPos padPos = fluidPos.above();
if (!level.isEmptyBlock(padPos)) {
continue;
}
BlockState lilyPad = Blocks.LILY_PAD.defaultBlockState();
if (!lilyPad.canSurvive(level, padPos)) {
continue;
}
level.setBlock(padPos, lilyPad, 2);
placedAny = true;
}
return placedAny;
}
}
@@ -44,4 +44,12 @@ displayURL="https://www.curseforge.com/minecraft/mc-mods/antarchy"
type="required"
versionRange="*"
ordering="AFTER"
side="BOTH"
side="BOTH"
[[dependencies.antarchy]]
modId="infinity"
type="incompatible"
versionRange="(,2.7.2)"
ordering="NONE"
side="BOTH"
reason="Infinite Dimensions versions below 2.7.2 are no longer supported"
@@ -11,7 +11,6 @@
"entity.ParalyzedMobFreezeMixin",
"infinity.ConfigGenInvocationMixin",
"infinity.PortalCreatorMixin",
"infinity.RandomSpringMixin",
"level.ClientLevelPartEntitiesAccessor",
"level.ServerLevelPartEntitiesAccessor"
],
@@ -0,0 +1,25 @@
{
"loader": "neoforge:separate_transforms",
"gui_light": "front",
"textures": {
"layer0": "antarchy:item/krakens_grasp/krakens_grasp_item"
},
"base": {
"parent": "antarchy:item/krakens_grasp_held"
},
"texture_size": [
64,
64
],
"perspectives": {
"gui": {
"parent": "antarchy:item/krakens_grasp_gui"
},
"ground": {
"parent": "antarchy:item/krakens_grasp_gui"
},
"fixed": {
"parent": "antarchy:item/krakens_grasp_gui"
}
}
}
@@ -0,0 +1,5 @@
{
"parent": "neoforge:item/bucket",
"loader": "neoforge:fluid_container",
"fluid": "antarchy:lumen"
}
@@ -0,0 +1,18 @@
{
"loader": "neoforge:separate_transforms",
"gui_light": "front",
"base": {
"parent": "antarchy:item/rpo_launcher_held_geo"
},
"perspectives": {
"gui": {
"parent": "antarchy:item/rpo_launcher_gui"
},
"ground": {
"parent": "antarchy:item/rpo_launcher_gui"
},
"fixed": {
"parent": "antarchy:item/rpo_launcher_gui"
}
}
}
@@ -0,0 +1,8 @@
{
"type": "neoforge:add_features",
"biomes": "#antarchy:wild_corn_spawn_biomes",
"features": [
"antarchy:corn_patch"
],
"step": "vegetal_decoration"
}
@@ -0,0 +1,6 @@
{
"type": "neoforge:add_features",
"biomes": "#antarchy:has_star_coral",
"features": ["antarchy:star_coral_patch"],
"step": "vegetal_decoration"
}